{"id":4427,"name":"pyzmq","ecosystem":"pip","repository_url":"https://github.com/zeromq/pyzmq","issues_count":548,"created_at":"2025-06-06T16:30:29.124Z","updated_at":"2025-06-06T16:30:29.124Z","purl":"pkg:pypi/pyzmq","metadata":{"id":2892934,"name":"pyzmq","ecosystem":"pypi","description":"Python bindings for 0MQ","homepage":"https://pyzmq.readthedocs.org","licenses":"BSD 3-Clause License\n         \n         Copyright (c) 2009-2012, Brian Granger, Min Ragan-Kelley\n         \n         All rights reserved.\n         \n         Redistribution and use in source and binary forms, with or without\n         modification, are permitted provided that the following conditions are met:\n         \n         1. Redistributions of source code must retain the above copyright notice, this\n            list of conditions and the following disclaimer.\n         \n         2. Redistributions in binary form must reproduce the above copyright notice,\n            this list of conditions and the following disclaimer in the documentation\n            and/or other materials provided with the distribution.\n         \n         3. Neither the name of the copyright holder nor the names of its\n            contributors may be used to endorse or promote products derived from\n            this software without specific prior written permission.\n         \n         THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n         AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n         IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n         DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n         FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n         DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n         SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n         CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n         OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n         OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n         ","normalized_licenses":["Other"],"repository_url":"https://github.com/zeromq/pyzmq","keywords_array":[],"namespace":null,"versions_count":102,"first_release_published_at":"2010-08-29T04:08:20.000Z","latest_release_published_at":"2025-04-04T12:03:07.000Z","latest_release_number":"26.4.0","last_synced_at":"2025-04-04T12:16:36.303Z","created_at":"2022-04-10T12:23:32.463Z","updated_at":"2025-04-04T12:16:36.686Z","registry_url":"https://pypi.org/project/pyzmq/","install_command":"pip install pyzmq --index-url https://pypi.org/simple","documentation_url":"https://pyzmq.readthedocs.org","metadata":{"funding":null,"documentation":"https://pyzmq.readthedocs.org","classifiers":["Development Status :: 5 - Production/Stable","Intended Audience :: Developers","Intended Audience :: Science/Research","Intended Audience :: System Administrators","License :: OSI Approved :: BSD License","Operating System :: MacOS :: MacOS X","Operating System :: Microsoft :: Windows","Operating System :: POSIX","Programming Language :: Python :: 3","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.10","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.8","Programming Language :: Python :: 3.9","Topic :: System :: Networking"],"normalized_name":"pyzmq"},"repo_metadata":{"id":984452,"uuid":"788264","full_name":"zeromq/pyzmq","owner":"zeromq","description":"PyZMQ:  Python bindings for zeromq","archived":false,"fork":false,"pushed_at":"2025-01-14T09:42:51.000Z","size":6807,"stargazers_count":3774,"open_issues_count":46,"forks_count":640,"subscribers_count":104,"default_branch":"main","last_synced_at":"2025-01-26T02:02:50.056Z","etag":null,"topics":["cython","python","zeromq"],"latest_commit_sha":null,"homepage":"http://zguide.zeromq.org/py:all","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/zeromq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2010-07-21T07:20:37.000Z","updated_at":"2025-01-24T20:36:29.000Z","dependencies_parsed_at":"2023-07-05T21:16:42.706Z","dependency_job_id":"a4046ba4-8d40-4a50-8fc6-cd682fabe35d","html_url":"https://github.com/zeromq/pyzmq","commit_stats":{"total_commits":2767,"total_committers":203,"mean_commits":"13.630541871921181","dds":0.2627394289844597,"last_synced_commit":"163acca57058ef0dafd3c6bde87c68083c1379f6"},"previous_names":[],"tags_count":100,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zeromq","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236345666,"owners_count":19134307,"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":"zeromq","name":"The ZeroMQ project","uuid":"109777","kind":"organization","description":"","email":null,"website":"http://www.zeromq.org/","location":null,"twitter":null,"company":null,"icon_url":"https://avatars.githubusercontent.com/u/109777?v=4","repositories_count":84,"last_synced_at":"2023-04-09T13:26:04.323Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/zeromq","funding_links":[],"total_stars":32449,"followers":null,"following":null,"created_at":"2022-11-02T16:26:27.805Z","updated_at":"2024-03-25T19:08:47.843Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zeromq","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zeromq/repositories"},"tags":[{"name":"v26.2.0","sha":"01ed5532a7710653a9925ec25d11cfe37185f672","kind":"tag","published_at":"2024-08-22T08:46:18.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.2.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.2.0/manifests"},{"name":"v26.1.1","sha":"d8faa053afd6c6ba402a5497d3c756c0df715ec9","kind":"tag","published_at":"2024-08-19T06:59:46.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.1.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.1.1/manifests"},{"name":"v26.1.0","sha":"a4abc3c52a306c92ed29537adc2b9f55e79177b6","kind":"tag","published_at":"2024-08-04T06:24:49.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.1.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.1.0/manifests"},{"name":"v26.0.3","sha":"5a456832acbb677532a9f634bfabb577face410a","kind":"tag","published_at":"2024-05-01T15:17:28.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.0.3","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.3/manifests"},{"name":"v26.0.2","sha":"5705f671e648a4e4dba01f9cb17ca04fc1fe36ed","kind":"tag","published_at":"2024-04-19T17:54:01.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.0.2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.2/manifests"},{"name":"v26.0.1","sha":"928f4cbda1b6f72c30058fefb662482ae8d10583","kind":"tag","published_at":"2024-04-19T09:13:05.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.0.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.1/manifests"},{"name":"v26.0.0","sha":"dd3a2537035927779c507a40d94ad5389da75d9c","kind":"tag","published_at":"2024-04-15T08:37:28.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0/manifests"},{"name":"v26.0.0b2","sha":"208184d6be01cbcef89dd032d503e74e57fdd523","kind":"tag","published_at":"2024-03-06T15:10:27.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.0.0b2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0b2/manifests"},{"name":"v26.0.0b1","sha":"88d9c711333aa7ca0904adfdc207590ca9855bd8","kind":"tag","published_at":"2024-02-27T14:24:46.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.0.0b1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0b1/manifests"},{"name":"v26.0.0a6","sha":"49da79bbf3d206f471a1f85a9d80f5404aa324d6","kind":"tag","published_at":"2024-02-23T13:31:46.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.0.0a6","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.0.0a6","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0a6","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0a6/manifests"},{"name":"v26.0.0a5","sha":"d3fac001877c0813843e57822ef7f07ef1f95c27","kind":"tag","published_at":"2024-02-21T16:26:12.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.0.0a5","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.0.0a5","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0a5","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0a5/manifests"},{"name":"v26.0.0a4","sha":"a2a8a274cdaf93e8c42cdaecac4c86638839f9a2","kind":"tag","published_at":"2024-02-19T13:00:34.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.0.0a4","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.0.0a4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0a4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0a4/manifests"},{"name":"v26.0.0a3","sha":"0a3a07318aed6b13301e05c1b12456ac6c2bb0c8","kind":"tag","published_at":"2024-02-19T11:28:05.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.0.0a3","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.0.0a3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0a3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0a3/manifests"},{"name":"v26.0.0a2","sha":"cbb2763d492eeca7d5971ff49ad61878c923b7b8","kind":"tag","published_at":"2024-02-17T00:26:21.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.0.0a2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.0.0a2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0a2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0a2/manifests"},{"name":"v26.0.0a1","sha":"a0f8550e58b305c1c7fbffded1ee6f2317a643aa","kind":"tag","published_at":"2024-02-17T00:00:34.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v26.0.0a1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v26.0.0a1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0a1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v26.0.0a1/manifests"},{"name":"v25.1.2","sha":"21f32cc9789415b7655eb62e5e5cb72ecc18cf04","kind":"tag","published_at":"2023-12-05T07:33:34.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v25.1.2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v25.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.1.2/manifests"},{"name":"v25.1.1","sha":"7777f2fa9461e0dd82c86d5c8303a1f5ff41cf53","kind":"tag","published_at":"2023-08-10T08:35:29.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v25.1.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v25.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.1.1/manifests"},{"name":"v25.1.1b2","sha":"8e902241557ffa1ed0270f6329bb8e52d9e66ee8","kind":"tag","published_at":"2023-07-12T04:58:41.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v25.1.1b2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v25.1.1b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.1.1b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.1.1b2/manifests"},{"name":"v25.1.1b1","sha":"d6f984e3268fe7f8d76a76eaaa6349adce61110e","kind":"tag","published_at":"2023-05-31T11:35:42.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v25.1.1b1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v25.1.1b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.1.1b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.1.1b1/manifests"},{"name":"v25.1.0","sha":"5728a227d08333d6c24f431b23d3b110a4c92322","kind":"tag","published_at":"2023-05-26T18:33:56.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v25.1.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v25.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.1.0/manifests"},{"name":"v25.0.2","sha":"1f1d6bd84db823067f2c24cd9f5bb563fdc4181d","kind":"tag","published_at":"2023-03-20T10:23:30.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v25.0.2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v25.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.0.2/manifests"},{"name":"v25.0.1","sha":"bd45c09279a3933a627ace96db25598a3f7f9f7a","kind":"tag","published_at":"2023-03-13T09:36:52.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v25.0.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v25.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.0.1/manifests"},{"name":"v25.0.0","sha":"8e4e5c80dc16ecaed06d9c95e4947bae478a6177","kind":"tag","published_at":"2023-01-12T12:08:02.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v25.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v25.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.0.0/manifests"},{"name":"v25.0.0b1","sha":"127a83530e7c5cb515c7f3412eead765839de4c1","kind":"tag","published_at":"2022-10-11T06:46:17.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v25.0.0b1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v25.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v25.0.0b1/manifests"},{"name":"v24.0.1","sha":"6ff49f843f1f4932422aa68f4cc286fbd7e9e203","kind":"tag","published_at":"2022-09-21T11:38:03.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v24.0.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v24.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v24.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v24.0.1/manifests"},{"name":"v24.0.0","sha":"2d3327d2e50c2510d45db2fc51488578a737b79b","kind":"tag","published_at":"2022-09-15T14:33:58.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v24.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v24.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v24.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v24.0.0/manifests"},{"name":"v23.2.1","sha":"015e616fbc50023e7c5c77db2ddd7bee2919c6c1","kind":"tag","published_at":"2022-08-12T08:59:50.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v23.2.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v23.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v23.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v23.2.1/manifests"},{"name":"v23.2.0","sha":"e0e42321fe41448646a6e88a724e06388f156a71","kind":"tag","published_at":"2022-06-20T10:10:25.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v23.2.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v23.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v23.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v23.2.0/manifests"},{"name":"v23.1.0","sha":"e7c621455221d71579f553df35323980d69e918c","kind":"tag","published_at":"2022-06-02T09:40:50.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v23.1.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v23.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v23.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v23.1.0/manifests"},{"name":"v23.0.0","sha":"50a4b9c8fd8e134ea9ffeec8bdd71133a787730b","kind":"tag","published_at":"2022-05-19T07:15:35.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v23.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v23.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v23.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v23.0.0/manifests"},{"name":"v23.0.0b2","sha":"ba07d76b689e62521ef34348c391913c183f7b9f","kind":"tag","published_at":"2022-05-09T12:37:16.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v23.0.0b2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v23.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v23.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v23.0.0b2/manifests"},{"name":"v23.0.0b1","sha":"be788616a437b7a6986c563026b3d5ec20bd186d","kind":"tag","published_at":"2022-03-07T14:08:45.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v23.0.0b1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v23.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v23.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v23.0.0b1/manifests"},{"name":"v22.3.0","sha":"46af3b5f5fdfdfe4e3ea2a432081845c3c054609","kind":"tag","published_at":"2021-09-16T07:27:00.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v22.3.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v22.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.3.0/manifests"},{"name":"v22.2.1","sha":"63ed17b92e704e9e5f6dc7688e129e689e5bf8e2","kind":"tag","published_at":"2021-08-05T08:25:54.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v22.2.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v22.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.2.1/manifests"},{"name":"v22.2.0","sha":"133c69249fa93377baf3251afc54c41b401ce04d","kind":"tag","published_at":"2021-08-04T13:16:37.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v22.2.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v22.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.2.0/manifests"},{"name":"v22.1.0","sha":"1fe7436c86f9d6285b9b4479992e5068deffc6fc","kind":"tag","published_at":"2021-05-26T11:57:59.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v22.1.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v22.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.1.0/manifests"},{"name":"v22.0.3","sha":"7a0fdc62e280f285db72c110bb1f37f550df796b","kind":"tag","published_at":"2021-02-12T12:04:37.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v22.0.3","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v22.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.0.3/manifests"},{"name":"v22.0.2","sha":"e260c25ca104c3c08627c332e8ce8de7780966c4","kind":"tag","published_at":"2021-01-29T12:30:10.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v22.0.2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v22.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.0.2/manifests"},{"name":"v22.0.1","sha":"4db7bc6d2eaa0ec5427490f1ce84be98cf2d001d","kind":"tag","published_at":"2021-01-29T08:56:48.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v22.0.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v22.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.0.1/manifests"},{"name":"v22.0.0","sha":"b5bf6440a81378585cb1893f226b7f28ac45448f","kind":"tag","published_at":"2021-01-28T11:35:55.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v22.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v22.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v22.0.0/manifests"},{"name":"v21.0.2","sha":"3c6b09d80ca09b1f7f0d6f03716fd7de2242910d","kind":"tag","published_at":"2021-01-26T07:23:54.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v21.0.2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v21.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v21.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v21.0.2/manifests"},{"name":"v21.0.1","sha":"9ff26aeeeb61033532c3774f4e0cb6e9b8a36d51","kind":"tag","published_at":"2021-01-15T14:35:23.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v21.0.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v21.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v21.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v21.0.1/manifests"},{"name":"v21.0.0","sha":"978d04c65998414a7b41fa6cef8fdbc0d9d2cbde","kind":"tag","published_at":"2021-01-14T09:45:44.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v21.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v21.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v21.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v21.0.0/manifests"},{"name":"v20.0.0","sha":"0a76031568afc4af41fe4a6fe0865560c79733c5","kind":"tag","published_at":"2020-11-13T09:35:20.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v20.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v20.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v20.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v20.0.0/manifests"},{"name":"v19.0.2","sha":"8fb0f0f6e8fb7b0a0cfaf8d32d22960f70d3d4fa","kind":"tag","published_at":"2020-07-31T09:29:09.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v19.0.2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v19.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v19.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v19.0.2/manifests"},{"name":"v19.0.1","sha":"9f4fd7344845b2ee5bfdb6d3496b592720ea8ad8","kind":"tag","published_at":"2020-05-07T12:04:57.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v19.0.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v19.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v19.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v19.0.1/manifests"},{"name":"v19.0.0","sha":"a8ed18df4851d0d58ea5adc22a95f8f71a3e45ac","kind":"tag","published_at":"2020-02-25T12:16:23.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v19.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v19.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v19.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v19.0.0/manifests"},{"name":"v18.1.1","sha":"0fb74272da93c3d7cb11cf29dcbff73bc15d9555","kind":"tag","published_at":"2019-11-14T08:13:03.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v18.1.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v18.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v18.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v18.1.1/manifests"},{"name":"v18.1.0","sha":"00366141341e4bce915ccd2d8721854cceffcf54","kind":"tag","published_at":"2019-08-08T12:43:50.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v18.1.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v18.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v18.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v18.1.0/manifests"},{"name":"v18.0.2","sha":"0e39492b2030e4b09c0109d4cb5388fd8802df11","kind":"tag","published_at":"2019-06-27T13:41:55.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v18.0.2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v18.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v18.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v18.0.2/manifests"},{"name":"v18.0.1","sha":"f5ef8917fdedd2b688c31142e6852f12a1cabe07","kind":"tag","published_at":"2019-03-05T10:35:34.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v18.0.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v18.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v18.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v18.0.1/manifests"},{"name":"v18.0.0","sha":"a047a08245af36fe35466951b118c23c9423b7ab","kind":"tag","published_at":"2019-02-19T12:38:53.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v18.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v18.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v18.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v18.0.0/manifests"},{"name":"v17.1.3","sha":"b99ff8d49a80b386ab66f233fe95f356862a0c2a","kind":"tag","published_at":"2019-02-19T08:28:53.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v17.1.3","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v17.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.1.3/manifests"},{"name":"v17.1.2","sha":"027c800ddf63135a6d706841edb3c2b44ac43a37","kind":"tag","published_at":"2018-08-10T13:35:40.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v17.1.2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v17.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.1.2/manifests"},{"name":"v17.1.1","sha":"6533e0e1d4706c274361b6cede316f64f52ffc9d","kind":"tag","published_at":"2018-08-10T12:58:48.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v17.1.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v17.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.1.1/manifests"},{"name":"v17.1.0","sha":"02fffe65467b7e53fef316ec818241abe8e11f02","kind":"tag","published_at":"2018-07-13T15:42:48.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v17.1.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v17.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.1.0/manifests"},{"name":"v17.0.0","sha":"b58cb3a2ee8baaab543729e398fc1cde25ff68c3","kind":"tag","published_at":"2018-02-10T13:02:40.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v17.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v17.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.0.0/manifests"},{"name":"v17.0.0b4","sha":"c800dba84b71aadd2503210b500b7effd3b8ef2e","kind":"tag","published_at":"2018-01-24T14:03:16.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v17.0.0b4","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v17.0.0b4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.0.0b4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.0.0b4/manifests"},{"name":"v16.0.4","sha":"ca786c7481a6d79fe0d9788649012bb64aa3c9b5","kind":"tag","published_at":"2018-01-24T12:23:26.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v16.0.4","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v16.0.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v16.0.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v16.0.4/manifests"},{"name":"v17.0.0b3","sha":"c8c8e3ba485f0a8362087a50af3f4982af3d871e","kind":"tag","published_at":"2017-11-10T16:11:47.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v17.0.0b3","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v17.0.0b3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.0.0b3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.0.0b3/manifests"},{"name":"v17.0.0b2","sha":"df7b3646503db57c5ac8ae5388f6c9386da5eb9d","kind":"tag","published_at":"2017-11-03T11:57:05.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v17.0.0b2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v17.0.0b2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.0.0b2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.0.0b2/manifests"},{"name":"v16.0.3","sha":"4296dadfe964e573fae48ed799e8fb5c913f224d","kind":"tag","published_at":"2017-10-30T10:25:32.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v16.0.3","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v16.0.3","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v16.0.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v16.0.3/manifests"},{"name":"v17.0.0b1","sha":"6bb08e7b8a42673097e79c946986e25eb84935db","kind":"tag","published_at":"2017-08-16T13:47:32.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v17.0.0b1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v17.0.0b1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.0.0b1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v17.0.0b1/manifests"},{"name":"v16.0.2","sha":"3cc5bfb1ff43fc968558d608934fac1034bf5941","kind":"tag","published_at":"2016-11-22T12:41:04.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v16.0.2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v16.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v16.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v16.0.2/manifests"},{"name":"v16.0.1","sha":"4ccc987feaca87217844a61ad29107c065cbfe4b","kind":"tag","published_at":"2016-11-10T22:12:36.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v16.0.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v16.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v16.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v16.0.1/manifests"},{"name":"v16.0.0","sha":"1d0ba243317657f482a802b530ac33b8da4fd189","kind":"tag","published_at":"2016-10-10T14:13:08.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v16.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v16.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v16.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v16.0.0/manifests"},{"name":"v15.4.0","sha":"0aa3567f3fc25cf36d858a71ad04564df6b0740a","kind":"tag","published_at":"2016-08-08T13:52:57.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v15.4.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v15.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v15.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v15.4.0/manifests"},{"name":"v15.3.0","sha":"eb120f4b49f47d6843e93f733a4c1c82257d7ecf","kind":"tag","published_at":"2016-07-05T13:59:07.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v15.3.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v15.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v15.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v15.3.0/manifests"},{"name":"v15.2.0","sha":"66c927729902a698c516569b4d21af031e0975d5","kind":"tag","published_at":"2016-01-12T14:31:21.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v15.2.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v15.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v15.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v15.2.0/manifests"},{"name":"v15.1.0","sha":"5e3306bc47e91c21c510ee5df384cc6380ac13bb","kind":"tag","published_at":"2015-11-25T09:46:58.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v15.1.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v15.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v15.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v15.1.0/manifests"},{"name":"v15.0.0","sha":"9eb7ce485dbd00930cd8ae337ada5c01f4b5e23f","kind":"tag","published_at":"2015-11-04T14:20:44.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v15.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v15.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v15.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v15.0.0/manifests"},{"name":"v14.7.0","sha":"97855d643d91b056c947b73788a848177942cf4e","kind":"tag","published_at":"2015-06-18T17:46:30.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v14.7.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v14.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.7.0/manifests"},{"name":"v14.6.0","sha":"6d0f9b86cb7b5e8ec2baaa8fbaae87482147ae1f","kind":"tag","published_at":"2015-04-23T21:49:03.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v14.6.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v14.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.6.0/manifests"},{"name":"v14.5.0","sha":"d22cf938ac1bee81826a80ff3614c6d6d767c7c3","kind":"tag","published_at":"2015-01-19T23:08:01.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v14.5.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v14.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.5.0/manifests"},{"name":"v14.4.1","sha":"7b75ad0dbdedcc1f964722fdc5a4d117cf738636","kind":"tag","published_at":"2014-10-31T18:10:35.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v14.4.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v14.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.4.1/manifests"},{"name":"v14.4.0","sha":"1a6723aa3e6f3ea28c45a876428d1b539ff856a3","kind":"tag","published_at":"2014-10-17T21:28:37.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v14.4.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v14.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.4.0/manifests"},{"name":"v14.3.1","sha":"31b206adcde0cdec9e17891f22caa453abc4dff8","kind":"tag","published_at":"2014-06-11T17:53:15.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v14.3.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v14.3.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.3.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.3.1/manifests"},{"name":"v14.3.0","sha":"d8a66f2ceec86fdc7f586d2cf4df50e565fe5fd4","kind":"tag","published_at":"2014-05-07T18:26:28.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v14.3.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v14.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.3.0/manifests"},{"name":"v14.2.0","sha":"6ef315cdabb77a57269fc485ced2d483fc4be8ea","kind":"tag","published_at":"2014-04-21T18:32:01.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v14.2.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v14.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.2.0/manifests"},{"name":"v14.1.1","sha":"d2cdd44405cfb998f842946d5eb587725da24014","kind":"tag","published_at":"2014-03-18T21:30:14.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v14.1.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v14.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.1.1/manifests"},{"name":"v14.1.0","sha":"2b797879f3a4bf148575df1309369ed4532e4ab6","kind":"tag","published_at":"2014-03-12T04:02:12.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v14.1.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v14.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.1.0/manifests"},{"name":"v14.0.1","sha":"28b5bef764cbe87518b589df54f6f7f5ed50964d","kind":"tag","published_at":"2013-11-25T21:57:10.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v14.0.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v14.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.0.1/manifests"},{"name":"v14.0.0","sha":"8d2a09b46d8dd8301acdb52c712ce1900a05461a","kind":"tag","published_at":"2013-10-28T23:13:43.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v14.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v14.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v14.0.0/manifests"},{"name":"v13.1.0","sha":"5724ce61ac4f91d9b6c23e06dbfb756bc94eb90b","kind":"tag","published_at":"2013-05-01T01:17:49.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v13.1.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v13.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v13.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v13.1.0/manifests"},{"name":"v13.0.2","sha":"8694ab1a9ab491c504f26d6566065367f59a27ac","kind":"tag","published_at":"2013-03-28T02:35:25.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v13.0.2","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v13.0.2","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v13.0.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v13.0.2/manifests"},{"name":"v13.0.1","sha":"c98b620f88d79c06e21a8d09e40e4bbb902a2d3c","kind":"tag","published_at":"2013-03-27T22:11:29.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v13.0.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v13.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v13.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v13.0.1/manifests"},{"name":"v13.0.0","sha":"c371aa86080ac22a6ddd68ad34b03a7844995c0d","kind":"tag","published_at":"2013-02-21T23:14:04.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v13.0.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v13.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v13.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v13.0.0/manifests"},{"name":"v2.2.0.1","sha":"be0f222a9bd6995d962147ddd633df46abacc329","kind":"tag","published_at":"2012-08-20T00:28:17.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.2.0.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.2.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.2.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.2.0.1/manifests"},{"name":"v2.2.0","sha":"e3116a0b42c8d4e7a801f16639ab3a470ec0d712","kind":"tag","published_at":"2012-04-25T22:39:44.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.2.0","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.2.0/manifests"},{"name":"v2.1.11","sha":"c62c4bfa78130c3a963ff073768924ba507677c6","kind":"tag","published_at":"2011-12-19T09:51:13.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.1.11","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.1.11","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.11","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.11/manifests"},{"name":"v2.1.10","sha":"503b9e7af25d10f63a20e310f6b4f2da223633d9","kind":"tag","published_at":"2011-10-13T23:59:34.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.1.10","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.1.10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.10/manifests"},{"name":"v2.1.9","sha":"12920eb80afba590df36b516270ad1e66b8dcb79","kind":"tag","published_at":"2011-08-29T22:54:21.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.1.9","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.1.9","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.9","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.9/manifests"},{"name":"v2.1.7.1","sha":"7d653b18d4a42752cd92629c3904e342d8ead6de","kind":"tag","published_at":"2011-05-23T23:21:53.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.1.7.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.1.7.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.7.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.7.1/manifests"},{"name":"v2.1.7","sha":"165bf9fa9b31b24e3e37daee2d139dd71a3ea2e9","kind":"tag","published_at":"2011-05-13T22:54:02.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.1.7","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.1.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.7/manifests"},{"name":"v2.1.4","sha":"9583822ce881bb44bb74f293c66be1c0fb3b86f7","kind":"tag","published_at":"2011-04-05T19:25:35.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.1.4","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.1.4","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.4","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.4/manifests"},{"name":"v2.1.1","sha":"887285614a7db0725c5b660d698e537aea207440","kind":"tag","published_at":"2011-03-03T18:10:00.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.1.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.1.1/manifests"},{"name":"v2.0.10.1","sha":"68222ef9d26a0174f05c8844031705fb56e2d40f","kind":"tag","published_at":"2011-01-30T20:01:40.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.0.10.1","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.0.10.1","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.0.10.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.0.10.1/manifests"},{"name":"v2.0.10","sha":"f73cb51ce0c3fbe39f85c35e4be10aa2abb770f3","kind":"tag","published_at":"2010-11-17T00:56:17.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.0.10","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.0.10","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.0.10","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.0.10/manifests"},{"name":"v2.0.8","sha":"b758716f43700ca9d445949575308949f993dbdd","kind":"tag","published_at":"2010-09-23T17:33:50.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.0.8","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.0.8","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.0.8","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.0.8/manifests"},{"name":"v2.0.7","sha":"98c6b27ee46601bdad8e09113b7a053810f55cc7","kind":"tag","published_at":"2010-09-23T17:32:45.000Z","download_url":"https://codeload.github.com/zeromq/pyzmq/tar.gz/v2.0.7","html_url":"https://github.com/zeromq/pyzmq/releases/tag/v2.0.7","dependencies_parsed_at":null,"dependency_job_id":null,"tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.0.7","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zeromq%2Fpyzmq/tags/v2.0.7/manifests"}]},"repo_metadata_updated_at":"2025-03-12T08:42:43.331Z","dependent_packages_count":612,"downloads":44392926,"downloads_period":"last-month","dependent_repos_count":78978,"rankings":{"downloads":0.038700897090462885,"dependent_repos_count":0.015957241928295125,"dependent_packages_count":0.03961797995990514,"stargazers_count":1.8020678384540183,"forks_count":2.4399906824380464,"docker_downloads_count":0.2661374487121405,"average":0.7670786814304781},"purl":"pkg:pypi/pyzmq","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/pypi/pyzmq","docker_dependents_count":6303,"docker_downloads_count":689348248,"usage_url":"https://repos.ecosyste.ms/usage/pypi/pyzmq","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/pypi/pyzmq/dependencies","status":null,"funding_links":[],"critical":true,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyzmq/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyzmq/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyzmq/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages/pyzmq/related_packages","maintainers":[{"uuid":"bgranger","login":"bgranger","name":null,"email":null,"url":null,"packages_count":31,"html_url":"https://pypi.org/user/bgranger/","role":null,"created_at":"2023-01-30T17:56:23.637Z","updated_at":"2023-01-30T17:56:23.637Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/bgranger/packages"},{"uuid":"minrk","login":"minrk","name":null,"email":null,"url":null,"packages_count":98,"html_url":"https://pypi.org/user/minrk/","role":null,"created_at":"2023-01-30T17:56:23.716Z","updated_at":"2023-01-30T17:56:23.716Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers/minrk/packages"}],"registry":{"name":"pypi.org","url":"https://pypi.org","ecosystem":"pypi","default":true,"packages_count":690057,"maintainers_count":292646,"namespaces_count":0,"keywords_count":228482,"github":"pypi","metadata":{"funded_packages_count":48953},"icon_url":"https://github.com/pypi.png","created_at":"2022-04-04T15:19:23.364Z","updated_at":"2025-06-05T05:19:27.498Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/pypi.org/namespaces"}},"unique_repositories_count":110,"unique_repositories_count_past_30_days":1,"recent_issues":[{"uuid":"4373093072","node_id":"PR_kwDOSL8lfs7X1NiS","number":13,"state":"open","title":"deps: update pyzmq requirement from \u003c=26.4.0 to \u003c=27.1.0 in /requirements/py311","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-03T21:55:28.000Z","updated_at":"2026-05-03T21:55:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: update","packages":[{"name":"pyzmq","old_version":"\u003c=26.4.0","new_version":"\u003c=27.1.0","repository_url":"https://github.com/zeromq/pyzmq"}],"path":"/requirements/py311","ecosystem":"pip"},"body":"Updates the requirements on [pyzmq](https://github.com/zeromq/pyzmq) 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/zeromq/pyzmq/releases\"\u003epyzmq's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev27.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.1.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/425a21fd2ae3bc50d81176ff9a8253af3535a3d4\"\u003e\u003ccode\u003e425a21f\u003c/code\u003e\u003c/a\u003e Bump to 27.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/c6bf62145e912a95c0dfccff4609d1e52b464ceb\"\u003e\u003ccode\u003ec6bf621\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2127\"\u003e#2127\u003c/a\u003e from minrk/271\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/3558cceb69d9d5ca1ac14e2dc300060232371e86\"\u003e\u003ccode\u003e3558cce\u003c/code\u003e\u003c/a\u003e release 27.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/17b9ce8d4e7bbe4f35271a303a73498cff46d9fa\"\u003e\u003ccode\u003e17b9ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2126\"\u003e#2126\u003c/a\u003e from minrk/compile-time-drafts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/83040f7467f268c1cddfd26efac7790bdd7d64e0\"\u003e\u003ccode\u003e83040f7\u003c/code\u003e\u003c/a\u003e restore zmq.DRAFT_API meaning drafts are actually available\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/e21dcd8e0bfa8194230b588864b03cbbb839ea10\"\u003e\u003ccode\u003ee21dcd8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2124\"\u003e#2124\u003c/a\u003e from zeromq/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/26233552a6c6557f2749265d3909a466ac57c3c3\"\u003e\u003ccode\u003e2623355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/684b2e5cb40b764ca45875a0c0b3af6d4662d46c\"\u003e\u003ccode\u003e684b2e5\u003c/code\u003e\u003c/a\u003e Bump to 27.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/912e61982a3413d9b7cdc1786fac3b5d5fa64620\"\u003e\u003ccode\u003e912e619\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2122\"\u003e#2122\u003c/a\u003e from minrk/devmode-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/69f8d905855421fb69e1783c71a4c1502c299bd8\"\u003e\u003ccode\u003e69f8d90\u003c/code\u003e\u003c/a\u003e changelog for 27.0.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/zeromq/pyzmq/compare/v2.0.7...v27.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/JonSmithTLT/security-platform-toolchain/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonSmithTLT%2Fsecurity-platform-toolchain/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"},{"uuid":"4001313278","node_id":"PR_kwDOORHyMc7G1wzP","number":18,"state":"open","title":"deps: bump pyzmq from 26.4.0 to 27.1.0","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-27T14:32:09.000Z","updated_at":"2026-02-27T15:12:57.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps","packages":[{"name":"pyzmq","old_version":"26.4.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyzmq](https://github.com/zeromq/pyzmq) from 26.4.0 to 27.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zeromq/pyzmq/releases\"\u003epyzmq's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev27.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.1.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.2'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.1'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/425a21fd2ae3bc50d81176ff9a8253af3535a3d4\"\u003e\u003ccode\u003e425a21f\u003c/code\u003e\u003c/a\u003e Bump to 27.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/c6bf62145e912a95c0dfccff4609d1e52b464ceb\"\u003e\u003ccode\u003ec6bf621\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2127\"\u003e#2127\u003c/a\u003e from minrk/271\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/3558cceb69d9d5ca1ac14e2dc300060232371e86\"\u003e\u003ccode\u003e3558cce\u003c/code\u003e\u003c/a\u003e release 27.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/17b9ce8d4e7bbe4f35271a303a73498cff46d9fa\"\u003e\u003ccode\u003e17b9ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2126\"\u003e#2126\u003c/a\u003e from minrk/compile-time-drafts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/83040f7467f268c1cddfd26efac7790bdd7d64e0\"\u003e\u003ccode\u003e83040f7\u003c/code\u003e\u003c/a\u003e restore zmq.DRAFT_API meaning drafts are actually available\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/e21dcd8e0bfa8194230b588864b03cbbb839ea10\"\u003e\u003ccode\u003ee21dcd8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2124\"\u003e#2124\u003c/a\u003e from zeromq/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/26233552a6c6557f2749265d3909a466ac57c3c3\"\u003e\u003ccode\u003e2623355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/684b2e5cb40b764ca45875a0c0b3af6d4662d46c\"\u003e\u003ccode\u003e684b2e5\u003c/code\u003e\u003c/a\u003e Bump to 27.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/912e61982a3413d9b7cdc1786fac3b5d5fa64620\"\u003e\u003ccode\u003e912e619\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2122\"\u003e#2122\u003c/a\u003e from minrk/devmode-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/69f8d905855421fb69e1783c71a4c1502c299bd8\"\u003e\u003ccode\u003e69f8d90\u003c/code\u003e\u003c/a\u003e changelog for 27.0.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/zeromq/pyzmq/compare/v26.4.0...v27.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pyzmq\u0026package-manager=pip\u0026previous-version=26.4.0\u0026new-version=27.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/DanielMarchukov/rich-on-paper/pull/18","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanielMarchukov%2Frich-on-paper/issues/18","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/18/packages"},{"uuid":"3855782246","node_id":"PR_kwDOOIrH7c6_W0W4","number":217,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 50 updates","user":"dependabot[bot]","labels":["dependencies","python","Stale"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-02-20T04:57:02.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-26T12:31:41.000Z","updated_at":"2026-02-20T04:57:11.000Z","time_to_close":2132721,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":50,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.50b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.29.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.2.1","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.4","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.1.5","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"opentelemetry-instrumentation-grpc","old_version":"0.50b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"langchain","old_version":"0.2.17","new_version":"1.2.7","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.7","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.68.0","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.3.1","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"locust","old_version":"2.33.0","new_version":"2.43.1","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.5.3","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.4","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"roundrobin","old_version":"0.0.4","new_version":"0.1.0","repository_url":"https://github.com/linnik/roundrobin"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.2","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 50 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.2.1` |\n| [opentelemetry-instrumentation-grpc](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b1` |\n| [langchain](https://github.com/langchain-ai/langchain) | `0.2.17` | `1.2.7` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.2` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.7` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.68.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.3.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.43.1` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.4` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [roundrobin](https://github.com/linnik/roundrobin) | `0.0.4` | `0.1.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.2` |\n\nBumps the pip-production-dependencies group with 44 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.2.1` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.2` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.7` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.68.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.3.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.43.1` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.4` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [roundrobin](https://github.com/linnik/roundrobin) | `0.0.4` | `0.1.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.2` |\n\nBumps the pip-production-dependencies group with 12 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.2.1` |\n| [opentelemetry-instrumentation-grpc](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b1` |\n| [langchain](https://github.com/langchain-ai/langchain) | `0.2.17` | `1.2.7` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.50b0 to 0.60b1\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\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\u003ch2\u003eUnreleased\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Add exemplars for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3739\"\u003e#3739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-wsgi\u003c/code\u003e: Add exemplars for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3739\"\u003e#3739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-client\u003c/code\u003e: add ability to capture custom headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3988\"\u003e#3988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-requests\u003c/code\u003e: add ability to capture custom headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-client\u003c/code\u003e: add typechecking for aiohttp-client instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4006\"\u003e#4006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Add support for 3.1+ streaming responses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3938\"\u003e#3938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e: Support passing \u003ccode\u003eTracerProvider\u003c/code\u003e when instrumenting.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3819\"\u003e#3819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for the \u003ccode\u003eOTEL_PYTHON_SYSTEM_METRICS_EXCLUDED_METRICS\u003c/code\u003e environment variable\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3959\"\u003e#3959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-httpx\u003c/code\u003e: add ability to capture custom headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4047\"\u003e#4047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-urllib3\u003c/code\u003e: add ability to capture custom headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4050\"\u003e#4050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-urllib\u003c/code\u003e: add ability to capture custom headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4051\"\u003e#4051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-confluent-kafka\u003c/code\u003e: Increase confluent-kafka upper bound to support newer versions (2.13.0)\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4099\"\u003e#4099\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e Implement new semantic convention opt-in migration\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-falcon\u003c/code\u003e: pass request attributes at span creation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4119\"\u003e#4119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: add database stability attribute setters in \u003ccode\u003e_semconv\u003c/code\u003e utilities\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4108\"\u003e#4108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Implement new semantic convention opt-in migration\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3993\"\u003e#3993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: pass request attributes at span creation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4140\"\u003e#4140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-pyramid\u003c/code\u003e Implement new semantic convention opt-in migration\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\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.29.0 to 1.39.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.39.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.39.1/0.60b1 (2025-12-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSilence events API warnings for internal users\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4847\"\u003e#4847\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Convert objects of any type other than AnyValue in attributes to string to be exportable\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4808\"\u003e#4808\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edocs: Added sqlcommenter example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4734\"\u003e#4734\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebuild: bump ruff to 0.14.1\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4782\"\u003e#4782\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e as an optional dependency to \u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e\nand \u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4760\"\u003e#4760\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esemantic-conventions: Bump to 1.38.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4791\"\u003e#4791\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Remove LogData and extend SDK LogRecord to have instrumentation scope\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4676\"\u003e#4676\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Rename several classes from Log to LogRecord\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4647\"\u003e#4647\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration Guide:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eLogData\u003c/code\u003e has been removed. Users should update their code as follows:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Exporters:\u003c/strong\u003e Change from \u003ccode\u003eSequence[LogData]\u003c/code\u003e to \u003ccode\u003eSequence[ReadableLogRecord]\u003c/code\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef export(self, batch: Sequence[LogData]) -\u0026gt; LogRecordExportResult:\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadableLogRecord\ndef export(self, batch: Sequence[ReadableLogRecord]) -\u0026gt; LogRecordExportResult:\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Processors:\u003c/strong\u003e Use \u003ccode\u003eReadWriteLogRecord\u003c/code\u003e for processing, \u003ccode\u003eReadableLogRecord\u003c/code\u003e for exporting\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef on_emit(self, log_data: LogData):\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadWriteLogRecord, ReadableLogRecord\ndef on_emit(self, log_record: ReadWriteLogRecord):\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b4c13279187941b561de5d62e6483a91759ba123\"\u003e\u003ccode\u003eb4c1327\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.1/0.60b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4851\"\u003e#4851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/2fdd6587582febe0978d4b841c0f9ec92596d89b\"\u003e\u003ccode\u003e2fdd658\u003c/code\u003e\u003c/a\u003e Silence events warnings for internal users (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4850\"\u003e#4850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/dc0a9b340446b985cdebb6f45d70eab3e042c92a\"\u003e\u003ccode\u003edc0a9b3\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.0/0.60b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4833\"\u003e#4833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/cd150c3a201df6ff55c5a9b40ee877717d973a82\"\u003e\u003ccode\u003ecd150c3\u003c/code\u003e\u003c/a\u003e Fix changelog before the release (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4831\"\u003e#4831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/382fa46621953a80a6659bc4fb0a8266c4c982fc\"\u003e\u003ccode\u003e382fa46\u003c/code\u003e\u003c/a\u003e Mark events API/SDK as deprecated (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5307dd0a6cabea2877a67e067cf81be5285d586b\"\u003e\u003ccode\u003e5307dd0\u003c/code\u003e\u003c/a\u003e Fix errors on serialization of values that are not AnyValue in LogRecord attr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/8615ba0a0bc675d6ccad6693c637f009fec727eb\"\u003e\u003ccode\u003e8615ba0\u003c/code\u003e\u003c/a\u003e Fix type checking for built in metric exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4820\"\u003e#4820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/62da90eda4b1348730180ce2fa0aeae72e09c7ed\"\u003e\u003ccode\u003e62da90e\u003c/code\u003e\u003c/a\u003e Add lmolkova to approvers (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4812\"\u003e#4812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/61bda605d71498b15a13a106ed7564eaea9f642b\"\u003e\u003ccode\u003e61bda60\u003c/code\u003e\u003c/a\u003e Fix meeting and typos (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4817\"\u003e#4817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/546e47b0001b40ca777515325953106e81ed8dbd\"\u003e\u003ccode\u003e546e47b\u003c/code\u003e\u003c/a\u003e [logs-api/sdk] Rename several classes from Log to LogRecord (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4647\"\u003e#4647\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.29.0...v1.39.1\"\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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.2.1 to 4.0.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.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).\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\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/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\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v3.3.0\"\u003e3.3.0\u003c/a\u003e - 2025-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eexc_info_as_array\u003c/code\u003e and \u003ccode\u003estack_info_as_array\u003c/code\u003e options are added to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e allowing both to be encoded as list of lines instead of a single multi-line string. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/35\"\u003e#35\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003emsgspec-python313-pre\u003c/code\u003e from \u003ccode\u003edev\u003c/code\u003e dependencies preventing potential RCE. Details: \u003ca href=\"https://github.com/nhairs/python-json-logger/security/advisories/GHSA-wmxh-pxcx-9w24#advisory-comment-121307\"\u003eGHSA-wmxh-pxcx-9w24\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/1hakusai1\"\u003e\u003ccode\u003e@​1hakusai1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/omnigodz\"\u003e\u003ccode\u003e@​omnigodz\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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.4\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.3...v0.8.4\"\u003e0.8.4\u003c/a\u003e (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e63db4d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v5 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/539\"\u003e#539\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6aa54ba42b08a27083551dc831f1177e03524174\"\u003e6aa54ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e8fdd784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update amannn/action-semantic-pull-request action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/541\"\u003e#541\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/eea929d62ee470f56629461aec5f8d9f717bcea4\"\u003eeea929d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003ea9ee73a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to d0cc045 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/543\"\u003e#543\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/22210e69652384c0569117d50039045176d34d2a\"\u003e22210e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e0d8369f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003ed03223e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 64d10c1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/95b5ea04a22740a4733a68c16b2a6340adabb12d\"\u003e95b5ea0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e4d0779c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003ed537e5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e2138367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e63acac1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.3...v0.8.4\"\u003e0.8.4\u003c/a\u003e (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e63db4d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v5 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/539\"\u003e#539\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6aa54ba42b08a27083551dc831f1177e03524174\"\u003e6aa54ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e8fdd784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update amannn/action-semantic-pull-request action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/541\"\u003e#541\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/eea929d62ee470f56629461aec5f8d9f717bcea4\"\u003eeea929d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003ea9ee73a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to d0cc045 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/543\"\u003e#543\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/22210e69652384c0569117d50039045176d34d2a\"\u003e22210e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e0d8369f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003ed03223e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 64d10c1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/95b5ea04a22740a4733a68c16b2a6340adabb12d\"\u003e95b5ea0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e4d0779c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003ed537e5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e2138367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e63acac1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\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/open-feature/python-sdk/commit/418f3be69cdadd9617721c01eb91d4bce94d0399\"\u003e\u003ccode\u003e418f3be\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e\u003ccode\u003e63db4d7\u003c/code\u003e\u003c/a\u003e fix: mimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e\u003ccode\u003e8fdd784\u003c/code\u003e\u003c/a\u003e chore(deps): update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003e\u003ccode\u003ed537e5e\u003c/code\u003e\u003c/a\u003e chore: remove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e\u003ccode\u003e2138367\u003c/code\u003e\u003c/a\u003e chore: update license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e\u003ccode\u003e4d0779c\u003c/code\u003e\u003c/a\u003e chore: make the license field PEP639 compatible (\u003ca href=\"https://red...\n\n_Description has been truncated_","html_url":"https://github.com/aliyun-sls/opentelemetry_demo/pull/217","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliyun-sls%2Fopentelemetry_demo/issues/217","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/217/packages"},{"uuid":"3808738137","node_id":"PR_kwDOLufxkc687LO4","number":134,"state":"open","title":"deps: bump the ipykernel-updates group with 4 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-13T12:55:57.000Z","updated_at":"2026-01-17T16:46:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: bump","group_name":"ipykernel-updates","update_count":4,"packages":[{"name":"ipykernel","old_version":"6.29.5","new_version":"7.1.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"psutil","old_version":"6.1.1","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pyzmq","old_version":"26.2.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"tornado","old_version":"6.4.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"}],"path":null,"ecosystem":"pip"},"body":"Bumps the ipykernel-updates group with 4 updates: [ipykernel](https://github.com/ipython/ipykernel), [psutil](https://github.com/giampaolo/psutil), [pyzmq](https://github.com/zeromq/pyzmq) and [tornado](https://github.com/tornadoweb/tornado).\n\nUpdates `ipykernel` from 6.29.5 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ipython/ipykernel/releases\"\u003eipykernel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.1.0\u003c/h2\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using \u003ccode\u003e%notebook\u003c/code\u003e magic to save sessions as \u003ccode\u003e.ipynb\u003c/code\u003e files (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1435\"\u003e#1435\u003c/a\u003e). This is enabled using the traitlet \u003ccode\u003eZMQDisplayPublisher.store_display_history\u003c/code\u003e which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.\u003c/p\u003e\n\u003cp\u003eOutput from threads is restored to the pre-6.29 behavior by default (route to latest cell, unless \u003ccode\u003eget_ipython().set_parent()\u003c/code\u003e is called explicitly from the thread. If it is called, output from that thread will continue to be routed to the same cell). This behavior is now opt-in, instead of unconditional (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1451\"\u003e#1451\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eThis release also fixes bugs that were introduced into the 7.x branch relating to Matplotlib plots in separate windows not being displayed correctly (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1458\"\u003e#1458\u003c/a\u003e), kernels launched in new threads failing asserts (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1455\"\u003e#1455\u003c/a\u003e), and \u003ccode\u003eContextVar\u003c/code\u003es persisting between cells (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1462\"\u003e#1462\u003c/a\u003e). There is also a fix for keyboard interrupts on Windows (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1434\"\u003e#1434\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.1...6f61a6835c217e42c406ee01b359e2fa235baf43\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStore display outputs in history for \u003ccode\u003e%notebook\u003c/code\u003e magic \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1435\"\u003e#1435\u003c/a\u003e (\u003ca href=\"https://github.com/Darshan808\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix ContextVar persistence across cells \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1462\"\u003e#1462\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix matplotlib eventloops \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1458\"\u003e#1458\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefer to kernel launching thread instead of assuming the main thread \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1455\"\u003e#1455\u003c/a\u003e (\u003ca href=\"https://github.com/dfalbel\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix routing of background thread output when no parent is set explicitly \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1451\"\u003e#1451\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KeyboardInterrupt on Windows by manually resetting interrupt event \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1434\"\u003e#1434\u003c/a\u003e (\u003ca href=\"https://github.com/ptosco\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate pre-commit and related \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1465\"\u003e#1465\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest that matplotlib event loop integration is responsive \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1463\"\u003e#1463\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate tests for 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1453\"\u003e#1453\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/graphs/contributors?from=2025-10-14\u0026amp;to=2025-10-27\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ACarreau+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adfalbel+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​lumberbot-app\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aptosco+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.0.1\u003c/h2\u003e\n\u003ch2\u003e7.0.1\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.0.1 is a bug fix release to support CPython 3.14.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.0...6d9a14a21a8e328e384ebac48e4ccbaad85b1d45\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid overriding Thread._context in Python 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1447\"\u003e#1447\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ipython/ipykernel/blob/main/CHANGELOG.md\"\u003eipykernel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using \u003ccode\u003e%notebook\u003c/code\u003e magic to save sessions as \u003ccode\u003e.ipynb\u003c/code\u003e files (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1435\"\u003e#1435\u003c/a\u003e). This is enabled using the traitlet \u003ccode\u003eZMQDisplayPublisher.store_display_history\u003c/code\u003e which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.\u003c/p\u003e\n\u003cp\u003eOutput from threads is restored to the pre-6.29 behavior by default (route to latest cell, unless \u003ccode\u003eget_ipython().set_parent()\u003c/code\u003e is called explicitly from the thread. If it is called, output from that thread will continue to be routed to the same cell). This behavior is now opt-in, instead of unconditional (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1451\"\u003e#1451\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eThis release also fixes bugs that were introduced into the 7.x branch relating to Matplotlib plots in separate windows not being displayed correctly (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1458\"\u003e#1458\u003c/a\u003e), kernels launched in new threads failing asserts (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1455\"\u003e#1455\u003c/a\u003e), and \u003ccode\u003eContextVar\u003c/code\u003es persisting between cells (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1462\"\u003e#1462\u003c/a\u003e). There is also a fix for keyboard interrupts on Windows (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1434\"\u003e#1434\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.1...6f61a6835c217e42c406ee01b359e2fa235baf43\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStore display outputs in history for \u003ccode\u003e%notebook\u003c/code\u003e magic \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1435\"\u003e#1435\u003c/a\u003e (\u003ca href=\"https://github.com/Darshan808\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix ContextVar persistence across cells \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1462\"\u003e#1462\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix matplotlib eventloops \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1458\"\u003e#1458\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefer to kernel launching thread instead of assuming the main thread \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1455\"\u003e#1455\u003c/a\u003e (\u003ca href=\"https://github.com/dfalbel\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix routing of background thread output when no parent is set explicitly \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1451\"\u003e#1451\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KeyboardInterrupt on Windows by manually resetting interrupt event \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1434\"\u003e#1434\u003c/a\u003e (\u003ca href=\"https://github.com/ptosco\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate pre-commit and related \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1465\"\u003e#1465\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest that matplotlib event loop integration is responsive \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1463\"\u003e#1463\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate tests for 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1453\"\u003e#1453\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/graphs/contributors?from=2025-10-14\u0026amp;to=2025-10-27\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ACarreau+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adfalbel+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​lumberbot-app\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aptosco+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.0.1\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.0.1 is a bug fix release to support CPython 3.14.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.0...6d9a14a21a8e328e384ebac48e4ccbaad85b1d45\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid overriding Thread._context in Python 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1447\"\u003e#1447\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix 7.x license warnings \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1448\"\u003e#1448\u003c/a\u003e (\u003ca href=\"https://github.com/bollwyvl\"\u003e\u003ccode\u003e@​bollwyvl\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eci: Test on PyPy 3.11 instead of 3.10 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1444\"\u003e#1444\u003c/a\u003e (\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation improvements\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/ipython/ipykernel/commit/39eaf96ab6db0d0ff9ad269831384c53a11e11d8\"\u003e\u003ccode\u003e39eaf96\u003c/code\u003e\u003c/a\u003e Publish 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/6f61a6835c217e42c406ee01b359e2fa235baf43\"\u003e\u003ccode\u003e6f61a68\u003c/code\u003e\u003c/a\u003e test that matplotlib event loop integration is responsive (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1463\"\u003e#1463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/8446e02948c390793e129affeceedfa30ed5080f\"\u003e\u003ccode\u003e8446e02\u003c/code\u003e\u003c/a\u003e Fix KeyboardInterrupt on Windows by manually resetting interrupt event (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1434\"\u003e#1434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/dd1e09484854c8dedcd98436bc01b6b8e1cc9034\"\u003e\u003ccode\u003edd1e094\u003c/code\u003e\u003c/a\u003e update pre-commit and related (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1465\"\u003e#1465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/95f245138589db4f723b8af06107cdfeadc53314\"\u003e\u003ccode\u003e95f2451\u003c/code\u003e\u003c/a\u003e fix ContextVar persistence across cells (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1462\"\u003e#1462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/c56a7aab3cad1fb91f7e7185dc7403d561ecd667\"\u003e\u003ccode\u003ec56a7aa\u003c/code\u003e\u003c/a\u003e Fix matplotlib eventloops (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/c7af34cd19ebcd43f5aafe1919909feb6e898387\"\u003e\u003ccode\u003ec7af34c\u003c/code\u003e\u003c/a\u003e Refer to kernel laucnhing thread instead of assuming the main thread (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1455\"\u003e#1455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/7193d14de447a18470a18d60b81eda5f0048b6aa\"\u003e\u003ccode\u003e7193d14\u003c/code\u003e\u003c/a\u003e Fix routing of background thread output when no parent is set explicitly (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1451\"\u003e#1451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/b8f5dfc3a35a658c66b85213e60f634bd8a44488\"\u003e\u003ccode\u003eb8f5dfc\u003c/code\u003e\u003c/a\u003e Store display outputs in history for \u003ccode\u003e%notebook\u003c/code\u003e magic (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/93f11dbb02692a7922cb6fdb4ebadffdb8b691c0\"\u003e\u003ccode\u003e93f11db\u003c/code\u003e\u003c/a\u003e update tests for 3.14 (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1453\"\u003e#1453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ipython/ipykernel/compare/v6.29.5...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 6.1.1 to 7.2.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/HISTORY.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.2.1\u003c/h1\u003e\n\u003cp\u003e2025-12-29\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2699_, [FreeBSD], [NetBSD]: \u003ccode\u003eheap_info()\u003c/code\u003e_ does not detect small allocations\n(\u0026lt;= 1K). In order to fix that, we now flush internal jemalloc cache before\nfetching the metrics.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.2.0\u003c/h1\u003e\n\u003cp\u003e2025-12-23\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e1275_: new \u003ccode\u003eheap_info()\u003c/code\u003e_ and \u003ccode\u003eheap_trim()\u003c/code\u003e_ functions, providing direct\naccess to the platform's native C heap allocator (glibc, mimalloc,\nlibmalloc). Useful to create tools to detect memory leaks.\u003c/li\u003e\n\u003cli\u003e2403_, [Linux]: publish wheels for Linux musl.\u003c/li\u003e\n\u003cli\u003e2680_: unit tests are no longer installed / part of the distribution. They\nnow 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\u003e2684_, [FreeBSD], [critical]: compilation fails on FreeBSD 14 due to missing\ninclude.\u003c/li\u003e\n\u003cli\u003e2691_, [Windows]: fix memory leak in \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\u003cul\u003e\n\u003cli\u003e2680_: \u003ccode\u003eimport psutil.tests\u003c/code\u003e no longer works (but it was never documented to\nbegin with).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.1.3\u003c/h1\u003e\n\u003cp\u003e2025-11-02\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2667_: enforce \u003ccode\u003eclang-format\u003c/code\u003e on all C and header files. It is now the\nmandatory formatting style for all C sources.\u003c/li\u003e\n\u003cli\u003e2672_, [macOS], [BSD]: increase the chances to recognize zombie processes and\nraise the appropriate exception (\u003ccode\u003eZombieProcess\u003c/code\u003e_).\u003c/li\u003e\n\u003cli\u003e2676_, 2678_: replace unsafe \u003ccode\u003esprintf\u003c/code\u003e / \u003ccode\u003esnprintf\u003c/code\u003e / \u003ccode\u003esprintf_s\u003c/code\u003e calls with\n\u003ccode\u003estr_format()\u003c/code\u003e. Replace \u003ccode\u003estrlcat\u003c/code\u003e / \u003ccode\u003estrlcpy\u003c/code\u003e with safe \u003ccode\u003estr_copy\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/giampaolo/psutil/commit/6130c19da2d01383befa0dfca2371a792f8881af\"\u003e\u003ccode\u003e6130c19\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2699\"\u003e#2699\u003c/a\u003e / BSD: flush internal jemalloc cache before returning metrics.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/899ee4efa9c1943de14a5818853b6dc9c019eb4f\"\u003e\u003ccode\u003e899ee4e\u003c/code\u003e\u003c/a\u003e Mention psleak\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/704e218db7da14e98a54f2aa9f93372d5900e0b4\"\u003e\u003ccode\u003e704e218\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/1a946cfe738045cecf031222cd5078da21946af4\"\u003e\u003ccode\u003e1a946cf\u003c/code\u003e\u003c/a\u003e Take psleak from PYPI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/5085421cabed317d5e2f7164e6072b0be05ba4f1\"\u003e\u003ccode\u003e5085421\u003c/code\u003e\u003c/a\u003e Use external psleak module for memleak tests (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2698\"\u003e#2698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/ac56e6ad0b7c08755a5542afdacb668ad164fd09\"\u003e\u003ccode\u003eac56e6a\u003c/code\u003e\u003c/a\u003e CI: don't cancel CI in progress on 1st failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/10fe3d5e9372a504167b0a4df440ab949c0410fe\"\u003e\u003ccode\u003e10fe3d5\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of github.com:giampaolo/psutil\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/ba507bd26bbfe5d1bdc45d606c8979f9e6f632cb\"\u003e\u003ccode\u003eba507bd\u003c/code\u003e\u003c/a\u003e Fix various CI errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/d5a1398f0860c04883ef881c4760f32d14ef4abf\"\u003e\u003ccode\u003ed5a1398\u003c/code\u003e\u003c/a\u003e Update cpu_count docs: clarify differences from os.cpu_count (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2696\"\u003e#2696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/556158f55fc3b2f1271b48c66c46912323cf8bec\"\u003e\u003ccode\u003e556158f\u003c/code\u003e\u003c/a\u003e Refact memleak.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/release-6.1.1...release-7.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyzmq` from 26.2.0 to 27.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zeromq/pyzmq/releases\"\u003epyzmq's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev27.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.1.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.2'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.1'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev26.4.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\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/zeromq/pyzmq/commit/425a21fd2ae3bc50d81176ff9a8253af3535a3d4\"\u003e\u003ccode\u003e425a21f\u003c/code\u003e\u003c/a\u003e Bump to 27.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/c6bf62145e912a95c0dfccff4609d1e52b464ceb\"\u003e\u003ccode\u003ec6bf621\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2127\"\u003e#2127\u003c/a\u003e from minrk/271\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/3558cceb69d9d5ca1ac14e2dc300060232371e86\"\u003e\u003ccode\u003e3558cce\u003c/code\u003e\u003c/a\u003e release 27.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/17b9ce8d4e7bbe4f35271a303a73498cff46d9fa\"\u003e\u003ccode\u003e17b9ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2126\"\u003e#2126\u003c/a\u003e from minrk/compile-time-drafts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/83040f7467f268c1cddfd26efac7790bdd7d64e0\"\u003e\u003ccode\u003e83040f7\u003c/code\u003e\u003c/a\u003e restore zmq.DRAFT_API meaning drafts are actually available\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/e21dcd8e0bfa8194230b588864b03cbbb839ea10\"\u003e\u003ccode\u003ee21dcd8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2124\"\u003e#2124\u003c/a\u003e from zeromq/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/26233552a6c6557f2749265d3909a466ac57c3c3\"\u003e\u003ccode\u003e2623355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/684b2e5cb40b764ca45875a0c0b3af6d4662d46c\"\u003e\u003ccode\u003e684b2e5\u003c/code\u003e\u003c/a\u003e Bump to 27.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/912e61982a3413d9b7cdc1786fac3b5d5fa64620\"\u003e\u003ccode\u003e912e619\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2122\"\u003e#2122\u003c/a\u003e from minrk/devmode-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/69f8d905855421fb69e1783c71a4c1502c299bd8\"\u003e\u003ccode\u003e69f8d90\u003c/code\u003e\u003c/a\u003e changelog for 27.0.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/zeromq/pyzmq/compare/v26.2.0...v27.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tornado` from 6.4.2 to 6.5.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tornadoweb/tornado/blob/v6.5.4/docs/releases.rst\"\u003etornado's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease notes\u003c/h1\u003e\n\u003cp\u003e.. toctree::\n:maxdepth: 2\u003c/p\u003e\n\u003cp\u003ereleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0\nreleases/v4.0.2\nreleases/v4.0.1\nreleases/v4.0.0\nreleases/v3.2.2\nreleases/v3.2.1\nreleases/v3.2.0\nreleases/v3.1.1\nreleases/v3.1.0\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/tornadoweb/tornado/commit/63d4df4eefa6750bb14efa1ebffe67b8c54fbad4\"\u003e\u003ccode\u003e63d4df4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tornadoweb/tornado/issues/3564\"\u003e#3564\u003c/a\u003e from bdarnell/release-654\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/eadbf9adbe9db19e2686a32f48ddf9a25518c4f6\"\u003e\u003ccode\u003eeadbf9a\u003c/code\u003e\u003c/a\u003e Release notes and version bump for 6.5.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/bbc2b1429c6db80765a8a95c09ddddc7bb40e4e8\"\u003e\u003ccode\u003ebbc2b14\u003c/code\u003e\u003c/a\u003e Make sure that the in-operator on HTTPHeaders is case insensitive\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/38014ddb51520ff7762c1d55535925dba2cdbe31\"\u003e\u003ccode\u003e38014dd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tornadoweb/tornado/issues/3558\"\u003e#3558\u003c/a\u003e from bdarnell/relnotes-653\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/083e2b24bb0ab1bbc049192d5aca86c059c98d80\"\u003e\u003ccode\u003e083e2b2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tornadoweb/tornado/issues/3557\"\u003e#3557\u003c/a\u003e from bdarnell/perf-counter-65\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/31431c9aecefeb64b4c2fddcff5a25eccc12e981\"\u003e\u003ccode\u003e31431c9\u003c/code\u003e\u003c/a\u003e test: Use time.perf_counter instead of time.time for performance tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/07b5924706b1992ccc4c272365efcf46b08e8b0d\"\u003e\u003ccode\u003e07b5924\u003c/code\u003e\u003c/a\u003e tox: Pin pycares version 4 due to backwards-incompatible changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/a5e50e20d635916415b8609df1bbad57fce3613c\"\u003e\u003ccode\u003ea5e50e2\u003c/code\u003e\u003c/a\u003e Release notes and version bump for 6.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/297662942893c1f01a8e4ca0f82503e89594a53c\"\u003e\u003ccode\u003e2976629\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tornadoweb/tornado/issues/3555\"\u003e#3555\u003c/a\u003e from bdarnell/release-653\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/9c163aebeaad9e6e7d28bac1f33580eb00b0e421\"\u003e\u003ccode\u003e9c163ae\u003c/code\u003e\u003c/a\u003e web: Harden against invalid HTTP reason phrases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tornadoweb/tornado/compare/v6.4.2...v6.5.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/OpenMS/pyopenms_viz/pull/134","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMS%2Fpyopenms_viz/issues/134","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/134/packages"},{"uuid":"3743394485","node_id":"PR_kwDOOcEvi865m7FP","number":137,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 47 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-26T16:25:15.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-18T14:27:10.000Z","updated_at":"2026-01-26T16:25:17.000Z","time_to_close":3376685,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":47,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.4","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.0","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.7","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.3.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"openfeature-provider-ofrep","old_version":"0.1.1","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 47 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.2` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.7` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.3.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.2` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 42 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.2` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.7` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.3.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.2` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 10 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.51b0 to 0.60b1\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\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\u003ch2\u003eUnreleased\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.(request.)duration\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3945\"\u003e#3945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-util-http\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-requests\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-wsgi\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: normalize byte-valued user-agent headers before detecting synthetic sources so attributes are recorded reliably.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-requests\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-wsgi\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e Detect synthetic sources on requests, ASGI, and WSGI.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3674\"\u003e#3674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-client\u003c/code\u003e: add support for url exclusions via \u003ccode\u003eOTEL_PYTHON_EXCLUDED_URLS\u003c/code\u003e / \u003ccode\u003eOTEL_PYTHON_AIOHTTP_CLIENT_EXCLUDED_URLS\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3850\"\u003e#3850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-httpx\u003c/code\u003e: add support for url exclusions via \u003ccode\u003eOTEL_PYTHON_EXCLUDED_URLS\u003c/code\u003e / \u003ccode\u003eOTEL_PYTHON_HTTPX_EXCLUDED_URLS\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3837\"\u003e#3837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3883\"\u003e#3883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlalchemy\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3886\"\u003e#3886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-mysql\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-mysqlclient\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-pymysql\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3885\"\u003e#3885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3884\"\u003e#3884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e: add support for custom header captures via \u003ccode\u003eOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST\u003c/code\u003e and \u003ccode\u003eOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-redis\u003c/code\u003e: add support for \u003ccode\u003esuppress_instrumentation\u003c/code\u003e context manager for both sync and async Redis clients and pipelines\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: improve docs for response_hook with examples of providing attributes from middlewares\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3923\"\u003e#3923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate for Log SDK breaking changes. Rename InMemoryLogExporter to InMemoryLogRecordExporter in several tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-instrumentation: allow to skip all instrumentations loading with a wildcard\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-redis\u003c/code\u003e: add missing copyright header for opentelemetry-instrumentation-redis\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3976\"\u003e#3976\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.30.0 to 1.39.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.39.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.39.1/0.60b1 (2025-12-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSilence events API warnings for internal users\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4847\"\u003e#4847\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Convert objects of any type other than AnyValue in attributes to string to be exportable\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4808\"\u003e#4808\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edocs: Added sqlcommenter example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4734\"\u003e#4734\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebuild: bump ruff to 0.14.1\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4782\"\u003e#4782\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e as an optional dependency to \u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e\nand \u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4760\"\u003e#4760\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esemantic-conventions: Bump to 1.38.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4791\"\u003e#4791\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Remove LogData and extend SDK LogRecord to have instrumentation scope\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4676\"\u003e#4676\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Rename several classes from Log to LogRecord\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4647\"\u003e#4647\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration Guide:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eLogData\u003c/code\u003e has been removed. Users should update their code as follows:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Exporters:\u003c/strong\u003e Change from \u003ccode\u003eSequence[LogData]\u003c/code\u003e to \u003ccode\u003eSequence[ReadableLogRecord]\u003c/code\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef export(self, batch: Sequence[LogData]) -\u0026gt; LogRecordExportResult:\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadableLogRecord\ndef export(self, batch: Sequence[ReadableLogRecord]) -\u0026gt; LogRecordExportResult:\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Processors:\u003c/strong\u003e Use \u003ccode\u003eReadWriteLogRecord\u003c/code\u003e for processing, \u003ccode\u003eReadableLogRecord\u003c/code\u003e for exporting\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef on_emit(self, log_data: LogData):\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadWriteLogRecord, ReadableLogRecord\ndef on_emit(self, log_record: ReadWriteLogRecord):\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b4c13279187941b561de5d62e6483a91759ba123\"\u003e\u003ccode\u003eb4c1327\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.1/0.60b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4851\"\u003e#4851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/2fdd6587582febe0978d4b841c0f9ec92596d89b\"\u003e\u003ccode\u003e2fdd658\u003c/code\u003e\u003c/a\u003e Silence events warnings for internal users (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4850\"\u003e#4850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/dc0a9b340446b985cdebb6f45d70eab3e042c92a\"\u003e\u003ccode\u003edc0a9b3\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.0/0.60b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4833\"\u003e#4833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/cd150c3a201df6ff55c5a9b40ee877717d973a82\"\u003e\u003ccode\u003ecd150c3\u003c/code\u003e\u003c/a\u003e Fix changelog before the release (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4831\"\u003e#4831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/382fa46621953a80a6659bc4fb0a8266c4c982fc\"\u003e\u003ccode\u003e382fa46\u003c/code\u003e\u003c/a\u003e Mark events API/SDK as deprecated (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5307dd0a6cabea2877a67e067cf81be5285d586b\"\u003e\u003ccode\u003e5307dd0\u003c/code\u003e\u003c/a\u003e Fix errors on serialization of values that are not AnyValue in LogRecord attr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/8615ba0a0bc675d6ccad6693c637f009fec727eb\"\u003e\u003ccode\u003e8615ba0\u003c/code\u003e\u003c/a\u003e Fix type checking for built in metric exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4820\"\u003e#4820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/62da90eda4b1348730180ce2fa0aeae72e09c7ed\"\u003e\u003ccode\u003e62da90e\u003c/code\u003e\u003c/a\u003e Add lmolkova to approvers (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4812\"\u003e#4812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/61bda605d71498b15a13a106ed7564eaea9f642b\"\u003e\u003ccode\u003e61bda60\u003c/code\u003e\u003c/a\u003e Fix meeting and typos (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4817\"\u003e#4817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/546e47b0001b40ca777515325953106e81ed8dbd\"\u003e\u003ccode\u003e546e47b\u003c/code\u003e\u003c/a\u003e [logs-api/sdk] Rename several classes from Log to LogRecord (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4647\"\u003e#4647\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.39.1\"\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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.4\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.3...v0.8.4\"\u003e0.8.4\u003c/a\u003e (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e63db4d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v5 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/539\"\u003e#539\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6aa54ba42b08a27083551dc831f1177e03524174\"\u003e6aa54ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e8fdd784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update amannn/action-semantic-pull-request action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/541\"\u003e#541\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/eea929d62ee470f56629461aec5f8d9f717bcea4\"\u003eeea929d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003ea9ee73a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to d0cc045 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/543\"\u003e#543\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/22210e69652384c0569117d50039045176d34d2a\"\u003e22210e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e0d8369f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003ed03223e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 64d10c1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/95b5ea04a22740a4733a68c16b2a6340adabb12d\"\u003e95b5ea0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e4d0779c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003ed537e5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e2138367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e63acac1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.3...v0.8.4\"\u003e0.8.4\u003c/a\u003e (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e63db4d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v5 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/539\"\u003e#539\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6aa54ba42b08a27083551dc831f1177e03524174\"\u003e6aa54ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e8fdd784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update amannn/action-semantic-pull-request action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/541\"\u003e#541\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/eea929d62ee470f56629461aec5f8d9f717bcea4\"\u003eeea929d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003ea9ee73a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to d0cc045 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/543\"\u003e#543\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/22210e69652384c0569117d50039045176d34d2a\"\u003e22210e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e0d8369f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003ed03223e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 64d10c1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/95b5ea04a22740a4733a68c16b2a6340adabb12d\"\u003e95b5ea0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e4d0779c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003ed537e5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e2138367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e63acac1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\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/open-feature/python-sdk/commit/418f3be69cdadd9617721c01eb91d4bce94d0399\"\u003e\u003ccode\u003e418f3be\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e\u003ccode\u003e63db4d7\u003c/code\u003e\u003c/a\u003e fix: mimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e\u003ccode\u003e8fdd784\u003c/code\u003e\u003c/a\u003e chore(deps): update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003e\u003ccode\u003ed537e5e\u003c/code\u003e\u003c/a\u003e chore: remove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e\u003ccode\u003e2138367\u003c/code\u003e\u003c/a\u003e chore: update license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e\u003ccode\u003e4d0779c\u003c/code\u003e\u003c/a\u003e chore: make the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003e\u003ccode\u003ed03223e\u003c/code\u003e\u003c/a\u003e chore(deps): update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003e\u003ccode\u003ea9ee73a\u003c/code\u003e\u003c/a\u003e chore(deps): update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e\u003ccode\u003e63acac1\u003c/code\u003e\u003c/a\u003e chore: upgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e\u003ccode\u003e0d8369f\u003c/code\u003e\u003c/a\u003e chore(deps): update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.0...v0.8.4\"\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.0 to 0.2.6\n\u003cdetails\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/shubhankar-max/Opentelemetry-Application/pull/137","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/shubhankar-max%2FOpentelemetry-Application/issues/137","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/137/packages"},{"uuid":"3741818314","node_id":"PR_kwDON4I6J865hhRd","number":186,"state":"closed","title":"Bump the pip-production-dependencies group across 3 directories with 46 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-26T07:41:31.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-18T07:25:54.000Z","updated_at":"2026-01-26T07:41:33.000Z","time_to_close":3370537,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-production-dependencies","update_count":46,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.4","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.1","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.7","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.3.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 46 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.1` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.2` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.7` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.3.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.2` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 42 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.1` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.2` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.7` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.3.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.2` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 10 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.1` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.51b0 to 0.60b1\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\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\u003ch2\u003eUnreleased\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.(request.)duration\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3945\"\u003e#3945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-util-http\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-requests\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-wsgi\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: normalize byte-valued user-agent headers before detecting synthetic sources so attributes are recorded reliably.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-requests\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-wsgi\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e Detect synthetic sources on requests, ASGI, and WSGI.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3674\"\u003e#3674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-client\u003c/code\u003e: add support for url exclusions via \u003ccode\u003eOTEL_PYTHON_EXCLUDED_URLS\u003c/code\u003e / \u003ccode\u003eOTEL_PYTHON_AIOHTTP_CLIENT_EXCLUDED_URLS\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3850\"\u003e#3850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-httpx\u003c/code\u003e: add support for url exclusions via \u003ccode\u003eOTEL_PYTHON_EXCLUDED_URLS\u003c/code\u003e / \u003ccode\u003eOTEL_PYTHON_HTTPX_EXCLUDED_URLS\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3837\"\u003e#3837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3883\"\u003e#3883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlalchemy\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3886\"\u003e#3886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-mysql\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-mysqlclient\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-pymysql\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3885\"\u003e#3885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3884\"\u003e#3884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e: add support for custom header captures via \u003ccode\u003eOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST\u003c/code\u003e and \u003ccode\u003eOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-redis\u003c/code\u003e: add support for \u003ccode\u003esuppress_instrumentation\u003c/code\u003e context manager for both sync and async Redis clients and pipelines\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: improve docs for response_hook with examples of providing attributes from middlewares\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3923\"\u003e#3923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate for Log SDK breaking changes. Rename InMemoryLogExporter to InMemoryLogRecordExporter in several tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-instrumentation: allow to skip all instrumentations loading with a wildcard\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-redis\u003c/code\u003e: add missing copyright header for opentelemetry-instrumentation-redis\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3976\"\u003e#3976\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.30.0 to 1.39.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.39.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.39.1/0.60b1 (2025-12-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSilence events API warnings for internal users\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4847\"\u003e#4847\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Convert objects of any type other than AnyValue in attributes to string to be exportable\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4808\"\u003e#4808\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edocs: Added sqlcommenter example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4734\"\u003e#4734\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebuild: bump ruff to 0.14.1\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4782\"\u003e#4782\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e as an optional dependency to \u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e\nand \u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4760\"\u003e#4760\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esemantic-conventions: Bump to 1.38.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4791\"\u003e#4791\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Remove LogData and extend SDK LogRecord to have instrumentation scope\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4676\"\u003e#4676\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Rename several classes from Log to LogRecord\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4647\"\u003e#4647\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration Guide:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eLogData\u003c/code\u003e has been removed. Users should update their code as follows:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Exporters:\u003c/strong\u003e Change from \u003ccode\u003eSequence[LogData]\u003c/code\u003e to \u003ccode\u003eSequence[ReadableLogRecord]\u003c/code\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef export(self, batch: Sequence[LogData]) -\u0026gt; LogRecordExportResult:\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadableLogRecord\ndef export(self, batch: Sequence[ReadableLogRecord]) -\u0026gt; LogRecordExportResult:\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Processors:\u003c/strong\u003e Use \u003ccode\u003eReadWriteLogRecord\u003c/code\u003e for processing, \u003ccode\u003eReadableLogRecord\u003c/code\u003e for exporting\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef on_emit(self, log_data: LogData):\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadWriteLogRecord, ReadableLogRecord\ndef on_emit(self, log_record: ReadWriteLogRecord):\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b4c13279187941b561de5d62e6483a91759ba123\"\u003e\u003ccode\u003eb4c1327\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.1/0.60b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4851\"\u003e#4851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/2fdd6587582febe0978d4b841c0f9ec92596d89b\"\u003e\u003ccode\u003e2fdd658\u003c/code\u003e\u003c/a\u003e Silence events warnings for internal users (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4850\"\u003e#4850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/dc0a9b340446b985cdebb6f45d70eab3e042c92a\"\u003e\u003ccode\u003edc0a9b3\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.0/0.60b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4833\"\u003e#4833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/cd150c3a201df6ff55c5a9b40ee877717d973a82\"\u003e\u003ccode\u003ecd150c3\u003c/code\u003e\u003c/a\u003e Fix changelog before the release (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4831\"\u003e#4831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/382fa46621953a80a6659bc4fb0a8266c4c982fc\"\u003e\u003ccode\u003e382fa46\u003c/code\u003e\u003c/a\u003e Mark events API/SDK as deprecated (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5307dd0a6cabea2877a67e067cf81be5285d586b\"\u003e\u003ccode\u003e5307dd0\u003c/code\u003e\u003c/a\u003e Fix errors on serialization of values that are not AnyValue in LogRecord attr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/8615ba0a0bc675d6ccad6693c637f009fec727eb\"\u003e\u003ccode\u003e8615ba0\u003c/code\u003e\u003c/a\u003e Fix type checking for built in metric exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4820\"\u003e#4820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/62da90eda4b1348730180ce2fa0aeae72e09c7ed\"\u003e\u003ccode\u003e62da90e\u003c/code\u003e\u003c/a\u003e Add lmolkova to approvers (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4812\"\u003e#4812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/61bda605d71498b15a13a106ed7564eaea9f642b\"\u003e\u003ccode\u003e61bda60\u003c/code\u003e\u003c/a\u003e Fix meeting and typos (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4817\"\u003e#4817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/546e47b0001b40ca777515325953106e81ed8dbd\"\u003e\u003ccode\u003e546e47b\u003c/code\u003e\u003c/a\u003e [logs-api/sdk] Rename several classes from Log to LogRecord (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4647\"\u003e#4647\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.39.1\"\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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.4\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.3...v0.8.4\"\u003e0.8.4\u003c/a\u003e (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e63db4d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v5 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/539\"\u003e#539\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6aa54ba42b08a27083551dc831f1177e03524174\"\u003e6aa54ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e8fdd784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update amannn/action-semantic-pull-request action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/541\"\u003e#541\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/eea929d62ee470f56629461aec5f8d9f717bcea4\"\u003eeea929d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003ea9ee73a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to d0cc045 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/543\"\u003e#543\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/22210e69652384c0569117d50039045176d34d2a\"\u003e22210e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e0d8369f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003ed03223e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 64d10c1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/95b5ea04a22740a4733a68c16b2a6340adabb12d\"\u003e95b5ea0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e4d0779c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003ed537e5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e2138367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e63acac1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.3...v0.8.4\"\u003e0.8.4\u003c/a\u003e (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e63db4d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v5 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/539\"\u003e#539\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6aa54ba42b08a27083551dc831f1177e03524174\"\u003e6aa54ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e8fdd784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update amannn/action-semantic-pull-request action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/541\"\u003e#541\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/eea929d62ee470f56629461aec5f8d9f717bcea4\"\u003eeea929d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003ea9ee73a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to d0cc045 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/543\"\u003e#543\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/22210e69652384c0569117d50039045176d34d2a\"\u003e22210e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e0d8369f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003ed03223e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 64d10c1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/95b5ea04a22740a4733a68c16b2a6340adabb12d\"\u003e95b5ea0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e4d0779c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003ed537e5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e2138367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e63acac1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\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/open-feature/python-sdk/commit/418f3be69cdadd9617721c01eb91d4bce94d0399\"\u003e\u003ccode\u003e418f3be\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e\u003ccode\u003e63db4d7\u003c/code\u003e\u003c/a\u003e fix: mimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e\u003ccode\u003e8fdd784\u003c/code\u003e\u003c/a\u003e chore(deps): update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003e\u003ccode\u003ed537e5e\u003c/code\u003e\u003c/a\u003e chore: remove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e\u003ccode\u003e2138367\u003c/code\u003e\u003c/a\u003e chore: update license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e\u003ccode\u003e4d0779c\u003c/code\u003e\u003c/a\u003e chore: make the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003e\u003ccode\u003ed03223e\u003c/code\u003e\u003c/a\u003e chore(deps): update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003e\u003ccode\u003ea9ee73a\u003c/code\u003e\u003c/a\u003e chore(deps): update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e\u003ccode\u003e63acac1\u003c/code\u003e\u003c/a\u003e chore: upgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e\u003ccode\u003e0d8369f\u003c/code\u003e\u003c/a\u003e chore(deps): update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.0...v0.8.4\"\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.1 to 0.2.6\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...\n\n_Description has been truncated_","html_url":"https://github.com/mokadir/mkadir-opentelemetry/pull/186","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mokadir%2Fmkadir-opentelemetry/issues/186","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/186/packages"},{"uuid":"3704392014","node_id":"PR_kwDOO1bbZM63kwzP","number":34,"state":"closed","title":"chore(deps): bump the production-dependencies group across 1 directory with 73 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-15T02:26:50.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-08T02:32:25.000Z","updated_at":"2025-12-15T02:26:52.000Z","time_to_close":604465,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"production-dependencies","update_count":73,"packages":[{"name":"ipykernel","old_version":"6.29.5","new_version":"7.1.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.7","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"plotly","old_version":"6.1.2","new_version":"6.5.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"pypsa","old_version":"0.34.1","new_version":"1.0.5","repository_url":"https://github.com/PyPSA/PyPSA"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"bottleneck","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pydata/bottleneck"},{"name":"cdsapi","old_version":"0.7.6","new_version":"0.7.7","repository_url":"https://github.com/ecmwf/cdsapi"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"cfgrib","old_version":"0.9.15.0","new_version":"0.9.15.1","repository_url":"https://github.com/ecmwf/cfgrib"},{"name":"cftime","old_version":"1.6.4.post1","new_version":"1.6.5","repository_url":"https://github.com/Unidata/cftime"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.2.1","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"cloudpickle","old_version":"3.1.1","new_version":"3.1.2","repository_url":"https://github.com/cloudpipe/cloudpickle"},{"name":"comm","old_version":"0.2.2","new_version":"0.2.3","repository_url":"https://github.com/ipython/comm"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"dask","old_version":"2025.5.1","new_version":"2025.11.0","repository_url":"https://github.com/dask/dask"},{"name":"debugpy","old_version":"1.8.14","new_version":"1.8.17","repository_url":"https://github.com/microsoft/debugpy"},{"name":"eccodes","old_version":"2.42.0","new_version":"2.44.0","repository_url":"https://github.com/ecmwf/eccodes-python"},{"name":"ecmwf-datastores-client","old_version":"0.2.0","new_version":"0.4.1","repository_url":"https://github.com/ecmwf/ecmwf-datastores-client"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"fastjsonschema","old_version":"2.21.1","new_version":"2.21.2","repository_url":"https://github.com/horejsek/python-fastjsonschema"},{"name":"findlibs","old_version":"0.1.1","new_version":"0.1.2","repository_url":"https://github.com/ecmwf/findlibs"},{"name":"fonttools","old_version":"4.58.1","new_version":"4.61.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"fsspec","old_version":"2025.5.1","new_version":"2025.12.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"geopandas","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/geopandas/geopandas"},{"name":"h5netcdf","old_version":"1.6.3","new_version":"1.7.3","repository_url":"https://github.com/h5netcdf/h5netcdf"},{"name":"h5py","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/h5py/h5py"},{"name":"highspy","old_version":"1.10.0","new_version":"1.12.0","repository_url":"https://github.com/ERGO-Code/HiGHS"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"ipython","old_version":"9.3.0","new_version":"9.8.0","repository_url":"https://github.com/ipython/ipython"},{"name":"jsonschema","old_version":"4.24.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"jupyter-core","old_version":"5.8.1","new_version":"5.9.1","repository_url":"https://github.com/jupyter/jupyter_core"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"linopy","old_version":"0.5.5","new_version":"0.5.8","repository_url":"https://github.com/PyPSA/linopy"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"multiurl","old_version":"0.3.6","new_version":"0.3.7","repository_url":"https://github.com/ecmwf/multiurl"},{"name":"narwhals","old_version":"1.41.0","new_version":"2.13.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"netcdf4","old_version":"1.7.2","new_version":"1.7.3","repository_url":"https://github.com/Unidata/netcdf4-python"},{"name":"networkx","old_version":"3.5","new_version":"3.6","repository_url":"https://github.com/networkx/networkx"},{"name":"numexpr","old_version":"2.10.2","new_version":"2.14.1","repository_url":"https://github.com/pydata/numexpr"},{"name":"numpy","old_version":"2.2.0","new_version":"2.3.5","repository_url":"https://github.com/numpy/numpy"},{"name":"packaging","old_version":"24.2","new_version":"25.0","repository_url":"https://github.com/pypa/packaging"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"pillow","old_version":"11.2.1","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"polars","old_version":"1.30.0","new_version":"1.35.2","repository_url":"https://github.com/pola-rs/polars"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyogrio","old_version":"0.11.0","new_version":"0.12.1","repository_url":"https://github.com/geopandas/pyogrio"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.2.5","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pyproj","old_version":"3.7.1","new_version":"3.7.2","repository_url":"https://github.com/pyproj4/pyproj"},{"name":"pytz","old_version":"2024.2","new_version":"2025.2","repository_url":"https://github.com/stub42/pytz"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"pyzmq","old_version":"26.4.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rpds-py","old_version":"0.25.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"scipy","old_version":"1.15.3","new_version":"1.16.3","repository_url":"https://github.com/scipy/scipy"},{"name":"shapely","old_version":"2.0.7","new_version":"2.1.2","repository_url":"https://github.com/shapely/shapely"},{"name":"toolz","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/pytoolz/toolz"},{"name":"tornado","old_version":"6.5.1","new_version":"6.5.2","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"typing-extensions","old_version":"4.14.0","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"tzdata","old_version":"2024.2","new_version":"2025.2","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.5.0","new_version":"2.6.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.2.14","repository_url":"https://github.com/jquast/wcwidth"},{"name":"xarray","old_version":"2025.4.0","new_version":"2025.12.0","repository_url":"https://github.com/pydata/xarray"},{"name":"zipp","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the production-dependencies group with 73 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ipykernel](https://github.com/ipython/ipykernel) | `6.29.5` | `7.1.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.7` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.5.0` |\n| [pypsa](https://github.com/PyPSA/PyPSA) | `0.34.1` | `1.0.5` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [bottleneck](https://github.com/pydata/bottleneck) | `1.5.0` | `1.6.0` |\n| [cdsapi](https://github.com/ecmwf/cdsapi) | `0.7.6` | `0.7.7` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.11.12` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [cfgrib](https://github.com/ecmwf/cfgrib) | `0.9.15.0` | `0.9.15.1` |\n| [cftime](https://github.com/Unidata/cftime) | `1.6.4.post1` | `1.6.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.2.1` | `8.3.1` |\n| [cloudpickle](https://github.com/cloudpipe/cloudpickle) | `3.1.1` | `3.1.2` |\n| [comm](https://github.com/ipython/comm) | `0.2.2` | `0.2.3` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [dask](https://github.com/dask/dask) | `2025.5.1` | `2025.11.0` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.14` | `1.8.17` |\n| [eccodes](https://github.com/ecmwf/eccodes-python) | `2.42.0` | `2.44.0` |\n| [ecmwf-datastores-client](https://github.com/ecmwf/ecmwf-datastores-client) | `0.2.0` | `0.4.1` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [fastjsonschema](https://github.com/horejsek/python-fastjsonschema) | `2.21.1` | `2.21.2` |\n| [findlibs](https://github.com/ecmwf/findlibs) | `0.1.1` | `0.1.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.1` | `4.61.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.5.1` | `2025.12.0` |\n| [geopandas](https://github.com/geopandas/geopandas) | `1.1.0` | `1.1.1` |\n| [h5netcdf](https://github.com/h5netcdf/h5netcdf) | `1.6.3` | `1.7.3` |\n| [h5py](https://github.com/h5py/h5py) | `3.14.0` | `3.15.1` |\n| [highspy](https://github.com/ERGO-Code/HiGHS) | `1.10.0` | `1.12.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [ipython](https://github.com/ipython/ipython) | `9.3.0` | `9.8.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.24.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [jupyter-core](https://github.com/jupyter/jupyter_core) | `5.8.1` | `5.9.1` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [linopy](https://github.com/PyPSA/linopy) | `0.5.5` | `0.5.8` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [multiurl](https://github.com/ecmwf/multiurl) | `0.3.6` | `0.3.7` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `1.41.0` | `2.13.0` |\n| [netcdf4](https://github.com/Unidata/netcdf4-python) | `1.7.2` | `1.7.3` |\n| [networkx](https://github.com/networkx/networkx) | `3.5` | `3.6` |\n| [numexpr](https://github.com/pydata/numexpr) | `2.10.2` | `2.14.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.0` | `2.3.5` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `25.0` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.0.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [polars](https://github.com/pola-rs/polars) | `1.30.0` | `1.35.2` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyogrio](https://github.com/geopandas/pyogrio) | `0.11.0` | `0.12.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.2.5` |\n| [pyproj](https://github.com/pyproj4/pyproj) | `3.7.1` | `3.7.2` |\n| [pytz](https://github.com/stub42/pytz) | `2024.2` | `2025.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.4.0` | `27.1.0` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.25.1` | `0.30.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.3` | `1.16.3` |\n| [shapely](https://github.com/shapely/shapely) | `2.0.7` | `2.1.2` |\n| [toolz](https://github.com/pytoolz/toolz) | `1.0.0` | `1.1.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.1` | `6.5.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.0` | `4.15.0` |\n| [tzdata](https://github.com/python/tzdata) | `2024.2` | `2025.2` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.5.0` | `2.6.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.2.14` |\n| [xarray](https://github.com/pydata/xarray) | `2025.4.0` | `2025.12.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.22.0` | `3.23.0` |\n\n\nUpdates `ipykernel` from 6.29.5 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ipython/ipykernel/releases\"\u003eipykernel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.1.0\u003c/h2\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using \u003ccode\u003e%notebook\u003c/code\u003e magic to save sessions as \u003ccode\u003e.ipynb\u003c/code\u003e files (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1435\"\u003e#1435\u003c/a\u003e). This is enabled using the traitlet \u003ccode\u003eZMQDisplayPublisher.store_display_history\u003c/code\u003e which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.\u003c/p\u003e\n\u003cp\u003eOutput from threads is restored to the pre-6.29 behavior by default (route to latest cell, unless \u003ccode\u003eget_ipython().set_parent()\u003c/code\u003e is called explicitly from the thread. If it is called, output from that thread will continue to be routed to the same cell). This behavior is now opt-in, instead of unconditional (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1451\"\u003e#1451\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eThis release also fixes bugs that were introduced into the 7.x branch relating to Matplotlib plots in separate windows not being displayed correctly (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1458\"\u003e#1458\u003c/a\u003e), kernels launched in new threads failing asserts (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1455\"\u003e#1455\u003c/a\u003e), and \u003ccode\u003eContextVar\u003c/code\u003es persisting between cells (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1462\"\u003e#1462\u003c/a\u003e). There is also a fix for keyboard interrupts on Windows (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1434\"\u003e#1434\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.1...6f61a6835c217e42c406ee01b359e2fa235baf43\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStore display outputs in history for \u003ccode\u003e%notebook\u003c/code\u003e magic \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1435\"\u003e#1435\u003c/a\u003e (\u003ca href=\"https://github.com/Darshan808\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix ContextVar persistence across cells \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1462\"\u003e#1462\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix matplotlib eventloops \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1458\"\u003e#1458\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefer to kernel launching thread instead of assuming the main thread \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1455\"\u003e#1455\u003c/a\u003e (\u003ca href=\"https://github.com/dfalbel\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix routing of background thread output when no parent is set explicitly \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1451\"\u003e#1451\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KeyboardInterrupt on Windows by manually resetting interrupt event \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1434\"\u003e#1434\u003c/a\u003e (\u003ca href=\"https://github.com/ptosco\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate pre-commit and related \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1465\"\u003e#1465\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest that matplotlib event loop integration is responsive \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1463\"\u003e#1463\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate tests for 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1453\"\u003e#1453\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/graphs/contributors?from=2025-10-14\u0026amp;to=2025-10-27\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ACarreau+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adfalbel+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​lumberbot-app\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aptosco+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.0.1\u003c/h2\u003e\n\u003ch2\u003e7.0.1\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.0.1 is a bug fix release to support CPython 3.14.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.0...6d9a14a21a8e328e384ebac48e4ccbaad85b1d45\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid overriding Thread._context in Python 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1447\"\u003e#1447\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ipython/ipykernel/blob/main/CHANGELOG.md\"\u003eipykernel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using \u003ccode\u003e%notebook\u003c/code\u003e magic to save sessions as \u003ccode\u003e.ipynb\u003c/code\u003e files (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1435\"\u003e#1435\u003c/a\u003e). This is enabled using the traitlet \u003ccode\u003eZMQDisplayPublisher.store_display_history\u003c/code\u003e which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.\u003c/p\u003e\n\u003cp\u003eOutput from threads is restored to the pre-6.29 behavior by default (route to latest cell, unless \u003ccode\u003eget_ipython().set_parent()\u003c/code\u003e is called explicitly from the thread. If it is called, output from that thread will continue to be routed to the same cell). This behavior is now opt-in, instead of unconditional (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1451\"\u003e#1451\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eThis release also fixes bugs that were introduced into the 7.x branch relating to Matplotlib plots in separate windows not being displayed correctly (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1458\"\u003e#1458\u003c/a\u003e), kernels launched in new threads failing asserts (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1455\"\u003e#1455\u003c/a\u003e), and \u003ccode\u003eContextVar\u003c/code\u003es persisting between cells (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1462\"\u003e#1462\u003c/a\u003e). There is also a fix for keyboard interrupts on Windows (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1434\"\u003e#1434\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.1...6f61a6835c217e42c406ee01b359e2fa235baf43\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStore display outputs in history for \u003ccode\u003e%notebook\u003c/code\u003e magic \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1435\"\u003e#1435\u003c/a\u003e (\u003ca href=\"https://github.com/Darshan808\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix ContextVar persistence across cells \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1462\"\u003e#1462\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix matplotlib eventloops \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1458\"\u003e#1458\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefer to kernel launching thread instead of assuming the main thread \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1455\"\u003e#1455\u003c/a\u003e (\u003ca href=\"https://github.com/dfalbel\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix routing of background thread output when no parent is set explicitly \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1451\"\u003e#1451\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KeyboardInterrupt on Windows by manually resetting interrupt event \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1434\"\u003e#1434\u003c/a\u003e (\u003ca href=\"https://github.com/ptosco\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate pre-commit and related \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1465\"\u003e#1465\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest that matplotlib event loop integration is responsive \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1463\"\u003e#1463\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate tests for 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1453\"\u003e#1453\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/graphs/contributors?from=2025-10-14\u0026amp;to=2025-10-27\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ACarreau+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adfalbel+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​lumberbot-app\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aptosco+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003e7.0.1\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.0.1 is a bug fix release to support CPython 3.14.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.0...6d9a14a21a8e328e384ebac48e4ccbaad85b1d45\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid overriding Thread._context in Python 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1447\"\u003e#1447\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix 7.x license warnings \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1448\"\u003e#1448\u003c/a\u003e (\u003ca href=\"https://github.com/bollwyvl\"\u003e\u003ccode\u003e@​bollwyvl\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eci: Test on PyPy 3.11 instead of 3.10 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1444\"\u003e#1444\u003c/a\u003e (\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/39eaf96ab6db0d0ff9ad269831384c53a11e11d8\"\u003e\u003ccode\u003e39eaf96\u003c/code\u003e\u003c/a\u003e Publish 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/6f61a6835c217e42c406ee01b359e2fa235baf43\"\u003e\u003ccode\u003e6f61a68\u003c/code\u003e\u003c/a\u003e test that matplotlib event loop integration is responsive (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1463\"\u003e#1463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/8446e02948c390793e129affeceedfa30ed5080f\"\u003e\u003ccode\u003e8446e02\u003c/code\u003e\u003c/a\u003e Fix KeyboardInterrupt on Windows by manually resetting interrupt event (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1434\"\u003e#1434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/dd1e09484854c8dedcd98436bc01b6b8e1cc9034\"\u003e\u003ccode\u003edd1e094\u003c/code\u003e\u003c/a\u003e update pre-commit and related (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1465\"\u003e#1465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/95f245138589db4f723b8af06107cdfeadc53314\"\u003e\u003ccode\u003e95f2451\u003c/code\u003e\u003c/a\u003e fix ContextVar persistence across cells (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1462\"\u003e#1462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/c56a7aab3cad1fb91f7e7185dc7403d561ecd667\"\u003e\u003ccode\u003ec56a7aa\u003c/code\u003e\u003c/a\u003e Fix matplotlib eventloops (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/c7af34cd19ebcd43f5aafe1919909feb6e898387\"\u003e\u003ccode\u003ec7af34c\u003c/code\u003e\u003c/a\u003e Refer to kernel laucnhing thread instead of assuming the main thread (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1455\"\u003e#1455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/7193d14de447a18470a18d60b81eda5f0048b6aa\"\u003e\u003ccode\u003e7193d14\u003c/code\u003e\u003c/a\u003e Fix routing of background thread output when no parent is set explicitly (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1451\"\u003e#1451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/b8f5dfc3a35a658c66b85213e60f634bd8a44488\"\u003e\u003ccode\u003eb8f5dfc\u003c/code\u003e\u003c/a\u003e Store display outputs in history for \u003ccode\u003e%notebook\u003c/code\u003e magic (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/93f11dbb02692a7922cb6fdb4ebadffdb8b691c0\"\u003e\u003ccode\u003e93f11db\u003c/code\u003e\u003c/a\u003e update tests for 3.14 (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1453\"\u003e#1453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ipython/ipykernel/compare/v6.29.5...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.3 to 3.10.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.10.7\u003c/h2\u003e\n\u003cp\u003eThis is the latest bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe most important update in this release is that the minimum version\nof \u003ccode\u003epyparsing\u003c/code\u003e has been updated to version 3.0.\u003c/p\u003e\n\u003ch2\u003eREL: v3.10.6\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eHighlights from this release include:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e- Fix regression of hi-dpi support for Qt\n- Fix race condition in TexManager.make_dvi \u0026amp; make_png\n- Various documentation and other bugfixes\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eREL: v3.10.5\u003c/h2\u003e\n\u003cp\u003eThis is the fourth bugfix release of the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eIncluded in this release is distributed wheels for Python 3.14 (including freethreaded) and Windows ARM.\u003c/p\u003e\n\u003cp\u003eThere are also several smaller bugfixes.\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/matplotlib/matplotlib/commit/4aeb773422464799998d900198b35cb80e94b3e1\"\u003e\u003ccode\u003e4aeb773\u003c/code\u003e\u003c/a\u003e REL: v3.10.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/080add32f6b3c82075ccfb1111b21d5ff9e9c075\"\u003e\u003ccode\u003e080add3\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.6-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a604a8beed19bdda1355a29a12ab2904367cf140\"\u003e\u003ccode\u003ea604a8b\u003c/code\u003e\u003c/a\u003e Github Stats v3.10.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/f550261fadf30702a42bc85f71e3489a3c2f6b99\"\u003e\u003ccode\u003ef550261\u003c/code\u003e\u003c/a\u003e Zenodo v3.10.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/9a5e3e4253a3deaa5c83451b1208b5d46759ff7c\"\u003e\u003ccode\u003e9a5e3e4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30628\"\u003e#30628\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-30626-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/eb8cb0ce31f6965713a5d46fe4fadf2dffb74773\"\u003e\u003ccode\u003eeb8cb0c\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30626\"\u003e#30626\u003c/a\u003e: MNT: Fix new F401 unused imports warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/8fadc71e0e372f05aa0305ef425c5152d70d6f39\"\u003e\u003ccode\u003e8fadc71\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29745\"\u003e#29745\u003c/a\u003e: Use PEP8 style method and function names from (\u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30589\"\u003e#30589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/098876ee6f695f6c5297d4cf3f974c9d64ff4c79\"\u003e\u003ccode\u003e098876e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30614\"\u003e#30614\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-30612-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/eb42d8637ba5891aa806fa6b0ed73835c16b2741\"\u003e\u003ccode\u003eeb42d86\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30612\"\u003e#30612\u003c/a\u003e: MNT: update black pin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/4a9c187a73fce92074b262612b3285dcff2d615e\"\u003e\u003ccode\u003e4a9c187\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30572\"\u003e#30572\u003c/a\u003e from QuLogic/auto-backport-of-pr-30571-on-v3.10.x\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.3...v3.10.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.2.3 to 2.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePandas 2.3.3\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.3.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.3.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.3 supports Python 3.9 and higher, and is the first release to support Python 3.14.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.2\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.2.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.2.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.2 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.1\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.1.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\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/pandas-dev/pandas/commit/9c8bc3e55188c8aff37207a74f1dd144980b8874\"\u003e\u003ccode\u003e9c8bc3e\u003c/code\u003e\u003c/a\u003e RLS: 2.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6aa788a00bda9b0f004302076dad94df3edeafc7\"\u003e\u003ccode\u003e6aa788a\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: prepare 2.3.3 whatsnew notes for release (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62499\"\u003e#62499\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62508\"\u003e#62508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/b64f0df403d11ac733d9f460f89a5e99c8044ed0\"\u003e\u003ccode\u003eb64f0df\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: avoid validation error for ufunc with string[python] ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/058eb2b0edfc408dae9966ef1f03372f2a3ff04c\"\u003e\u003ccode\u003e058eb2b\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: String[pyarrow] comparison with mixed object (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62424\"\u003e#62424\u003c/a\u003e) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/2ca088daef6a9d9333fea8aedffc7e50d28dfdee\"\u003e\u003ccode\u003e2ca088d\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DEPR: remove the Period resampling deprecation (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62480\"\u003e#62480\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62\"\u003e#62\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/92bf98f623572ed053d48be5818c8503f1b61888\"\u003e\u003ccode\u003e92bf98f\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: fix .str.isdigit to honor unicode superscript for older...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/e57c7d6a2247316188fba0ba2a0db3c11028d75c\"\u003e\u003ccode\u003ee57c7d6\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62452\"\u003e#62452\u003c/a\u003e on branch 2.3.x (TST: Adjust tests for numexpr 2.13) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62454\"\u003e#62454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/e0fe9a03c90e560c34a3bbbdd1735a8b64f7b281\"\u003e\u003ccode\u003ee0fe9a0\u003c/code\u003e\u003c/a\u003e Backport to 2.3.x: REGR: from_records not initializing subclasses properly (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/23a1085e641c8e3a5b500e319c5973e4160b9236\"\u003e\u003ccode\u003e23a1085\u003c/code\u003e\u003c/a\u003e BUG: improve future warning for boolean operations with missaligned indexes (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/61136969fb18b438b6660bd5d485d0236dbf4a71\"\u003e\u003ccode\u003e6113696\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62396\"\u003e#62396\u003c/a\u003e on branch 2.3.x (PKG/DOC: indicate Python 3.14 support in ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas/compare/v2.2.3...v2.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.5.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.2.0 to version 3.3.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.3.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5421\"\u003e#5421\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ehovertemplate\u003c/code\u003e for \u003ccode\u003ecandlestick\u003c/code\u003e and \u003ccode\u003eohlc\u003c/code\u003e traces [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7619\"\u003e#7619\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where numpy datetime contained in Python list was converted to integer [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5415\"\u003e#5415\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.4.0...v6.5.0\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.4.0...v6.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.4.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.1.1 to version 3.2.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5388\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ehovertemplatefallback\u003c/code\u003e and \u003ccode\u003etexttemplatefallback\u003c/code\u003e attributes [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7577\"\u003e#7577\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd \u0026quot;SI extended\u0026quot; formatting rule for tick exponents on axis labels, allowing values to be displayed with extended SI prefixes (e.g., femto, pico, atto) [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7249\"\u003e#7249\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate \u003ccode\u003ecreate_hexbin_mapbox\u003c/code\u003e in favor of \u003ccode\u003ecreate_hexbin_map\u003c/code\u003e, update related function calls [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5358\"\u003e5358\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/ajlien\"\u003e\u003ccode\u003e@​ajlien\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.3.1\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Plotly.js from version 3.1.0 to version 3.1.1. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5357\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eFix issue preventing Scattergl plots with text elements from rendering [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7563\"\u003eplotly.js#7563\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUse native legends when converting from matplotlib [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5312\"\u003e#5312\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/robertoffmoura\"\u003e\u003ccode\u003e@​robertoffmoura\u003c/code\u003e\u003c/a\u003e to the contribution!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eshared_yaxes\u003c/code\u003e to work with secondary axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5180\"\u003e#5180\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/gmjw\"\u003e\u003ccode\u003e@​gmjw\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where width/height in plot layout were not respected during Kaleido image export [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5325\"\u003e#5325\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typo in default argument to \u003ccode\u003e_ternary_contour.py\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5315\"\u003e#5315\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/Lexachoc\"\u003e\u003ccode\u003e@​Lexachoc\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003efig.show()\u003c/code\u003e behavior when \u003ccode\u003eipython\u003c/code\u003e is installed [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5258\"\u003e#5258\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.3.0...v6.3.1\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.3.0...v6.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.3.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.5.0] - 2025-11-17\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.2.0 to version 3.3.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.3.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5421\"\u003e#5421\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ehovertemplate\u003c/code\u003e for \u003ccode\u003ecandlestick\u003c/code\u003e and \u003ccode\u003eohlc\u003c/code\u003e traces [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7619\"\u003e#7619\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where numpy datetime contained in Python list was converted to integer [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5415\"\u003e#5415\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.4.0] - 2025-11-02\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.1.1 to version 3.2.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5388\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ehovertemplatefallback\u003c/code\u003e and \u003ccode\u003etexttemplatefallback\u003c/code\u003e attributes [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7577\"\u003e#7577\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd \u0026quot;SI extended\u0026quot; formatting rule for tick exponents on axis labels, allowing values to be displayed with extended SI prefixes (e.g., femto, pico, atto) [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7249\"\u003e#7249\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate \u003ccode\u003ecreate_hexbin_mapbox\u003c/code\u003e in favor of \u003ccode\u003ecreate_hexbin_map\u003c/code\u003e, update related function calls [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5358\"\u003e5358\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/ajlien\"\u003e\u003ccode\u003e@​ajlien\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.3.1] - 2025-10-02\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Plotly.js from version 3.1.0 to version 3.1.1. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5357\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eFix issue preventing Scattergl plots with text elements from rendering [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7563\"\u003eplotly.js#7563\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUse native legends when converting from matplotlib [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5312\"\u003e#5312\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/robertoffmoura\"\u003e\u003ccode\u003e@​robertoffmoura\u003c/code\u003e\u003c/a\u003e to the contribution!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eshared_yaxes\u003c/code\u003e to work with secondary axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5180\"\u003e#5180\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/gmjw\"\u003e\u003ccode\u003e@​gmjw\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where width/height in plot layout were not respected during Kaleido image export [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5325\"\u003e#5325\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typo in default argument to \u003ccode\u003e_ternary_contour.py\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5315\"\u003e#5315\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/Lexachoc\"\u003e\u003ccode\u003e@​Lexachoc\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003efig.show()\u003c/code\u003e behavior when \u003ccode\u003eipython\u003c/code\u003e is installed [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5258\"\u003e#5258\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.3.0] - 2025-08-12\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.2.0] - 2025-06-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\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/plotly/plotly.py/commit/b19f8e54350e753b3e82cdc078293e826009a640\"\u003e\u003ccode\u003eb19f8e5\u003c/code\u003e\u003c/a\u003e changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/1ec9a16b3700a3399f7bf6d802a42510fe60c215\"\u003e\u003ccode\u003e1ec9a16\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/83a2b0b4594dd330ff23ccdb77770773ac7ef1bc\"\u003e\u003ccode\u003e83a2b0b\u003c/code\u003e\u003c/a\u003e version changes for v6.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/a49f495aee7fbee5ac0a18dab4f563e7a68ce3e7\"\u003e\u003ccode\u003ea49f495\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5421\"\u003e#5421\u003c/a\u003e from plotly/update-plotlyjs-3.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/f68752659ebbe499cd50cb4ca961d882aedfa84a\"\u003e\u003ccode\u003ef687526\u003c/code\u003e\u003c/a\u003e update plotly/labextension with files from ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/83ab425007895dabe5f682400bd45671be1a6386\"\u003e\u003ccode\u003e83ab425\u003c/code\u003e\u003c/a\u003e update package-lock with new plotly.js\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/a3480f0237e76074fc3d9c47363689ae2b8a8ac7\"\u003e\u003ccode\u003ea3480f0\u003c/code\u003e\u003c/a\u003e package-lock indentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/e519d5a46e44c90b24e678a93a2548a7cb0ae567\"\u003e\u003ccode\u003ee519d5a\u003c/code\u003e\u003c/a\u003e update plotly.js to v3.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/22b0ac0ee686b1fc06ecb35c1b9b7f8e5261acba\"\u003e\u003ccode\u003e22b0ac0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5415\"\u003e#5415\u003c/a\u003e from plotly/fix-np-date-handling-issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/aa30be57c36d0ca602c0683d2232e7724f2b9dcf\"\u003e\u003ccode\u003eaa30be5\u003c/code\u003e\u003c/a\u003e Update _plotly_utils/basevalidators.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.1.2...v6.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypsa` from 0.34.1 to 1.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyPSA/PyPSA/releases\"\u003epypsa's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.0.5\u003c/h2\u003e\n\u003cp\u003eRevised release notes are available in the \u003ca href=\"https://docs.pypsa.org/latest/release-notes/\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: free up disk space by \u003ca href=\"https://github.com/lkstrp\"\u003e\u003ccode\u003e@​lkstrp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1447\"\u003ePyPSA/PyPSA#1447\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd user Serentica by \u003ca href=\"https://github.com/gincrement\"\u003e\u003ccode\u003e@​gincrement\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1453\"\u003ePyPSA/PyPSA#1453\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump 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/PyPSA/PyPSA/pull/1455\"\u003ePyPSA/PyPSA#1455\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: CVaR optimization fails if components have no marginal costs by \u003ca href=\"https://github.com/Irieo\"\u003e\u003ccode\u003e@​Irieo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1457\"\u003ePyPSA/PyPSA#1457\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix markdown syntax for pip install command by \u003ca href=\"https://github.com/flxlchr\"\u003e\u003ccode\u003e@​flxlchr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1460\"\u003ePyPSA/PyPSA#1460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: run model runs only with src changes by \u003ca href=\"https://github.com/lkstrp\"\u003e\u003ccode\u003e@​lkstrp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1462\"\u003ePyPSA/PyPSA#1462\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: using inactive generators in global carrier constraint by \u003ca href=\"https://github.com/lkstrp\"\u003e\u003ccode\u003e@​lkstrp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1450\"\u003ePyPSA/PyPSA#1450\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo and improve description by \u003ca href=\"https://github.com/flxlchr\"\u003e\u003ccode\u003e@​flxlchr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1461\"\u003ePyPSA/PyPSA#1461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate users.md by \u003ca href=\"https://github.com/gincrement\"\u003e\u003ccode\u003e@​gincrement\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1458\"\u003ePyPSA/PyPSA#1458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix description in stochastic optimization documentation by \u003ca href=\"https://github.com/energyLS\"\u003e\u003ccode\u003e@​energyLS\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1452\"\u003ePyPSA/PyPSA#1452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate users.md / Meridian Economics by \u003ca href=\"https://github.com/gincrement\"\u003e\u003ccode\u003e@​gincrement\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1463\"\u003ePyPSA/PyPSA#1463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broadcasting bug for rolling horizon with linearised UC case by \u003ca href=\"https://github.com/Irieo\"\u003e\u003ccode\u003e@​Irieo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1464\"\u003ePyPSA/PyPSA#1464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: expressions returning zero for non-extendable generators by \u003ca href=\"https://github.com/FabianHofmann\"\u003e\u003ccode\u003e@​FabianHofmann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1451\"\u003ePyPSA/PyPSA#1451\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/flxlchr\"\u003e\u003ccode\u003e@​flxlchr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1460\"\u003ePyPSA/PyPSA#1460\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyPSA/PyPSA/compare/v1.0.4...v1.0.5\"\u003ehttps://github.com/PyPSA/PyPSA/compare/v1.0.4...v1.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.4\u003c/h2\u003e\n\u003cp\u003eRevised release notes are available in the \u003ca href=\"https://PyPSA.readthedocs.io/en/latest/release-notes.html\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd example notebook on negative prices in unit commitment model by \u003ca href=\"https://github.com/Irieo\"\u003e\u003ccode\u003e@​Irieo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1434\"\u003ePyPSA/PyPSA#1434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd pypsa-asean by \u003ca href=\"https://github.com/fneum\"\u003e\u003ccode\u003e@​fneum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1435\"\u003ePyPSA/PyPSA#1435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix link in stochastic optimization example by \u003ca href=\"https://github.com/euronion\"\u003e\u003ccode\u003e@​euronion\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1436\"\u003ePyPSA/PyPSA#1436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: snapshot selection for operational in multi period optimization by \u003ca href=\"https://github.com/FabianHofmann\"\u003e\u003ccode\u003e@​FabianHofmann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1437\"\u003ePyPSA/PyPSA#1437\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: masking of nan constraints in kvl by \u003ca href=\"https://github.com/FabianHofmann\"\u003e\u003ccode\u003e@​FabianHofmann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1438\"\u003ePyPSA/PyPSA#1438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix handling of inactive storage components in constraints/variables by \u003ca href=\"https://github.com/Irieo\"\u003e\u003ccode\u003e@​Irieo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1442\"\u003ePyPSA/PyPSA#1442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: busmap clustering for multilinks by \u003ca href=\"https://github.com/lkstrp\"\u003e\u003ccode\u003e@​lkstrp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1441\"\u003ePyPSA/PyPSA#1441\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: follow up on \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1441\"\u003e#1441\u003c/a\u003e by \u003ca href=\"https://github.com/lkstrp\"\u003e\u003ccode\u003e@​lkstrp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1445\"\u003ePyPSA/PyPSA#1445\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin shapely upper bound by \u003ca href=\"https://github.com/brynpickering\"\u003e\u003ccode\u003e@​brynpickering\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1444\"\u003ePyPSA/PyPSA#1444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: use pixi for model tests by \u003ca href=\"https://github.com/lkstrp\"\u003e\u003ccode\u003e@​lkstrp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1443\"\u003ePyPSA/PyPSA#1443\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/brynpickering\"\u003e\u003ccode\u003e@​brynpickering\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1444\"\u003ePyPSA/PyPSA#1444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyPSA/PyPSA/compare/v1.0.3...v1.0.4\"\u003ehttps://github.com/PyPSA/PyPSA/compare/v1.0.3...v1.0.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.3\u003c/h2\u003e\n\u003cp\u003eRevised release notes are available in the \u003ca href=\"https://PyPSA.readthedocs.io/en/latest/release-notes.html\"\u003edocumentation\u003c/a\u003e.\u003c/p\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/PyPSA/PyPSA/blob/master/docs/release-notes.md\"\u003epypsa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/releases/tag/v1.0.5\"\u003e\u003cstrong\u003ev1.0.5\u003c/strong\u003e\u003c/a\u003e \u003c!-- raw HTML omitted --\u003e4th December 2025\u003c!-- raw HTML omitted --\u003e { id=\u0026quot;v1.0.5\u0026quot; }\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix curtailment, capacity, and capex expressions returning zero for non-extendable generators. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003cli\u003eFix using inactive generators in global carrier constraint. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003cli\u003eFix CVaR optimization to handle networks with zero operational costs. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003cli\u003eFix xarray broadcasting for rolling-horizon with linearized unit commitment optimization. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/releases/tag/v1.0.4\"\u003e\u003cstrong\u003ev1.0.4\u003c/strong\u003e\u003c/a\u003e \u003c!-- raw HTML omitted --\u003e21st November 2025\u003c!-- raw HTML omitted --\u003e { id=\u0026quot;v1.0.4\u0026quot; }\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix busmap clustering to correctly remap all bus ports in multi-port links. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of inactive \u003ccode\u003eStorageUnit\u003c/code\u003e or \u003ccode\u003eStore\u003c/code\u003e components (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003cli\u003eFix snapshot selection in operational limit global constraint with investment period. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded new example notebook demonstrating negative electricity prices in linearized unit commitment problem. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/releases/tag/v1.0.3\"\u003e\u003cstrong\u003ev1.0.3\u003c/strong\u003e\u003c/a\u003e \u003c!-- raw HTML omitted --\u003e6th November 2025\u003c!-- raw HTML omitted --\u003e { id=\u0026quot;v1.0.3\u0026quot; }\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix ramp_limit_up/down constraints: correctly detect components with ramp limits, handle rolling-horizon windows by using previous-window dispatch, and add unit tests for Link ramp limits and ramping constraints in rolling horizon mode. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/releases/tag/v1.0.2\"\u003e\u003cstrong\u003ev1.0.2\u003c/strong\u003e\u003c/a\u003e \u003c!-- raw HTML omitted --\u003e24th October 2025\u003c!-- raw HTML omitted --\u003e { id=\u0026quot;v1.0.2\u0026quot; }\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix infinite recursion error when pickling networks. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/releases/tag/v1.0.1\"\u003e\u003cstrong\u003ev1.0.1\u003c/strong\u003e\u003c/a\u003e \u003c!-- raw HTML omitted --\u003e20th October 2025\u003c!-- raw HTML omitted --\u003e { id=\u0026quot;v1.0.1\u0026quot; }\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix [\u003ccode\u003en.set_snapshots\u003c/code\u003e][pypsa.Network.set_snapshots] to synchronize investment period weightings when snapshots with new periods are set. (\u003c!-- raw HTML omitted --\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix scenario extraction methods ([pypsa.Network.get_scenario][] and [\u003ccode\u003en['scenario']\u003c/code\u003e][pypsa.Network.\u003cstrong\u003egetitem\u003c/strong\u003e]) to properly handle empty components (\u003c!-- raw HTML omitted --\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bus validation when adding global constraints via [pypsa.Network.add][], eliminating false warnings for GlobalConstraints. (\u003c!-- raw HTML omitted --\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix dimension name consistency when adding investment period weightings. (\u003c!-- raw HTML omitted --\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/releases/tag/v1.0.0\"\u003e\u003cstrong\u003ev1.0.0\u003c/strong\u003e\u003c/a\u003e \u003c!-- raw HTML omitted --\u003e14th October 2025\u003c!-- raw HTML omitted --\u003e 🎉 { id=\u0026quot;v1.0.0\u0026quot; }\u003c/h2\u003e\n\u003ch3\u003e\u003cstrong\u003ePyPSA 1.0\u003c/strong\u003e is here!\u003c/h3\u003e\n\u003cp\u003eCheck out \u003ca href=\"https://github.com/PyPSA/PyPSA/blob/master/docs/v1-guide.md\"\u003eWhat's new in PyPSA v1.0\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/470e3de1c8086f8805deca9d4c834d11e2f49c57\"\u003e\u003ccode\u003e470e3de\u003c/code\u003e\u003c/a\u003e [github-actions.ci] prepare release v1.0.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/56e9645a158e7ea8ae7df5bd2fd8b3cde7cbfe05\"\u003e\u003ccode\u003e56e9645\u003c/code\u003e\u003c/a\u003e prepare release \u003ccode\u003ev1.0.5\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/6c46fdd0f68be1543af9f17aac8af978f2030dfc\"\u003e\u003ccode\u003e6c46fdd\u003c/code\u003e\u003c/a\u003e fix: expressions returning zero for non-extendable generators (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1451\"\u003e#1451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/325e6620340d350b3977049eb0a078542c3003d6\"\u003e\u003ccode\u003e325e662\u003c/code\u003e\u003c/a\u003e Fix broadcasting bug for rolling horizon with linearised UC case (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1464\"\u003e#1464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/a4b5416e8346b4e696c6b95d25d1aed28dfd6723\"\u003e\u003ccode\u003ea4b5416\u003c/code\u003e\u003c/a\u003e Update users.md / Meridian Economics (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1463\"\u003e#1463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/4c7037dbd8b241f29494ff6473ba97e36364ee87\"\u003e\u003ccode\u003e4c7037d\u003c/code\u003e\u003c/a\u003e Update example of stochastic optimization documentation (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1452\"\u003e#1452\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/53324de38945dd273185d018002649186f9f514b\"\u003e\u003ccode\u003e53324de\u003c/code\u003e\u003c/a\u003e Update users.md (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/2532a8a251cfc58d7c49669dc3693d780bac7f16\"\u003e\u003ccode\u003e2532a8a\u003c/code\u003e\u003c/a\u003e docs: fix typo and improve description (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1461\"\u003e#1461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/7460437c63887d542c1b90d65f103e4e4ff1ca56\"\u003e\u003ccode\u003e7460437\u003c/code\u003e\u003c/a\u003e fix: using inactive generators in global carrier constraint (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1450\"\u003e#1450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/681b9ac3fd5f6edeb9d23bf9ca288107f67b3965\"\u003e\u003ccode\u003e681b9ac\u003c/code\u003e\u003c/a\u003e ci: run model runs only with src changes (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1462\"\u003e#1462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyPSA/PyPSA/compare/v0.34.1...v1.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bottleneck` from 1.5.0 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydata/bottleneck/blob/master/RELEASE.rst\"\u003ebottleneck's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eBottleneck 1.6.0\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eRelease date 2025-09-05\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eMaintenance\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e- Add Python 3.14 support, drop Python 3.9 \n- Add free-threading trove classifier\n- Bump upper bound on numpy to account for numpy 2.3.x\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydata/bottleneck/commit/3e5e705762b866e401eb9c0de9ce16b4cabc6348\"\u003e\u003ccode\u003e3e5e705\u003c/code\u003e\u003c/a\u003e MAINT: fix warning about \u003ccode\u003epp_*\u003c/code\u003e skip selector for PyPy wheels not being neede...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydata/bottleneck/commit/e3978ab0b742fc1d826193dbdf81f8c0f96b9bcf\"\u003e\u003ccode\u003ee3978ab\u003c/code\u003e\u003c/a\u003e MNT: Prepare changelog for 1.6.0  (\u003ca href=\"https://redirect.github.com/pydata/bottleneck/issues/482\"\u003e#482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydata/bottleneck/commit/aff8796c9ccb5e4fe5baa7b0dff0076eacdfcae3\"\u003e\u003ccode\u003eaff8796\u003c/code\u003e\u003c/a\u003e CI: windows-2019 runner was retired, move to windows-2022\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydata/bottleneck/commit/f5f011f1e165f7ad8ce64d306aaff0a3f4d335a8\"\u003e\u003ccode\u003ef5f011f\u003c/code\u003e\u003c/a\u003e MAINT: add Python 3.14 support, drop Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydata/bottleneck/commit/f3944e9b02b1fa48322624e2efd1468f33a05f79\"\u003e\u003ccode\u003ef3944e9\u003c/code\u003e\u003c/a\u003e MAINT: add free-threading trove classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydata/bottleneck/commit/148684f2bfd1af29e791fa6a7773641a7e025754\"\u003e\u003ccode\u003e148684f\u003c/code\u003e\u003c/a\u003e BLD: bump upper bound on numpy to account for numpy 2.3.x\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydata/bottleneck/compare/v1.5.0...v1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cdsapi` from 0.7.6 to 0.7.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ecmwf/cdsapi/releases\"\u003ecdsapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.7.7\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ecmwf/cdsapi/compare/0.7.6...0.7.7\"\u003ehttps://github.com/ecmwf/cdsapi/compare/0.7.6...0.7.7\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/ecmwf/cdsapi/commit/e1be102bce7b7dafb27e9831c42863fdeada557b\"\u003e\u003ccode\u003ee1be102\u003c/code\u003e\u003c/a\u003e Update setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ecmwf/cdsapi/commit/72d7cec0b611c2f71c1a69da4668368df5118cdb\"\u003e\u003ccode\u003e72d7cec\u003c/code\u003e\u003c/a\u003e back to development version\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ecmwf/cdsapi/compare/0.7.6...0.7.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.4.26 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\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/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\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/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://githu...\n\n_Description has been truncated_","html_url":"https://github.com/ryanjenkinson/data-centre-modelling/pull/34","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanjenkinson%2Fdata-centre-modelling/issues/34","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/34/packages"},{"uuid":"3700415841","node_id":"PR_kwDOOYUJTM63X3yb","number":25,"state":"open","title":"Update pyzmq requirement from ^25.1.0 to ^27.1.0 in /services/telemetry-processor","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-12-05T21:36:40.000Z","updated_at":"2025-12-05T21:36:41.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"pyzmq","old_version":"^25.1.0","new_version":"^27.1.0","repository_url":"https://github.com/zeromq/pyzmq"}],"path":"/services/telemetry-processor","ecosystem":"pip"},"body":"Updates the requirements on [pyzmq](https://github.com/zeromq/pyzmq) 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/zeromq/pyzmq/releases\"\u003epyzmq's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev27.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.1.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/425a21fd2ae3bc50d81176ff9a8253af3535a3d4\"\u003e\u003ccode\u003e425a21f\u003c/code\u003e\u003c/a\u003e Bump to 27.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/c6bf62145e912a95c0dfccff4609d1e52b464ceb\"\u003e\u003ccode\u003ec6bf621\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2127\"\u003e#2127\u003c/a\u003e from minrk/271\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/3558cceb69d9d5ca1ac14e2dc300060232371e86\"\u003e\u003ccode\u003e3558cce\u003c/code\u003e\u003c/a\u003e release 27.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/17b9ce8d4e7bbe4f35271a303a73498cff46d9fa\"\u003e\u003ccode\u003e17b9ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2126\"\u003e#2126\u003c/a\u003e from minrk/compile-time-drafts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/83040f7467f268c1cddfd26efac7790bdd7d64e0\"\u003e\u003ccode\u003e83040f7\u003c/code\u003e\u003c/a\u003e restore zmq.DRAFT_API meaning drafts are actually available\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/e21dcd8e0bfa8194230b588864b03cbbb839ea10\"\u003e\u003ccode\u003ee21dcd8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2124\"\u003e#2124\u003c/a\u003e from zeromq/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/26233552a6c6557f2749265d3909a466ac57c3c3\"\u003e\u003ccode\u003e2623355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/684b2e5cb40b764ca45875a0c0b3af6d4662d46c\"\u003e\u003ccode\u003e684b2e5\u003c/code\u003e\u003c/a\u003e Bump to 27.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/912e61982a3413d9b7cdc1786fac3b5d5fa64620\"\u003e\u003ccode\u003e912e619\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2122\"\u003e#2122\u003c/a\u003e from minrk/devmode-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/69f8d905855421fb69e1783c71a4c1502c299bd8\"\u003e\u003ccode\u003e69f8d90\u003c/code\u003e\u003c/a\u003e changelog for 27.0.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/zeromq/pyzmq/compare/v25.1.0...v27.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/BosWojciech/F1-Telemetry/pull/25","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/BosWojciech%2FF1-Telemetry/issues/25","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/25/packages"},{"uuid":"3692256489","node_id":"PR_kwDONF5WLM628N0n","number":432,"state":"closed","title":"chore: bump the pip-production-dependencies group across 4 directories with 48 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-27T00:37:37.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-03T23:27:07.000Z","updated_at":"2026-01-27T00:37:38.000Z","time_to_close":4669830,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"pip-production-dependencies","update_count":48,"packages":[{"name":"grpcio-health-checking","old_version":"1.68.1","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.68.1","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.29.0","new_version":"1.39.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"2.0.7","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.7.4","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.1.5","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.1.3","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2024.8.30","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.0","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.7","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.15","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.0","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.66.0","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"locust","old_version":"2.32.4","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.5.3","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.29.0","new_version":"1.39.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.29.0","new_version":"1.39.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.29.0","new_version":"1.39.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"5.29.1","new_version":"6.33.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.0","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 47 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.68.1` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.68.1` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.4` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.8.30` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.0` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.15` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.66.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.32.4` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.50b0` | `0.60b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.1` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.0` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.0` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 43 updates in the /src/loadgenerator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.4` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.8.30` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.0` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.15` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.66.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.32.4` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.50b0` | `0.60b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.1` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.0` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.0` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 11 updates in the /src/recommendationservice directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.68.1` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.68.1` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.4` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `7.1.3` |\n| [grpcio-tools](https://github.com/grpc/grpc) | `1.68.1` | `1.76.0` |\n\nBumps the pip-production-dependencies group with 1 update in the /src/recommendationservice/genproto directory: [grpcio-tools](https://github.com/grpc/grpc).\n\nUpdates `grpcio-health-checking` from 1.68.1 to 1.76.0\n\nUpdates `grpcio` from 1.68.1 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.68.1...v1.76.0\"\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.50b0 to 0.60b0\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\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-requests\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-wsgi\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e Detect synthetic sources on requests, ASGI, and WSGI.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3674\"\u003e#3674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-client\u003c/code\u003e: add support for url exclusions via \u003ccode\u003eOTEL_PYTHON_EXCLUDED_URLS\u003c/code\u003e / \u003ccode\u003eOTEL_PYTHON_AIOHTTP_CLIENT_EXCLUDED_URLS\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3850\"\u003e#3850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-httpx\u003c/code\u003e: add support for url exclusions via \u003ccode\u003eOTEL_PYTHON_EXCLUDED_URLS\u003c/code\u003e / \u003ccode\u003eOTEL_PYTHON_HTTPX_EXCLUDED_URLS\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3837\"\u003e#3837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3883\"\u003e#3883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlalchemy\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3886\"\u003e#3886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-mysql\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-mysqlclient\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-pymysql\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3885\"\u003e#3885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3884\"\u003e#3884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e: add support for custom header captures via \u003ccode\u003eOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST\u003c/code\u003e and \u003ccode\u003eOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-redis\u003c/code\u003e: add support for \u003ccode\u003esuppress_instrumentation\u003c/code\u003e context manager for both sync and async Redis clients and pipelines\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: improve docs for response_hook with examples of providing attributes from middlewares\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3923\"\u003e#3923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate for Log SDK breaking changes. Rename InMemoryLogExporter to InMemoryLogRecordExporter in several tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-instrumentation: allow to skip all instrumentations loading with a wildcard\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-redis\u003c/code\u003e: add missing copyright header for opentelemetry-instrumentation-redis\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3976\"\u003e#3976\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: bedrock: Add safety check for bedrock ConverseStream responses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: bedrock: only decode JSON input buffer in Anthropic Claude streaming\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3875\"\u003e#3875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-client\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e: Fix readme links and text\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3902\"\u003e#3902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aws-lambda\u003c/code\u003e: Fix ImportError with slash-delimited handler paths\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3894\"\u003e#3894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Prevent deadlock when parent span is not part of the batch\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3900\"\u003e#3900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg2\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3882\"\u003e#3882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e: delay initialization of tracer, meter and excluded urls to instrumentation for testability\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3836\"\u003e#3836\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace Python 3.14-deprecated \u003ccode\u003easyncio.iscoroutinefunction\u003c/code\u003e with \u003ccode\u003einspect.iscoroutinefunction\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3880\"\u003e#3880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-elasticsearch\u003c/code\u003e: Enhance elasticsearch query body sanitization\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3919\"\u003e#3919\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.29.0 to 1.39.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Convert objects of any type other than AnyValue in attributes to string to be exportable\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4808\"\u003e#4808\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edocs: Added sqlcommenter example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4734\"\u003e#4734\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebuild: bump ruff to 0.14.1\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4782\"\u003e#4782\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e as an optional dependency to \u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e\nand \u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4760\"\u003e#4760\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esemantic-conventions: Bump to 1.38.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4791\"\u003e#4791\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Remove LogData and extend SDK LogRecord to have instrumentation scope\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4676\"\u003e#4676\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Rename several classes from Log to LogRecord\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4647\"\u003e#4647\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration Guide:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eLogData\u003c/code\u003e has been removed. Users should update their code as follows:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Exporters:\u003c/strong\u003e Change from \u003ccode\u003eSequence[LogData]\u003c/code\u003e to \u003ccode\u003eSequence[ReadableLogRecord]\u003c/code\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef export(self, batch: Sequence[LogData]) -\u0026gt; LogRecordExportResult:\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadableLogRecord\ndef export(self, batch: Sequence[ReadableLogRecord]) -\u0026gt; LogRecordExportResult:\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Processors:\u003c/strong\u003e Use \u003ccode\u003eReadWriteLogRecord\u003c/code\u003e for processing, \u003ccode\u003eReadableLogRecord\u003c/code\u003e for exporting\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef on_emit(self, log_data: LogData):\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadWriteLogRecord, ReadableLogRecord\ndef on_emit(self, log_record: ReadWriteLogRecord):\n# Convert to ReadableLogRecord before exporting\nreadable = ReadableLogRecord(\nlog_record=log_record.log_record,\nresource=log_record.resource or Resource.create({}),\ninstrumentation_scope=log_record.instrumentation_scope,\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/dc0a9b340446b985cdebb6f45d70eab3e042c92a\"\u003e\u003ccode\u003edc0a9b3\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.0/0.60b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4833\"\u003e#4833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/cd150c3a201df6ff55c5a9b40ee877717d973a82\"\u003e\u003ccode\u003ecd150c3\u003c/code\u003e\u003c/a\u003e Fix changelog before the release (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4831\"\u003e#4831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/382fa46621953a80a6659bc4fb0a8266c4c982fc\"\u003e\u003ccode\u003e382fa46\u003c/code\u003e\u003c/a\u003e Mark events API/SDK as deprecated (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5307dd0a6cabea2877a67e067cf81be5285d586b\"\u003e\u003ccode\u003e5307dd0\u003c/code\u003e\u003c/a\u003e Fix errors on serialization of values that are not AnyValue in LogRecord attr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/8615ba0a0bc675d6ccad6693c637f009fec727eb\"\u003e\u003ccode\u003e8615ba0\u003c/code\u003e\u003c/a\u003e Fix type checking for built in metric exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4820\"\u003e#4820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/62da90eda4b1348730180ce2fa0aeae72e09c7ed\"\u003e\u003ccode\u003e62da90e\u003c/code\u003e\u003c/a\u003e Add lmolkova to approvers (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4812\"\u003e#4812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/61bda605d71498b15a13a106ed7564eaea9f642b\"\u003e\u003ccode\u003e61bda60\u003c/code\u003e\u003c/a\u003e Fix meeting and typos (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4817\"\u003e#4817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/546e47b0001b40ca777515325953106e81ed8dbd\"\u003e\u003ccode\u003e546e47b\u003c/code\u003e\u003c/a\u003e [logs-api/sdk] Rename several classes from Log to LogRecord (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4647\"\u003e#4647\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5ddb8e7407a06b560c5483f7649913e170229936\"\u003e\u003ccode\u003e5ddb8e7\u003c/code\u003e\u003c/a\u003e [logs-sdk] Remove LogData and extend SDK LogRecord to have instrumentation sc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/20dedf5f7fa4affc15bda27067bacc7cf366fac8\"\u003e\u003ccode\u003e20dedf5\u003c/code\u003e\u003c/a\u003e Add gcp auth package as optional dependency to the HTTP/GRPC OTLP Exporters (...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.29.0...v1.39.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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 2.0.7 to 4.0.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.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).\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\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/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\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v3.3.0\"\u003e3.3.0\u003c/a\u003e - 2025-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eexc_info_as_array\u003c/code\u003e and \u003ccode\u003estack_info_as_array\u003c/code\u003e options are added to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e allowing both to be encoded as list of lines instead of a single multi-line string. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/35\"\u003e#35\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003emsgspec-python313-pre\u003c/code\u003e from \u003ccode\u003edev\u003c/code\u003e dependencies preventing potential RCE. Details: \u003ca href=\"https://github.com/nhairs/python-json-logger/security/advisories/GHSA-wmxh-pxcx-9w24#advisory-comment-121307\"\u003eGHSA-wmxh-pxcx-9w24\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/1hakusai1\"\u003e\u003ccode\u003e@​1hakusai1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/omnigodz\"\u003e\u003ccode\u003e@​omnigodz\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.0...v3.2.1\"\u003e3.2.1\u003c/a\u003e - 2024-12-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImport error on \u003ccode\u003eimport pythonjsonlogger.jsonlogger\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/29\"\u003e#29\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.1.0...v3.2.0\"\u003e3.2.0\u003c/a\u003e - 2024-12-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epythonjsonlogger.[ORJSON,MSGSPEC]_AVAILABLE\u003c/code\u003e no longer imports the respective package when determining availability.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epythonjsonlogger.[orjson,msgspec]\u003c/code\u003e now throws a \u003ccode\u003epythonjsonlogger.exception.MissingPackageError\u003c/code\u003e when required libraries are not available. These contain more information about what is missing whilst still being an \u003ccode\u003eImportError\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edefaults\u003c/code\u003e parameter is no longer ignored and now conforms to the standard library. Setting a defaults dictionary will add the specified keys if the those keys do not exist in a record or weren't passed by the \u003ccode\u003eextra\u003c/code\u003e parameter when logging a message.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etyping_extensions\u003c/code\u003e is only installed on Python version \u0026lt; 3.10.\u003c/li\u003e\n\u003cli\u003eSupport Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v2.0.7...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.7.4 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature...\n\n_Description has been truncated_","html_url":"https://github.com/CharlieTLe/opentelemetry-demo/pull/432","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CharlieTLe%2Fopentelemetry-demo/issues/432","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/432/packages"},{"uuid":"3683722062","node_id":"PR_kwDONF5WLM62fb-4","number":428,"state":"closed","title":"chore: bump the pip-production-dependencies group across 4 directories with 48 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-03T23:27:13.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-02T02:26:14.000Z","updated_at":"2025-12-03T23:27:15.000Z","time_to_close":162059,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"pip-production-dependencies","update_count":48,"packages":[{"name":"grpcio-health-checking","old_version":"1.68.1","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.68.1","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.29.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"2.0.7","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.7.4","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.1.5","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.1.3","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2024.8.30","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.0","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.7","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.15","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.0","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.66.0","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"locust","old_version":"2.32.4","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.5.3","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.29.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.29.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.29.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"5.29.1","new_version":"6.33.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.0","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 47 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.68.1` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.68.1` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.4` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.8.30` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.0` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.15` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.66.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.32.4` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.50b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.1` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.0` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.0` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 43 updates in the /src/loadgenerator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.4` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.8.30` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.0` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.15` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.66.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.32.4` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.50b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.1` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.0` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.0` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 11 updates in the /src/recommendationservice directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.68.1` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.68.1` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.4` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `7.1.3` |\n| [grpcio-tools](https://github.com/grpc/grpc) | `1.68.1` | `1.76.0` |\n\nBumps the pip-production-dependencies group with 1 update in the /src/recommendationservice/genproto directory: [grpcio-tools](https://github.com/grpc/grpc).\n\nUpdates `grpcio-health-checking` from 1.68.1 to 1.76.0\n\nUpdates `grpcio` from 1.68.1 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.68.1...v1.76.0\"\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.50b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\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.29.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.29.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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 2.0.7 to 4.0.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.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).\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\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/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\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v3.3.0\"\u003e3.3.0\u003c/a\u003e - 2025-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eexc_info_as_array\u003c/code\u003e and \u003ccode\u003estack_info_as_array\u003c/code\u003e options are added to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e allowing both to be encoded as list of lines instead of a single multi-line string. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/35\"\u003e#35\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003emsgspec-python313-pre\u003c/code\u003e from \u003ccode\u003edev\u003c/code\u003e dependencies preventing potential RCE. Details: \u003ca href=\"https://github.com/nhairs/python-json-logger/security/advisories/GHSA-wmxh-pxcx-9w24#advisory-comment-121307\"\u003eGHSA-wmxh-pxcx-9w24\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/1hakusai1\"\u003e\u003ccode\u003e@​1hakusai1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/omnigodz\"\u003e\u003ccode\u003e@​omnigodz\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.0...v3.2.1\"\u003e3.2.1\u003c/a\u003e - 2024-12-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImport error on \u003ccode\u003eimport pythonjsonlogger.jsonlogger\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/29\"\u003e#29\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.1.0...v3.2.0\"\u003e3.2.0\u003c/a\u003e - 2024-12-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epythonjsonlogger.[ORJSON,MSGSPEC]_AVAILABLE\u003c/code\u003e no longer imports the respective package when determining availability.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epythonjsonlogger.[orjson,msgspec]\u003c/code\u003e now throws a \u003ccode\u003epythonjsonlogger.exception.MissingPackageError\u003c/code\u003e when required libraries are not available. These contain more information about what is missing whilst still being an \u003ccode\u003eImportError\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edefaults\u003c/code\u003e parameter is no longer ignored and now conforms to the standard library. Setting a defaults dictionary will add the specified keys if the those keys do not exist in a record or weren't passed by the \u003ccode\u003eextra\u003c/code\u003e parameter when logging a message.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etyping_extensions\u003c/code\u003e is only installed on Python version \u0026lt; 3.10.\u003c/li\u003e\n\u003cli\u003eSupport Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v2.0.7...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.7.4 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-...\n\n_Description has been truncated_","html_url":"https://github.com/CharlieTLe/opentelemetry-demo/pull/428","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CharlieTLe%2Fopentelemetry-demo/issues/428","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/428/packages"},{"uuid":"3679917932","node_id":"PR_kwDOO1JBg862SgIi","number":122,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 46 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-18T07:23:44.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-01T08:46:48.000Z","updated_at":"2025-12-18T07:23:46.000Z","time_to_close":1463816,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":46,"packages":[{"name":"grpcio-health-checking","old_version":"1.71.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.0","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"openfeature-provider-ofrep","old_version":"0.1.1","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 46 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 41 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 9 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.71.0 to 1.76.0\n\nUpdates `grpcio` from 1.71.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.71.0...v1.76.0\"\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.51b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\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.30.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/347517a7ccaf145a940fc6e2a37a8d1df621f3a3\"\u003e347517a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ff0a06e (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/498\"\u003e#498\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/c722cf0239f2b9b95a1214b99447a9316c2c73d8\"\u003ec722cf0\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-feature/python-sdk/commit/2d78d33d8a0e63c80c9ef330debd77fe80d3445f\"\u003e\u003ccode\u003e2d78d33\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e\u003ccode\u003e81a1d95\u003c/code\u003e\u003c/a\u003e chore: remove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e\u003ccode\u003e74409bf\u003c/code\u003e\u003c/a\u003e chore: add missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e\u003ccode\u003e837fef9\u003c/code\u003e\u003c/a\u003e chore: replace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003e\u003ccode\u003ede37144\u003c/code\u003e\u003c/a\u003e fix: fix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"...\n\n_Description has been truncated_","html_url":"https://github.com/Vs7sai/cd-cd/pull/122","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vs7sai%2Fcd-cd/issues/122","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/122/packages"},{"uuid":"3679852427","node_id":"PR_kwDON4I6J862SR1p","number":184,"state":"closed","title":"Bump the pip-production-dependencies group across 3 directories with 45 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-18T07:20:01.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-01T08:28:09.000Z","updated_at":"2025-12-18T07:20:02.000Z","time_to_close":1464712,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-production-dependencies","update_count":45,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.1","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 45 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.1` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 41 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.1` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 9 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.1` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.51b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\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.30.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/347517a7ccaf145a940fc6e2a37a8d1df621f3a3\"\u003e347517a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ff0a06e (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/498\"\u003e#498\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/c722cf0239f2b9b95a1214b99447a9316c2c73d8\"\u003ec722cf0\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-feature/python-sdk/commit/2d78d33d8a0e63c80c9ef330debd77fe80d3445f\"\u003e\u003ccode\u003e2d78d33\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e\u003ccode\u003e81a1d95\u003c/code\u003e\u003c/a\u003e chore: remove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e\u003ccode\u003e74409bf\u003c/code\u003e\u003c/a\u003e chore: add missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e\u003ccode\u003e837fef9\u003c/code\u003e\u003c/a\u003e chore: replace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003e\u003ccode\u003ede37144\u003c/code\u003e\u003c/a\u003e fix: fix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003e\u003ccode\u003eb418cb0...\n\n_Description has been truncated_","html_url":"https://github.com/mokadir/mkadir-opentelemetry/pull/184","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mokadir%2Fmkadir-opentelemetry/issues/184","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/184/packages"},{"uuid":"3679712971","node_id":"PR_kwDOOZWQFs62RzC0","number":133,"state":"closed","title":"Bump the pip-production-dependencies group across 3 directories with 46 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-18T06:24:09.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-01T07:48:07.000Z","updated_at":"2025-12-18T06:24:11.000Z","time_to_close":1463762,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-production-dependencies","update_count":46,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.0","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"openfeature-provider-ofrep","old_version":"0.1.1","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 46 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 41 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 9 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.51b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\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.30.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/347517a7ccaf145a940fc6e2a37a8d1df621f3a3\"\u003e347517a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ff0a06e (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/498\"\u003e#498\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/c722cf0239f2b9b95a1214b99447a9316c2c73d8\"\u003ec722cf0\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-feature/python-sdk/commit/2d78d33d8a0e63c80c9ef330debd77fe80d3445f\"\u003e\u003ccode\u003e2d78d33\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e\u003ccode\u003e81a1d95\u003c/code\u003e\u003c/a\u003e chore: remove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e\u003ccode\u003e74409bf\u003c/code\u003e\u003c/a\u003e chore: add missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e\u003ccode\u003e837fef9\u003c/code\u003e\u003c/a\u003e chore: replace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003e\u003ccode\u003ede37144\u003c/code\u003e\u003c/a\u003e fix: fix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"...\n\n_Description has been truncated_","html_url":"https://github.com/EagleOpsCorp/app-backend/pull/133","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/EagleOpsCorp%2Fapp-backend/issues/133","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/133/packages"},{"uuid":"3669869372","node_id":"PR_kwDOAE7iNM61xdLe","number":2588,"state":"open","title":"chore(deps): bump pyzmq from 23.2.1 to 27.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-11-27T05:01:02.000Z","updated_at":"2025-11-27T05:01:39.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"pyzmq","old_version":"23.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyzmq](https://github.com/zeromq/pyzmq) from 23.2.1 to 27.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zeromq/pyzmq/releases\"\u003epyzmq's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev27.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.1.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.2'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.1'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev26.4.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\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/zeromq/pyzmq/commit/425a21fd2ae3bc50d81176ff9a8253af3535a3d4\"\u003e\u003ccode\u003e425a21f\u003c/code\u003e\u003c/a\u003e Bump to 27.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/c6bf62145e912a95c0dfccff4609d1e52b464ceb\"\u003e\u003ccode\u003ec6bf621\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2127\"\u003e#2127\u003c/a\u003e from minrk/271\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/3558cceb69d9d5ca1ac14e2dc300060232371e86\"\u003e\u003ccode\u003e3558cce\u003c/code\u003e\u003c/a\u003e release 27.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/17b9ce8d4e7bbe4f35271a303a73498cff46d9fa\"\u003e\u003ccode\u003e17b9ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2126\"\u003e#2126\u003c/a\u003e from minrk/compile-time-drafts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/83040f7467f268c1cddfd26efac7790bdd7d64e0\"\u003e\u003ccode\u003e83040f7\u003c/code\u003e\u003c/a\u003e restore zmq.DRAFT_API meaning drafts are actually available\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/e21dcd8e0bfa8194230b588864b03cbbb839ea10\"\u003e\u003ccode\u003ee21dcd8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2124\"\u003e#2124\u003c/a\u003e from zeromq/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/26233552a6c6557f2749265d3909a466ac57c3c3\"\u003e\u003ccode\u003e2623355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/684b2e5cb40b764ca45875a0c0b3af6d4662d46c\"\u003e\u003ccode\u003e684b2e5\u003c/code\u003e\u003c/a\u003e Bump to 27.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/912e61982a3413d9b7cdc1786fac3b5d5fa64620\"\u003e\u003ccode\u003e912e619\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2122\"\u003e#2122\u003c/a\u003e from minrk/devmode-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/69f8d905855421fb69e1783c71a4c1502c299bd8\"\u003e\u003ccode\u003e69f8d90\u003c/code\u003e\u003c/a\u003e changelog for 27.0.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/zeromq/pyzmq/compare/v23.2.1...v27.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pyzmq\u0026package-manager=pip\u0026previous-version=23.2.1\u0026new-version=27.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/Screenly/Anthias/pull/2588","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Screenly%2FAnthias/issues/2588","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2588/packages"},{"uuid":"3669077027","node_id":"PR_kwDONnxDPM61u2ZY","number":161,"state":"closed","title":"Bump the pip-production-dependencies group across 3 directories with 49 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-26T23:10:11.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-26T21:23:20.000Z","updated_at":"2026-01-26T23:10:13.000Z","time_to_close":5276811,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-production-dependencies","update_count":49,"packages":[{"name":"grpcio-health-checking","old_version":"1.60.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.60.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.25.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"2.0.7","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.7.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.1.5","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.1.3","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"5.9.6","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2023.7.22","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.7","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.14","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.0.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"4.0.0","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"23.9.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.0.11","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.61.0","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.0.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.4","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"itsdangerous","old_version":"2.1.2","new_version":"2.2.0","repository_url":"https://github.com/pallets/itsdangerous"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"locust","old_version":"2.18.2","new_version":"2.42.5","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"3.4.0","new_version":"5.0.0","repository_url":"https://github.com/SvenskaSpel/locust-plugins"},{"name":"markupsafe","old_version":"2.1.3","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.0.7","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.25.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.25.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.25.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"4.25.2","new_version":"6.33.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"25.1.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"typing-extensions","old_version":"4.8.0","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.0.7","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.0.1","new_version":"3.1.3","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.16.0","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"6.1","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 49 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.60.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.60.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `5.9.6` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2023.7.22` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.14` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.0.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `4.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `23.9.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.0.11` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.61.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.0.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.4` | `3.11` |\n| [itsdangerous](https://github.com/pallets/itsdangerous) | `2.1.2` | `2.2.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.18.2` | `2.42.5` |\n| [locust-plugins](https://github.com/SvenskaSpel/locust-plugins) | `3.4.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.3` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.0.7` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.46b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `4.25.2` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `25.1.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.8.0` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.0.7` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.0.1` | `3.1.3` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.16.0` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `6.1` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 45 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `5.9.6` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2023.7.22` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.14` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.0.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `4.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `23.9.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.0.11` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.61.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.0.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.4` | `3.11` |\n| [itsdangerous](https://github.com/pallets/itsdangerous) | `2.1.2` | `2.2.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.18.2` | `2.42.5` |\n| [locust-plugins](https://github.com/SvenskaSpel/locust-plugins) | `3.4.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.3` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.0.7` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.46b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `4.25.2` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `25.1.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.8.0` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.0.7` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.0.1` | `3.1.3` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.16.0` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `6.1` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 10 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.60.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.60.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `5.9.6` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.60.0 to 1.76.0\n\nUpdates `grpcio` from 1.60.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.60.0...v1.76.0\"\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.46b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\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.25.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.25.0...v1.38.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.0.0 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.0.1] - 2024-01-23\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGracefully handle code which has been imported from a zipfile (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/456\"\u003e#456\u003c/a\u003e by [\u003ca href=\"https://github.com/samwyma\"\u003e\u003ccode\u003e@​samwyma\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eAllow modules using \u003ccode\u003eload_dotenv\u003c/code\u003e to be reloaded when launched in a separate thread (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/497\"\u003e#497\u003c/a\u003e by [\u003ca href=\"https://github.com/freddyaboulton\"\u003e\u003ccode\u003e@​freddyaboulton\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eFix file not closed after deletion, handle error in the rewrite function (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/469\"\u003e#469\u003c/a\u003e by [\u003ca href=\"https://github.com/Qwerty-133\"\u003e\u003ccode\u003e@​Qwerty-133\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse pathlib.Path in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/466\"\u003e#466\u003c/a\u003e by [\u003ca href=\"https://github.com/eumiro\"\u003e\u003ccode\u003e@​eumiro\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eFix year in release date in changelog.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/454\"\u003e#454\u003c/a\u003e by [\u003ca href=\"https://github.com/jankislinger\"\u003e\u003ccode\u003e@​jankislinger\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eUse https in README links (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/474\"\u003e#474\u003c/a\u003e by [\u003ca href=\"https://github.com/Nicals\"\u003e\u003ccode\u003e@​Nicals\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.0...v1.2.1\"\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 2.0.7 to 4.0.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.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).\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\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/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\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v3.3.0\"\u003e3.3.0\u003c/a\u003e - 2025-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eexc_info_as_array\u003c/code\u003e and \u003ccode\u003estack_info_as_array\u003c/code\u003e options are added to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e allowing both to be encoded as list of lines instead of a single multi-line string. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/35\"\u003e#35\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003emsgspec-python313-pre\u003c/code\u003e from \u003ccode\u003edev\u003c/code\u003e dependencies preventing potential RCE. Details: \u003ca href=\"https://github.com/nhairs/python-json-logger/security/advisories/GHSA-wmxh-pxcx-9w24#advisory-comment-121307\"\u003eGHSA-wmxh-pxcx-9w24\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/1hakusai1\"\u003e\u003ccode\u003e@​1hakusai1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/omnigodz\"\u003e\u003ccode\u003e@​omnigodz\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.0...v3.2.1\"\u003e3.2.1\u003c/a\u003e - 2024-12-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImport error on \u003ccode\u003eimport pythonjsonlogger.jsonlogger\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/29\"\u003e#29\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.1.0...v3.2.0\"\u003e3.2.0\u003c/a\u003e - 2024-12-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epythonjsonlogger.[ORJSON,MSGSPEC]_AVAILABLE\u003c/code\u003e no longer imports the respective package when determining availability.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epythonjsonlogger.[orjson,msgspec]\u003c/code\u003e now throws a \u003ccode\u003epythonjsonlogger.exception.MissingPackageError\u003c/code\u003e when required libraries are not available. These contain more information about what is missing whilst still being an \u003ccode\u003eImportError\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edefaults\u003c/code\u003e parameter is no longer ignored and now conforms to the standard library. Setting a defaults dictionary will add the specified keys if the those keys do not exist in a record or weren't passed by the \u003ccode\u003eextra\u003c/code\u003e parameter when logging a message.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etyping_extensions\u003c/code\u003e is only installed on Python version \u0026lt; 3.10.\u003c/li\u003e\n\u003cli\u003eSupport Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v2.0.7...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.7.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb...\n\n_Description has been truncated_","html_url":"https://github.com/Jineshkumar1/opentelemetry-demo/pull/161","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jineshkumar1%2Fopentelemetry-demo/issues/161","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/161/packages"},{"uuid":"3656659945","node_id":"PR_kwDOI11r5c61FR4_","number":343,"state":"open","title":"chore(deps-dev): Bump the pip-version-updates group across 1 directory with 29 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":"2025-11-24T00:24:28.000Z","updated_at":"2025-11-24T00:24:44.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): Bump","group_name":"pip-version-updates","update_count":29,"packages":[{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.14.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"ruff","old_version":"0.11.0","new_version":"0.14.6","repository_url":"https://github.com/astral-sh/ruff"},{"name":"xdoctest","old_version":"1.2.0","new_version":"1.3.0","repository_url":"https://github.com/Erotemic/xdoctest"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"beautifulsoup4","old_version":"4.13.3","new_version":"4.14.2"},{"name":"comm","old_version":"0.2.2","new_version":"0.2.3","repository_url":"https://github.com/ipython/comm"},{"name":"debugpy","old_version":"1.8.13","new_version":"1.8.17","repository_url":"https://github.com/microsoft/debugpy"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"docstring-parser-fork","old_version":"0.0.12","new_version":"0.0.14","repository_url":"https://github.com/rr-/docstring_parser"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.1.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jupyter-core","old_version":"5.7.2","new_version":"5.8.1","repository_url":"https://github.com/jupyter/jupyter_core"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"prompt-toolkit","old_version":"3.0.50","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytz","old_version":"2025.1","new_version":"2025.2","repository_url":"https://github.com/stub42/pytz"},{"name":"pywin32","old_version":"309","new_version":"311","repository_url":"https://github.com/mhammond/pywin32"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"pyzmq","old_version":"26.3.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.16"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.6","new_version":"2.7","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.13.2","repository_url":"https://github.com/python/typing_extensions"},{"name":"virtualenv","old_version":"20.29.3","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.2.14","repository_url":"https://github.com/jquast/wcwidth"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-version-updates group with 29 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.14.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.0` | `0.14.6` |\n| [xdoctest](https://github.com/Erotemic/xdoctest) | `1.2.0` | `1.3.0` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.3` | `4.14.2` |\n| [comm](https://github.com/ipython/comm) | `0.2.2` | `0.2.3` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.13` | `1.8.17` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [docstring-parser-fork](https://github.com/rr-/docstring_parser) | `0.0.12` | `0.0.14` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.1` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.1.0` |\n| [jupyter-core](https://github.com/jupyter/jupyter_core) | `5.7.2` | `5.8.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.50` | `3.0.52` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pytz](https://github.com/stub42/pytz) | `2025.1` | `2025.2` |\n| [pywin32](https://github.com/mhammond/pywin32) | `309` | `311` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.3.0` | `27.1.0` |\n| ruamel-yaml | `0.18.10` | `0.18.16` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.6` | `2.7` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.13.2` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.29.3` | `20.35.4` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.2.14` |\n\n\nUpdates `pygments` from 2.19.1 to 2.19.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLua: Fix regression introduced in 2.19.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2882\"\u003e#2882\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2839\"\u003e#2839\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/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.19.2\u003c/h2\u003e\n\u003cp\u003e(released June 21st, 2025)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLua: Fix regression introduced in 2.19.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2882\"\u003e#2882\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2839\"\u003e#2839\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/pygments/pygments/commit/cfca62e6e95136e48a255e8cbffb0bbe1d98456c\"\u003e\u003ccode\u003ecfca62e\u003c/code\u003e\u003c/a\u003e Prepare v2.19.2 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/6688300df2ea289a6137c7ee9c78d0bb95683b5c\"\u003e\u003ccode\u003e6688300\u003c/code\u003e\u003c/a\u003e Disable pyodide (currently broken.)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/66997c3e302226a95c22cdaebf827444327920fa\"\u003e\u003ccode\u003e66997c3\u003c/code\u003e\u003c/a\u003e Update ruff version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/94dda77d69a6d6c47c33f06ce2425e7f306154a2\"\u003e\u003ccode\u003e94dda77\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/26634c856cefea620571123577d1f8cf09589ed8\"\u003e\u003ccode\u003e26634c8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2882\"\u003e#2882\u003c/a\u003e from thavelick/fix_lua_runaway_regex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/b6a51ece09e31d3db2b732c8536a533b6de74768\"\u003e\u003ccode\u003eb6a51ec\u003c/code\u003e\u003c/a\u003e fix lua regex causing runaway backtracking.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/edef94d66c2d70f05a86ac6098a69ab253b8d946\"\u003e\u003ccode\u003eedef94d\u003c/code\u003e\u003c/a\u003e Investigation for \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2839\"\u003e#2839\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/fb6a00ef872e45a23212c214b8494ebedbd4709b\"\u003e\u003ccode\u003efb6a00e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2837\"\u003e#2837\u003c/a\u003e from dlazin/sql-cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/bf7aa2368fe7e0f42d4543781f0b00b4565b3995\"\u003e\u003ccode\u003ebf7aa23\u003c/code\u003e\u003c/a\u003e Clean up sql.py\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygments/pygments/compare/2.19.1...2.19.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-mock` from 3.14.0 to 3.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/releases\"\u003epytest-mock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.14.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/503\"\u003e#503\u003c/a\u003e: Python 3.14 is now officially supported.\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/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst\"\u003epytest-mock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.14.1 (2025-05-26)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#503](https://github.com/pytest-dev/pytest-mock/issues/503) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/503\u0026gt;\u003c/code\u003e_: Python 3.14 is now officially supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/34dd61aa459520e096c70eb8a573700fc17c5de8\"\u003e\u003ccode\u003e34dd61a\u003c/code\u003e\u003c/a\u003e Release 3.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/299adb96640a51a48b5af9a69064b9edd7a9fe90\"\u003e\u003ccode\u003e299adb9\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/503\"\u003e#503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/f5fcef726a8ba4a54cd138321ae9771648a0bc8a\"\u003e\u003ccode\u003ef5fcef7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/504\"\u003e#504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/bae64d8c8ef44a7075d63f1d7f6ac36b76b61ce4\"\u003e\u003ccode\u003ebae64d8\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/502\"\u003e#502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/824f334cc4b39eb05c0093fc43411ada3fdc8300\"\u003e\u003ccode\u003e824f334\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/501\"\u003e#501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/db1add63034430d66835c78992c0ed9b1e331cfd\"\u003e\u003ccode\u003edb1add6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/500\"\u003e#500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/48ac8746b6587457becf31d1272947de6d65e0d0\"\u003e\u003ccode\u003e48ac874\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/fe7ad9aab6a8e15e5762d5bdc85402249f2ca7ef\"\u003e\u003ccode\u003efe7ad9a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/498\"\u003e#498\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/7857e608242aeb3d4b771296ee41d258b1a13838\"\u003e\u003ccode\u003e7857e60\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/497\"\u003e#497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/a8b97ea2ca86e9cfa553e395cf20352a881d8eaf\"\u003e\u003ccode\u003ea8b97ea\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/496\"\u003e#496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-mock/compare/v3.14.0...v3.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.11.0 to 0.14.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.14.6\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2025-11-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Support new PySNMP API paths (\u003ccode\u003eS508\u003c/code\u003e, \u003ccode\u003eS509\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21374\"\u003e#21374\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdjust own-line comment placement between branches (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21185\"\u003e#21185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error when formatting attribute expressions with outer parentheses, parenthesized value, and trailing comment on value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20418\"\u003e#20418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix panic when formatting comments in unary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21501\"\u003e#21501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003efmt: skip\u003c/code\u003e for compound statements on a single line (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20633\"\u003e#20633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Fix \u003ccode\u003eFURB103\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21454\"\u003e#21454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Fix false positive for complex conversion specifiers in \u003ccode\u003elogging-eager-conversion\u003c/code\u003e (\u003ccode\u003eRUF065\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid false positive on \u003ccode\u003eClassVar\u003c/code\u003e reassignment (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21478\"\u003e#21478\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRender hyperlinks for lint errors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21514\"\u003e#21514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eruff analyze\u003c/code\u003e option to skip over imports in \u003ccode\u003eTYPE_CHECKING\u003c/code\u003e blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21472\"\u003e#21472\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit \u003ccode\u003eeglot-format\u003c/code\u003e hook to eglot-managed Python buffers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21459\"\u003e#21459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention \u003ccode\u003eforce-exclude\u003c/code\u003e in \u0026quot;Configuration \u0026gt; Python file discovery\u0026quot; (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21500\"\u003e#21500\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gauthsvenkat\"\u003e\u003ccode\u003e@​gauthsvenkat\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thamer\"\u003e\u003ccode\u003e@​thamer\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Ruchir28\"\u003e\u003ccode\u003e@​Ruchir28\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thejcannon\"\u003e\u003ccode\u003e@​thejcannon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danparizher\"\u003e\u003ccode\u003e@​danparizher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.14.6\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.6/ruff-installer.sh | sh\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.14.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2025-11-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Support new PySNMP API paths (\u003ccode\u003eS508\u003c/code\u003e, \u003ccode\u003eS509\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21374\"\u003e#21374\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdjust own-line comment placement between branches (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21185\"\u003e#21185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error when formatting attribute expressions with outer parentheses, parenthesized value, and trailing comment on value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20418\"\u003e#20418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix panic when formatting comments in unary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21501\"\u003e#21501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003efmt: skip\u003c/code\u003e for compound statements on a single line (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20633\"\u003e#20633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Fix \u003ccode\u003eFURB103\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21454\"\u003e#21454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Fix false positive for complex conversion specifiers in \u003ccode\u003elogging-eager-conversion\u003c/code\u003e (\u003ccode\u003eRUF065\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid false positive on \u003ccode\u003eClassVar\u003c/code\u003e reassignment (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21478\"\u003e#21478\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRender hyperlinks for lint errors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21514\"\u003e#21514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eruff analyze\u003c/code\u003e option to skip over imports in \u003ccode\u003eTYPE_CHECKING\u003c/code\u003e blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21472\"\u003e#21472\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit \u003ccode\u003eeglot-format\u003c/code\u003e hook to eglot-managed Python buffers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21459\"\u003e#21459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention \u003ccode\u003eforce-exclude\u003c/code\u003e in \u0026quot;Configuration \u0026gt; Python file discovery\u0026quot; (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21500\"\u003e#21500\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gauthsvenkat\"\u003e\u003ccode\u003e@​gauthsvenkat\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thamer\"\u003e\u003ccode\u003e@​thamer\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Ruchir28\"\u003e\u003ccode\u003e@​Ruchir28\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thejcannon\"\u003e\u003ccode\u003e@​thejcannon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danparizher\"\u003e\u003ccode\u003e@​danparizher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.14.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2025-11-13.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Apply \u003ccode\u003eSIM113\u003c/code\u003e when index variable is of type \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21395\"\u003e#21395\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/59c6cb521d26380120f8522476fd09d296bf4f2e\"\u003e\u003ccode\u003e59c6cb5\u003c/code\u003e\u003c/a\u003e Bump 0.14.6 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/21558\"\u003e#21558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/54dba15088ced32c31592ab44ddfdf40614002bb\"\u003e\u003ccode\u003e54dba15\u003c/code\u003e\u003c/a\u003e [ty] Improve debug messages when imports fail (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/21555\"\u003e#21555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1af318534a01ba6be69d7d77c33e96080635a8af\"\u003e\u003ccode\u003e1af3185\u003c/code\u003e\u003c/a\u003e [ty] Add support for relative import completions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/553e5686248e86b9c781af77c714adc229bf8cc5\"\u003e\u003ccode\u003e553e568\u003c/code\u003e\u003c/a\u003e [ty] Refactor detection of import statements for completions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/cdef3f5ab8115e2581e080341d4bab932d905af4\"\u003e\u003ccode\u003ecdef3f5\u003c/code\u003e\u003c/a\u003e [ty] Use dedicated collector for completions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/617882242719af179a42be68170f9de9d83174f4\"\u003e\u003ccode\u003e6178822\u003c/code\u003e\u003c/a\u003e [ty] Attach subdiagnostics to \u003ccode\u003eunresolved-import\u003c/code\u003e errors for relative imports...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6b7adb0537d1a57f26cf462a637af483e0ba2c75\"\u003e\u003ccode\u003e6b7adb0\u003c/code\u003e\u003c/a\u003e [ty] support PEP 613 type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/06941c1987bd4fe2b54d99b5514784472cabc0b3\"\u003e\u003ccode\u003e06941c1\u003c/code\u003e\u003c/a\u003e [ty] More low-hanging fruit for inlay hint goto-definition (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/21548\"\u003e#21548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eb7c098d6b70aacbaebe8b7c8d7710ad4ad0f46b\"\u003e\u003ccode\u003eeb7c098\u003c/code\u003e\u003c/a\u003e [ty] implement \u003ccode\u003eTypedDict\u003c/code\u003e structural assignment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/21467\"\u003e#21467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1b28fc1f1417284a075afa4a18c5e9d31a7d8620\"\u003e\u003ccode\u003e1b28fc1\u003c/code\u003e\u003c/a\u003e [ty] Add more random TypeDetails and tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/21546\"\u003e#21546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.11.0...0.14.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `xdoctest` from 1.2.0 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Erotemic/xdoctest/releases\"\u003exdoctest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.3.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew \u003ccode\u003eASYNC\u003c/code\u003e basic directive to hold the asyncio event loop in any section of\ncode. Useful for multitasking tests.\u003c/li\u003e\n\u003cli\u003eSupport for 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003e16806_WORKAROUND\u003c/code\u003e as it is not longer needed for Python 3.8+\u003c/li\u003e\n\u003cli\u003eRemoved deprecated --xdoc-force-dynamic and --allow-xdoc-dynamic flags\u003c/li\u003e\n\u003cli\u003eImproved speed (~6x) of doctest collection when running in pytest\u003c/li\u003e\n\u003cli\u003eUses pytest plugin system to disable stdlib doctest instead of monkey patching.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed incorrect return type in docstrings\u003c/li\u003e\n\u003cli\u003eThe doctest parser no longer expand tabs to spaces\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStart branch for dev/1.2.1\nby \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/162\"\u003eErotemic/xdoctest#162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDev Branch: 1.2.1  by \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/163\"\u003eErotemic/xdoctest#163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 313 in CI by \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/165\"\u003eErotemic/xdoctest#165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDev/1.2.1 by \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/166\"\u003eErotemic/xdoctest#166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003estatic_parse update by \u003ca href=\"https://github.com/lczyk\"\u003e\u003ccode\u003e@​lczyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/168\"\u003eErotemic/xdoctest#168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDev/1.2.1 by \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/170\"\u003eErotemic/xdoctest#170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: dont expand tabs to spaces by \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/172\"\u003eErotemic/xdoctest#172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisable \u003ccode\u003e_pytest.doctest\u003c/code\u003e via the plugin system by \u003ca href=\"https://github.com/TTsangSC\"\u003e\u003ccode\u003e@​TTsangSC\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/174\"\u003eErotemic/xdoctest#174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove async support with a new directive by \u003ca href=\"https://github.com/x42005e1f\"\u003e\u003ccode\u003e@​x42005e1f\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/176\"\u003eErotemic/xdoctest#176\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDev/1.3.0 by \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/177\"\u003eErotemic/xdoctest#177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003easyncio.Runner\u003c/code\u003e on Python\u0026gt;=3.11 by \u003ca href=\"https://github.com/x42005e1f\"\u003e\u003ccode\u003e@​x42005e1f\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/178\"\u003eErotemic/xdoctest#178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate documentation according to the latest changes by \u003ca href=\"https://github.com/x42005e1f\"\u003e\u003ccode\u003e@​x42005e1f\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/179\"\u003eErotemic/xdoctest#179\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/lczyk\"\u003e\u003ccode\u003e@​lczyk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/168\"\u003eErotemic/xdoctest#168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TTsangSC\"\u003e\u003ccode\u003e@​TTsangSC\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/174\"\u003eErotemic/xdoctest#174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/x42005e1f\"\u003e\u003ccode\u003e@​x42005e1f\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/176\"\u003eErotemic/xdoctest#176\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Erotemic/xdoctest/compare/v1.2.0...refs/heads/release\"\u003ehttps://github.com/Erotemic/xdoctest/compare/v1.2.0...refs/heads/release\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/Erotemic/xdoctest/blob/main/CHANGELOG.md\"\u003exdoctest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.3.0 - Released 2025-09-08\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew \u003ccode\u003eASYNC\u003c/code\u003e basic directive to hold the asyncio event loop in any section of\ncode. Useful for multitasking tests.\u003c/li\u003e\n\u003cli\u003eSupport for 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003e16806_WORKAROUND\u003c/code\u003e as it is not longer needed for Python 3.8+\u003c/li\u003e\n\u003cli\u003eRemoved deprecated --xdoc-force-dynamic and --allow-xdoc-dynamic flags\u003c/li\u003e\n\u003cli\u003eImproved speed (~6x) of doctest collection when running in pytest\u003c/li\u003e\n\u003cli\u003eUses pytest plugin system to disable stdlib doctest instead of monkey patching.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed incorrect return type in docstrings\u003c/li\u003e\n\u003cli\u003eThe doctest parser no longer expand tabs to spaces\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/Erotemic/xdoctest/commit/fac830885b9e9a1ca26a374d63036a9f25cc2066\"\u003e\u003ccode\u003efac8308\u003c/code\u003e\u003c/a\u003e Update documentation according to the latest changes (\u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/issues/179\"\u003e#179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/f19a808717a4f3c9ebb53f5f2102b6f46fed52e6\"\u003e\u003ccode\u003ef19a808\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003easyncio.Runner\u003c/code\u003e on Python\u0026gt;=3.11 (\u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/2646c4bb2c8d4880cde4503c5b46b784fc9e01de\"\u003e\u003ccode\u003e2646c4b\u003c/code\u003e\u003c/a\u003e Dev/1.3.0 (\u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/9f633b1aae52bc1c0827a140c01dffc586694bc1\"\u003e\u003ccode\u003e9f633b1\u003c/code\u003e\u003c/a\u003e Improve async support with a new directive (\u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/issues/176\"\u003e#176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/e029e414ba6fe85fbee9298e4721dc0590fc342d\"\u003e\u003ccode\u003ee029e41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/issues/174\"\u003e#174\u003c/a\u003e from TTsangSC/reversibly-disable-doctest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/b1435256a1475ddccb2184da9c564a20bccb6776\"\u003e\u003ccode\u003eb143525\u003c/code\u003e\u003c/a\u003e Add changelog note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/be66ffac0419bdcae54e703042ef67304af2b744\"\u003e\u003ccode\u003ebe66ffa\u003c/code\u003e\u003c/a\u003e Remove unused imports\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/d3dd93a8e56e55e62ec4617d02acce3e20f5be67\"\u003e\u003ccode\u003ed3dd93a\u003c/code\u003e\u003c/a\u003e Backward compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/a6f4f4d3db890d2827ec2252867014ced6150b64\"\u003e\u003ccode\u003ea6f4f4d\u003c/code\u003e\u003c/a\u003e Fixed corresponding tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/b018ce70917616681376e5f2bfa5f362cf5820b5\"\u003e\u003ccode\u003eb018ce7\u003c/code\u003e\u003c/a\u003e Fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Erotemic/xdoctest/compare/v1.2.0...v1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.13.3 to 4.14.2\n\nUpdates `comm` from 0.2.2 to 0.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ipython/comm/releases\"\u003ecomm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.2.3\u003c/h2\u003e\n\u003ch2\u003e0.2.3\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/comm/compare/v0.2.2...ec3eb438c07314b47c057c1cc3ce5fe43c294e90\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eMerged PRs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003etraitlets\u003c/code\u003e dependency \u003ca href=\"https://redirect.github.com/ipython/comm/pull/32\"\u003e#32\u003c/a\u003e (\u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Security.md file. \u003ca href=\"https://redirect.github.com/ipython/comm/pull/29\"\u003e#29\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epre-commit updates and fixes \u003ca href=\"https://redirect.github.com/ipython/comm/pull/28\"\u003e#28\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/comm/graphs/contributors?from=2024-03-12\u0026amp;to=2025-07-25\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fcomm+involves%3ACarreau+updated%3A2024-03-12..2025-07-25\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fcomm+involves%3Adavidbrochart+updated%3A2024-03-12..2025-07-25\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\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/ipython/comm/blob/main/CHANGELOG.md\"\u003ecomm's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.2.3\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/comm/compare/v0.2.2...ec3eb438c07314b47c057c1cc3ce5fe43c294e90\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eMerged PRs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003etraitlets\u003c/code\u003e dependency \u003ca href=\"https://redirect.github.com/ipython/comm/pull/32\"\u003e#32\u003c/a\u003e (\u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Security.md file. \u003ca href=\"https://redirect.github.com/ipython/comm/pull/29\"\u003e#29\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epre-commit updates and fixes \u003ca href=\"https://redirect.github.com/ipython/comm/pull/28\"\u003e#28\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/comm/graphs/contributors?from=2024-03-12\u0026amp;to=2025-07-25\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fcomm+involves%3ACarreau+updated%3A2024-03-12..2025-07-25\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fcomm+involves%3Adavidbrochart+updated%3A2024-03-12..2025-07-25\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/057b00a49aabb97fb3c66eedcd97f09c6481d3c8\"\u003e\u003ccode\u003e057b00a\u003c/code\u003e\u003c/a\u003e Publish 0.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/ec3eb438c07314b47c057c1cc3ce5fe43c294e90\"\u003e\u003ccode\u003eec3eb43\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003etraitlets\u003c/code\u003e dependency (\u003ca href=\"https://redirect.github.com/ipython/comm/issues/32\"\u003e#32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/2223501c677ac4b8289294947cb10f4f120c6117\"\u003e\u003ccode\u003e2223501\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ipython/comm/issues/29\"\u003e#29\u003c/a\u003e from Carreau/secmd\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/31714fec2ec02aa0fdeb34bdaddee0ed94e5b676\"\u003e\u003ccode\u003e31714fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/706df339274bd66b887badfc755a5369223b09a4\"\u003e\u003ccode\u003e706df33\u003c/code\u003e\u003c/a\u003e Add Security.md file.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/3737dd5e8225dbcf710fb3490b01d3bdafc80294\"\u003e\u003ccode\u003e3737dd5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ipython/comm/issues/28\"\u003e#28\u003c/a\u003e from Carreau/pc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/265d2c07ef255785e9aef4111f1391091d7e9d7e\"\u003e\u003ccode\u003e265d2c0\u003c/code\u003e\u003c/a\u003e pre-commit updates and fixes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ipython/comm/compare/v0.2.2...v0.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `debugpy` from 1.8.13 to 1.8.17\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/debugpy/releases\"\u003edebugpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003edebugpy v1.8.16\u003c/h2\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/1939\"\u003eFix bug in attach for 3.11 and lower on Windows\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/osiewicz\"\u003e\u003ccode\u003e@​osiewicz\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003edebugpy v1.8.15\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1876\"\u003eStep Over, Step Into, not working when debugging Subprocesses\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1918\"\u003eAllow debugging child processes started through an intermediary\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/1917\"\u003eAttach to process on arm64 Mac\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1898\"\u003eDocumentation typo\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1893\"\u003e3.14 preliminary support\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/MichaelSpece\"\u003e\u003ccode\u003e@​MichaelSpece\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/jborean93\"\u003e\u003ccode\u003e@​jborean93\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ConradIrwin\"\u003e\u003ccode\u003e@​ConradIrwin\u003c/code\u003e\u003c/a\u003e for your help\u003c/p\u003e\n\u003ch2\u003edebugpy v1.8.14\u003c/h2\u003e\n\u003cp\u003eFixes for:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ebinskim warnings on linux\u003c/li\u003e\n\u003cli\u003esupport for posix_spawnp\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/microsoft/debugpy/commit/6cbdf8767e4c88dfaedf3db7b09ce2781496fc51\"\u003e\u003ccode\u003e6cbdf87\u003c/code\u003e\u003c/a\u003e update testing for python 3.14 (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1955\"\u003e#1955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/2eb3afede0dd5b3c6229a2b8849efbfa18b3e078\"\u003e\u003ccode\u003e2eb3afe\u003c/code\u003e\u003c/a\u003e Check if \u003ccode\u003eos.__file__\u003c/code\u003e is available before using it (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1944\"\u003e#1944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/b00a8129977494bd127dd0bfed22082597762a08\"\u003e\u003ccode\u003eb00a812\u003c/code\u003e\u003c/a\u003e pydevd: Fix up prefix of attach shared library for Windows (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1939\"\u003e#1939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/1aff9aa541955b967f41895570d4c0b54a7504d9\"\u003e\u003ccode\u003e1aff9aa\u003c/code\u003e\u003c/a\u003e Expose CLI Options through public API (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1928\"\u003e#1928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/ead90f6f71de505191038872a2aa8718874372a9\"\u003e\u003ccode\u003eead90f6\u003c/code\u003e\u003c/a\u003e Fix round-robin CI script when state issue has no assignees (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1930\"\u003e#1930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/2b1e361eace18384ed30e2f18ae32febd9faea09\"\u003e\u003ccode\u003e2b1e361\u003c/code\u003e\u003c/a\u003e Document --adapter-access-token CLI arg (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1927\"\u003e#1927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/ea1dd9a838749a58bcc2d026693cc5a3c3cdbad1\"\u003e\u003ccode\u003eea1dd9a\u003c/code\u003e\u003c/a\u003e Fix debugger stepping actions in forked process (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1921\"\u003e#1921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/b387710b7f5cb7cbeab10783540d497854d71615\"\u003e\u003ccode\u003eb387710\u003c/code\u003e\u003c/a\u003e Add parent-session-pid argument (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1920\"\u003e#1920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/0d65353cc6e519292296bf567bdc6dfa5bcd4ffc\"\u003e\u003ccode\u003e0d65353\u003c/code\u003e\u003c/a\u003e Fix attach to process on arm64 Mac. (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1917\"\u003e#1917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/99b202ee21441f844b4c8fa3f79d518834fa5ff5\"\u003e\u003ccode\u003e99b202e\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1898\"\u003emicrosoft/debugpy#1898\u003c/a\u003e Fix. (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1899\"\u003e#1899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/debugpy/compare/v1.8.13...v1.8.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.9 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.9...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docstring-parser-fork` from 0.0.12 to 0.0.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rr-/docstring_parser/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `exceptiongroup` from 1.2.2 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/exceptiongroup/releases\"\u003eexceptiongroup's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.3.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAttributeError: 'TracebackException' object has no attribute 'exceptions'\u003c/code\u003e when formatting unpickled TBEs from another Python process which did not apply the \u003ccode\u003eexceptiongroup\u003c/code\u003e patches (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/144\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e**kwargs\u003c/code\u003e to function and method signatures as appropriate to match the signatures in the standard library\u003c/li\u003e\n\u003cli\u003eIn line with the stdlib typings in typeshed, updated \u003ccode\u003e(Base)ExceptionGroup\u003c/code\u003e generic types to define defaults for their generic arguments (defaulting to \u003ccode\u003eBaseExceptionGroup[BaseException]\u003c/code\u003e and \u003ccode\u003eExceptionGroup[Exception]\u003c/code\u003e) (PR by \u003ca href=\"https://github.com/mikenerone\"\u003e\u003ccode\u003e@​mikenerone\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eBaseExceptionGroup.__init__()\u003c/code\u003e to directly call \u003ccode\u003eBaseException.__init__()\u003c/code\u003e instead of the superclass \u003ccode\u003e__init__()\u003c/code\u003e in order to emulate the CPython behavior (broken or not) (PR by \u003ca href=\"https://github.com/cfbolz\"\u003e\u003ccode\u003e@​cfbolz\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the \u003ccode\u003eexceptions\u003c/code\u003e attribute to always return the same tuple of exceptions, created from the original exceptions sequence passed to \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e to match CPython behavior (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/143\"\u003e#143\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/agronholm/exceptiongroup/blob/main/CHANGES.rst\"\u003eexceptiongroup's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.3.1\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAttributeError: 'TracebackException' object has no attribute 'exceptions'\u003c/code\u003e\nwhen formatting unpickled TBEs from another Python process which did not apply the\n\u003ccode\u003eexceptiongroup\u003c/code\u003e patches\n(\u003ccode\u003e[#144](https://github.com/agronholm/exceptiongroup/issues/144) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/144\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.3.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e**kwargs\u003c/code\u003e to function and method signatures as appropriate to match the\nsignatures in the standard library\u003c/li\u003e\n\u003cli\u003eIn line with the stdlib typings in typeshed, updated \u003ccode\u003e(Base)ExceptionGroup\u003c/code\u003e generic\ntypes to define defaults for their generic arguments (defaulting to\n\u003ccode\u003eBaseExceptionGroup[BaseException]\u003c/code\u003e and \u003ccode\u003eExceptionGroup[Exception]\u003c/code\u003e)\n(PR by \u003ca href=\"https://github.com/mikenerone\"\u003e\u003ccode\u003e@​mikenerone\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eBaseExceptionGroup.__init__()\u003c/code\u003e to directly call\n\u003ccode\u003eBaseException.__init__()\u003c/code\u003e instead of the superclass \u003ccode\u003e__init__()\u003c/code\u003e in order to\nemulate the CPython behavior (broken or not) (PR by \u003ca href=\"https://github.com/cfbolz\"\u003e\u003ccode\u003e@​cfbolz\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the \u003ccode\u003eexceptions\u003c/code\u003e attribute to always return the same tuple of exceptions,\ncreated from the original exceptions sequence passed to \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e to\nmatch CPython behavior\n(\u003ccode\u003e[#143](https://github.com/agronholm/exceptiongroup/issues/143) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/143\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.2\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an \u003ccode\u003eassert\u003c/code\u003e in \u003ccode\u003eexceptiongroup._formatting\u003c/code\u003e that caused compatibility\nissues with Sentry (\u003ccode\u003e[#123](https://github.com/agronholm/exceptiongroup/issues/123) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/123\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.1\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated the copying of \u003ccode\u003e__notes__\u003c/code\u003e to match CPython behavior (PR by CF Bolz-Tereick)\u003c/li\u003e\n\u003cli\u003eCorrected the type annotation of the exception handler callback to accept a\n\u003ccode\u003eBaseExceptionGroup\u003c/code\u003e instead of \u003ccode\u003eBaseException\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFixed type errors on Python \u0026lt; 3.10 and the type annotation of \u003ccode\u003esuppress()\u003c/code\u003e\n(PR by John Litborn)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded special monkeypatching if \u003ccode\u003eApport \u0026lt;https://github.com/canonical/apport\u0026gt;\u003c/code\u003e_ has\noverridden \u003ccode\u003esys.excepthook\u003c/code\u003e so it will format exception groups correctly\n(PR by John Litborn)\u003c/li\u003e\n\u003cli\u003eAdded a backport of \u003ccode\u003econtextlib.suppress()\u003c/code\u003e from Python 3.12.1 which also handles\nsuppressing exceptions inside exception groups\u003c/li\u003e\n\u003cli\u003eFixed bare \u003ccode\u003eraise\u003c/code\u003e in a handler reraising the original naked exception rather than\nan exception group which is what is raised when you do a \u003ccode\u003eraise\u003c/code\u003e in an \u003ccode\u003eexcept*\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/agronholm/exceptiongroup/commit/ddddb6fdf8582c4ae5187dc1bd258115974229fe\"\u003e\u003ccode\u003eddddb6f\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/49c5e60d9efad1416f4f42455e119375904a1d6d\"\u003e\u003ccode\u003e49c5e60\u003c/code\u003e\u003c/a\u003e Fixed AttributeError when formatting unpickled TBEs from an unpatched process\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/1be517f553249822a8fa12a4d7520d4b3ef15acd\"\u003e\u003ccode\u003e1be517f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/152\"\u003e#152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/af0ea2fdfe218a4c2a1cb31ebd1a61dba459af6f\"\u003e\u003ccode\u003eaf0ea2f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/149\"\u003e#149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/7c980a88a06a72db3d796d98504b335d24274abb\"\u003e\u003ccode\u003e7c980a8\u003c/code\u003e\u003c/a\u003e Removed pin on pyright version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/ef853368c8b94479adbd33cc58f1cac05839e116\"\u003e\u003ccode\u003eef85336\u003c/code\u003e\u003c/a\u003e Fixed typing job not finding Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/080b3f4e925bbdb8cee70cc30c5ef2937eab2bde\"\u003e\u003ccode\u003e080b3f4\u003c/code\u003e\u003c/a\u003e Pinned pyright version to fix typeshed related failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/ac660908a1987880eddbb249947c1eef6e08513b\"\u003e\u003ccode\u003eac66090\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/a0da94dadfb39c0b52c0cd5c87ace166b00f74c1\"\u003e\u003ccode\u003ea0da94d\u003c/code\u003e\u003c/a\u003e Fixed test failures on Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/77fba8a871408ff2c48f536e5e73b1918239ba5f\"\u003e\u003ccode\u003e77fba8a\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/exceptiongroup/compare/1.2.2...1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `executing` from 2.2.0 to 2.2.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bafb305d96572bc8fb668b6564787bbb4fff2809\"\u003e\u003ccode\u003ebafb305\u003c/code\u003e\u003c/a\u003e Add 3.14 to classifiers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/5ed2ba36c2df94c91fefabd919880ffe061dc0f2\"\u003e\u003ccode\u003e5ed2ba3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/alexmojaki/executing/issues/97\"\u003e#97\u003c/a\u003e from alexmojaki/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/28095d447af50c49e154de5a27b9423611462f3d\"\u003e\u003ccode\u003e28095d4\u003c/code\u003e\u003c/a\u003e refactor: review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bb09dc677da7988a2c9555878b3727afa995b2c0\"\u003e\u003ccode\u003ebb09dc6\u003c/code\u003e\u003c/a\u003e refactor: some cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/dabc70ef5cc9a45eb57432822cdcf674af2e1db8\"\u003e\u003ccode\u003edabc70e\u003c/code\u003e\u003c/a\u003e fix: inst.argval can be a tuple for sometimes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/0772f918c432d6451594bcb6ffccba62e32e794c\"\u003e\u003ccode\u003e0772f91\u003c/code\u003e\u003c/a\u003e fix: removed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bacc5b699405e6f27d882dd2a71bb0ec30167f37\"\u003e\u003ccode\u003ebacc5b6\u003c/code\u003e\u003c/a\u003e fix: moved verification for CALL_INTRINSIC_2 back to 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/ec090751a1645cd14bfcb20a79b02371ffd6172b\"\u003e\u003ccode\u003eec09075\u003c/code\u003e\u003c/a\u003e test: added sample_results for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/9405fed0769af3ee22dd4f433249f6494688638e\"\u003e\u003ccode\u003e9405fed\u003c/code\u003e\u003c/a\u003e fix: handle synthetic code to store annotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/f09e4cd194aa3480c12a9f5afab3524d2a7222f2\"\u003e\u003ccode\u003ef09e4cd\u003c/code\u003e\u003c/a\u003e fix: TypeVar defaults\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/alexmojaki/executing/compare/v2.2.0...v2.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `iniconfig` from 2.0.0 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/26\"\u003e#26\u003c/a\u003e - list individuals in license file by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/52\"\u003epytest-dev/iniconfig#52\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRun tests in CI by \u003ca href=\"https://github.com/nicoddemus\"\u003e\u003ccode\u003e@​nicoddemus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/53\"\u003epytest-dev/iniconfig#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epypa/gh-action-pypi-publish@release/v1\u003c/code\u003e @ GHA by \u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/54\"\u003epytest-dev/iniconfig#54\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12-3.13 and drop EOL 3.7 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/56\"\u003epytest-dev/iniconfig#56\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/nicoddemus\"\u003e\u003ccode\u003e@​nicoddemus\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/53\"\u003epytest-dev/iniconfig#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/54\"\u003epytest-dev/iniconfig#54\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.1.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.1.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003efix artifact building - pin minimal version of hatch\u003c/li\u003e\n\u003cli\u003edrop eol python 3.8\u003c/li\u003e\n\u003cli\u003eadd python 3.12 and 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/34793a6417e35e511d0c17ffdd8a02ade0f9568e\"\u003e\u003ccode\u003e34793a6\u003c/code\u003e\u003c/a\u003e pre-commit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/136435d0a4345bb048dca98e7c2f4e938d74521b\"\u003e\u003ccode\u003e136435d\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/0bb99ad0f7a6b21d5eb24214a260132317a11e43\"\u003e\u003ccode\u003e0bb99ad\u003c/code\u003e\u003c/a\u003e fix \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/62\"\u003e#62\u003c/a\u003e: require a minimal hatch version with correct metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/16793eaddac67de0b8d621ae4e42e05b927e8d67\"\u003e\u003ccode\u003e16793ea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/56\"\u003e#56\u003c/a\u003e from hugovk/add-3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3dc2b2d6bf03e4b7cc92949a8ef0983fdd7ee442\"\u003e\u003ccode\u003e3dc2b2d\u003c/code\u003e\u003c/a\u003e Add support for Python 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/2eb8abfd9d3843100d7f138efe5bcd989a885024\"\u003e\u003ccode\u003e2eb8abf\u003c/code\u003e\u003c/a\u003e Bump GitHub Actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8c4bb5bf57dde613c8cdcf0e02a09b2fff630907\"\u003e\u003ccode\u003e8c4bb5b\u003c/code\u003e\u003c/a\u003e Set python-version for pre-commit to remove CI warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58b22b2d672564ff1925df51f4a8e07486765ed2\"\u003e\u003ccode\u003e58b22b2\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/4a53042252a109bcdd64422058de91c5dffff763\"\u003e\u003ccode\u003e4a53042\u003c/code\u003e\u003c/a\u003e Add support for Python 3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/9cae43103df70bac6fde7b9f35ad11a9f1be0cb4\"\u003e\u003ccode\u003e9cae431\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/54\"\u003e#54\u003c/a\u003e from webknjaz/patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jupyter-core` from 5.7.2 to 5.8.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jupyter/jupyter_core/releases\"\u003ejupyter-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.8.1\u003c/h2\u003e\n\u003ch2\u003e5.8.1\u003c/h2\u003e\n\u003cp\u003eFixes a regression in 5.8.0 for code which may assume SYSTEM_CONFIG_PATH is non-empty (Jupyter Server).\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyter/jupyter_core/compare/v5.8.0...de1fe1fdfb2aeba5a492d047c9e800ce79158d40\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConvert license settings into PEP-639 format \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/431\"\u003e#431\u003c/a\u003e (\u003ca href=\"https://github.com/jbedorf\"\u003e\u003ccode\u003e@​jbedorf\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse env config path for system config path when no system config path \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/430\"\u003e#430\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyter/jupyter_core/graphs/contributors?from=2025-05-26\u0026amp;to=2025-05-27\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Ajupyter%2Fjupyter_core+involves%3Ajbedorf+updated%3A2025-05-26..2025-05-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​jbedorf\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Ajupyter%2Fjupyter_core+involves%3Aminrk+updated%3A2025-05-26..2025-05-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.8.0\u003c/h2\u003e\n\u003ch2\u003e5.8.0\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyter/jupyter_core/compare/v5.7.2...23150c018f00101d5459d3fa228498bea9be7279\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes CVE-2025-30167 / GHSA-33p9-3p43-82vq on Windows (advisory to be published 2025-06-02)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: handle RuntimeError correctly in run_sync \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/425\"\u003e#425\u003c/a\u003e (\u003ca href=\"https://github.com/hugokerstens\"\u003e\u003ccode\u003e@​hugokerstens\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd security.md \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/422\"\u003e#422\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: update pre-commit hooks \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/421\"\u003e#421\u003c/a\u003e (\u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/create-github-app-token from 1 to 2 in the actions group \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/420\"\u003e#420\u003c/a\u003e (\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix package_spec in downstream tests \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/419\"\u003e#419\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: hatch run run docs:api \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/418\"\u003e#418\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enarrow type of envset when it can't be None \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/417\"\u003e#417\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate pre-commit \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/416\"\u003e#416\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Pyproject metadata \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/414\"\u003e#414\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove donwstream check \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/413\"\u003e#413\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA bunch of pre-commit and CI upgrade. \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/412\"\u003e#412\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAssertionErrors should not be manually raised. \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/411\"\u003e#411\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBuild docs on ubuntu \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/403\"\u003e#403\u003c/a\u003e (\u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump the actions group with 1 update \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/395\"\u003e#395\u003c/a\u003e (\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation improvements\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jupyter/jupyter_core/blob/main/CHANGELOG.md\"\u003ejupyter-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.8.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003e5.8.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/ad6b4aea233a9634ffcd6ad553ecd63129ab5f6e\"\u003e\u003ccode\u003ead6b4ae\u003c/code\u003e\u003c/a\u003e Publish 5.8.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/de1fe1fdfb2aeba5a492d047c9e800ce79158d40\"\u003e\u003ccode\u003ede1fe1f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;breaking: require Python 3.9 (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/428\"\u003e#428\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/432\"\u003e#432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/0d225fda61f0edff01d1dfa826764482070dd8c3\"\u003e\u003ccode\u003e0d225fd\u003c/code\u003e\u003c/a\u003e use env config path for system config path when no system config path (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/430\"\u003e#430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/2a2807b08381c6a1c84f1624889ccced03f8d93f\"\u003e\u003ccode\u003e2a2807b\u003c/code\u003e\u003c/a\u003e Convert license settings into PEP-639 format (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/431\"\u003e#431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/a009e438e9ae0ed8d65fbade46c9b97b2321676c\"\u003e\u003ccode\u003ea009e43\u003c/code\u003e\u003c/a\u003e breaking: require Python 3.9 (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/ff5270b8a688af5494940b12dc347e9d563e8d91\"\u003e\u003ccode\u003eff5270b\u003c/code\u003e\u003c/a\u003e Publish 5.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/5e8965600adda6b416692ce7e85ecb2bd814bd52\"\u003e\u003ccode\u003e5e89656\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/23150c018f00101d5459d3fa228498bea9be7279\"\u003e\u003ccode\u003e23150c0\u003c/code\u003e\u003c/a\u003e chore: update pre-commit hooks (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/421\"\u003e#421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/cb20468e7c634a54d5b36c30e0cc71ea411656c0\"\u003e\u003ccode\u003ecb20468\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;breaking: require Python 3.9 (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/426\"\u003e#426\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/25dc203a9f46eb16b64b1e8257d570aa9534f5a9\"\u003e\u003ccode\u003e25dc203\u003c/code\u003e\u003c/a\u003e breaking: require Python 3.9 (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jupyter/jupyter_core/compare/v5.7.2...v5.8.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy-extensions` from 1.0.0 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/70d9435779df27a522b146f2c5dee06ccacae373\"\u003e\u003ccode\u003e70d9435\u003c/code\u003e\u003c/a\u003e remove dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/8d272bb1264a6114610a3df9b43f87247c856d92\"\u003e\u003ccode\u003e8d272bb\u003c/code\u003e\u003c/a\u003e Switch build-backend to flit_core + use License-Expression for project metada...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/1b461029c25d2e677792e1483734f352bd589aa8\"\u003e\u003ccode\u003e1b46102\u003c/code\u003e\u003c/a\u003e Bump dev version to 1.1.0-dev (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/400534fb50c683ff1c00051ca101741ced69330b\"\u003e\u003ccode\u003e400534f\u003c/code\u003e\u003c/a\u003e Deprecate mypy_extensions.NoReturn (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/56\"\u003e#56\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/23fbfa5674aca52517564628e12c228812ac2bf0\"\u003e\u003ccode\u003e23fbfa5\u003c/code\u003e\u003c/a\u003e Update flake8 to 7.1.1 (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/9ddbb08b20cfba7efe18f5fbf926131e583c0b22\"\u003e\u003ccode\u003e9ddbb08\u003c/code\u003e\u003c/a\u003e Cleanup tests (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/6d9c7b756486a654e795095d393bf8206cd11dea\"\u003e\u003ccode\u003e6d9c7b7\u003c/code\u003e\u003c/a\u003e Move metadata to pyproject + drop Python 3.7 (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/812066c7a88e78572332e6e0f428bf3e0c248193\"\u003e\u003ccode\u003e812066c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/49\"\u003e#49\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/9dd6d98da338a3924b0ed7440b843988cd5805df\"\u003e\u003ccode\u003e9dd6d98\u003c/code\u003e\u003c/a\u003e Add support for Python 3.12 (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/48\"\u003e#48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/e0c6670e05a87507d59b7d3a0aa2eec88e9813b0\"\u003e\u003ccode\u003ee0c6670\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003emypy_extensions.TypedDict\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/47\"\u003e#47\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy_extensions/compare/1.0.0...1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `parso` from 0.8.4 to 0.8.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/davidhalter/parso/blob/master/CHANGELOG.rst\"\u003eparso's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.8.5 (2025-08-23)\n++++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a fallback grammar for Python 3.14+\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/be9f5a401feaa1a7eda935bc68b2d3baed9a30ab\"\u003e\u003ccode\u003ebe9f5a4\u003c/code\u003e\u003c/a\u003e Prepare release 0.8.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/7e4777b775206038a1aa87282c79ed04f5f1c3fd\"\u003e\u003ccode\u003e7e4777b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/davidhalter/parso/issues/234\"\u003e#234\u003c/a\u003e from A5rocks/future-compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/e99dbdd536da741d4935c427a6231f4d5eb6ea79\"\u003e\u003ccode\u003ee99dbdd\u003c/code\u003e\u003c/a\u003e Remove redundant warnings import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/e22dc67aa10b53bbf069f825a0d40eefc727f0cb\"\u003e\u003ccode\u003ee22dc67\u003c/code\u003e\u003c/a\u003e Avoid warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/baa3c90d85a10f6abb8307246a89fc683981cee7\"\u003e\u003ccode\u003ebaa3c90\u003c/code\u003e\u003c/a\u003e Load newest grammar in face of a future grammar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/23b1cdf73d95ae20f23e2fd198cafcd8fef529ad\"\u003e\u003ccode\u003e23b1cdf...\n\n_Description has been truncated_","html_url":"https://github.com/hermetoproject/pybuild-deps/pull/343","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hermetoproject%2Fpybuild-deps/issues/343","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/343/packages"},{"uuid":"3633347426","node_id":"PR_kwDOMHVffc6z23Pp","number":72,"state":"closed","title":"Bump the python-packages group across 1 directory with 67 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-24T13:46:51.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-17T13:28:41.000Z","updated_at":"2025-11-24T13:46:53.000Z","time_to_close":605890,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":67,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"argon2-cffi-bindings","old_version":"21.2.0","new_version":"25.1.0","repository_url":"https://github.com/hynek/argon2-cffi-bindings"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.2"},{"name":"bleach","old_version":"6.2.0","new_version":"6.3.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"certifi","old_version":"2025.6.15","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"comm","old_version":"0.2.2","new_version":"0.2.3","repository_url":"https://github.com/ipython/comm"},{"name":"contourpy","old_version":"1.3.1","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"debugpy","old_version":"1.8.14","new_version":"1.8.17","repository_url":"https://github.com/microsoft/debugpy"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"fastjsonschema","old_version":"2.21.1","new_version":"2.21.2","repository_url":"https://github.com/horejsek/python-fastjsonschema"},{"name":"flask","old_version":"3.1.1","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"fonttools","old_version":"4.58.4","new_version":"4.60.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"imbalanced-learn","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/scikit-learn-contrib/imbalanced-learn"},{"name":"ipykernel","old_version":"6.29.5","new_version":"7.1.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"ipython","old_version":"9.0.2","new_version":"9.7.0","repository_url":"https://github.com/ipython/ipython"},{"name":"ipywidgets","old_version":"8.1.7","new_version":"8.1.8","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"joblib","old_version":"1.5.1","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"json5","old_version":"0.12.0","new_version":"0.12.1","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"jsonschema","old_version":"4.24.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"jupyter-lsp","old_version":"2.2.5","new_version":"2.3.0","repository_url":"https://github.com/jupyter-lsp/jupyterlab-lsp"},{"name":"jupyter-core","old_version":"5.8.1","new_version":"5.9.1","repository_url":"https://github.com/jupyter/jupyter_core"},{"name":"jupyter-server","old_version":"2.16.0","new_version":"2.17.0","repository_url":"https://github.com/jupyter-server/jupyter_server"},{"name":"jupyterlab","old_version":"4.4.4","new_version":"4.4.10","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"jupyterlab-server","old_version":"2.27.3","new_version":"2.28.0","repository_url":"https://github.com/jupyterlab/jupyterlab_server"},{"name":"jupyterlab-widgets","old_version":"3.0.15","new_version":"3.0.16","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.10.1","new_version":"3.10.7","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mistune","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/lepture/mistune"},{"name":"nltk","old_version":"3.9.1","new_version":"3.9.2","repository_url":"https://github.com/nltk/nltk"},{"name":"notebook","old_version":"7.4.4","new_version":"7.4.7","repository_url":"https://github.com/jupyter/notebook"},{"name":"numpy","old_version":"2.2.4","new_version":"2.3.5","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.3.0","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"pillow","old_version":"11.2.1","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prometheus-client","old_version":"0.22.1","new_version":"0.23.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.2.5","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"pyzmq","old_version":"27.0.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"qtconsole","old_version":"5.6.1","new_version":"5.7.0","repository_url":"https://github.com/jupyter/qtconsole"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.11.3","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rpds-py","old_version":"0.25.1","new_version":"0.29.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"scikit-learn","old_version":"1.6.1","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.15.2","new_version":"1.16.3","repository_url":"https://github.com/scipy/scipy"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"tornado","old_version":"6.5.1","new_version":"6.5.2","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"types-python-dateutil","old_version":"2.9.0.20250516","new_version":"2.9.0.20251115","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.2.14","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webcolors","old_version":"24.11.1","new_version":"25.10.0","repository_url":"https://github.com/ubernostrum/webcolors"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"widgetsnbextension","old_version":"4.0.14","new_version":"4.0.15"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 67 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [argon2-cffi-bindings](https://github.com/hynek/argon2-cffi-bindings) | `21.2.0` | `25.1.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.2` |\n| [bleach](https://github.com/mozilla/bleach) | `6.2.0` | `6.3.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.6.15` | `2025.11.12` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [comm](https://github.com/ipython/comm) | `0.2.2` | `0.2.3` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.1` | `1.3.3` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.14` | `1.8.17` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [fastjsonschema](https://github.com/horejsek/python-fastjsonschema) | `2.21.1` | `2.21.2` |\n| [flask](https://github.com/pallets/flask) | `3.1.1` | `3.1.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.4` | `4.60.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [imbalanced-learn](https://github.com/scikit-learn-contrib/imbalanced-learn) | `0.13.0` | `0.14.0` |\n| [ipykernel](https://github.com/ipython/ipykernel) | `6.29.5` | `7.1.0` |\n| [ipython](https://github.com/ipython/ipython) | `9.0.2` | `9.7.0` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.7` | `8.1.8` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.1` | `1.5.2` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.12.0` | `0.12.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.24.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [jupyter-lsp](https://github.com/jupyter-lsp/jupyterlab-lsp) | `2.2.5` | `2.3.0` |\n| [jupyter-core](https://github.com/jupyter/jupyter_core) | `5.8.1` | `5.9.1` |\n| [jupyter-server](https://github.com/jupyter-server/jupyter_server) | `2.16.0` | `2.17.0` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.4.4` | `4.4.10` |\n| [jupyterlab-server](https://github.com/jupyterlab/jupyterlab_server) | `2.27.3` | `2.28.0` |\n| [jupyterlab-widgets](https://github.com/jupyter-widgets/ipywidgets) | `3.0.15` | `3.0.16` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.1` | `3.10.7` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [mistune](https://github.com/lepture/mistune) | `3.1.3` | `3.1.4` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.1` | `3.9.2` |\n| [notebook](https://github.com/jupyter/notebook) | `7.4.4` | `7.4.7` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.3.5` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `2.3.3` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.0.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.1` | `0.23.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.2.5` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `27.0.0` | `27.1.0` |\n| [qtconsole](https://github.com/jupyter/qtconsole) | `5.6.1` | `5.7.0` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.11.3` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.25.1` | `0.29.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.6.1` | `1.7.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.2` | `1.16.3` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.1` | `6.5.2` |\n| [types-python-dateutil](https://github.com/typeshed-internal/stub_uploader) | `2.9.0.20250516` | `2.9.0.20251115` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.2.14` |\n| [webcolors](https://github.com/ubernostrum/webcolors) | `24.11.1` | `25.10.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [widgetsnbextension](http://jupyter.org) | `4.0.14` | `4.0.15` |\n\n\nUpdates `anyio` from 4.9.0 to 4.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ccode\u003etask call graphs\u003c/code\u003e_ on Python 3.14 and later when using\nAnyIO's task groups\n(\u003ccode\u003e[#1025](https://github.com/agronholm/anyio/issues/1025) \u0026lt;https://github.com/agronholm/anyio/pull/1025\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module\n(\u003ccode\u003e[#1001](https://github.com/agronholm/anyio/issues/1001) \u0026lt;https://github.com/agronholm/anyio/pull/1001\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the winloop_ implementation\n(\u003ccode\u003e[#960](https://github.com/agronholm/anyio/issues/960) \u0026lt;https://github.com/agronholm/anyio/pull/960\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e\n(\u003ccode\u003e[#1003](https://github.com/agronholm/anyio/issues/1003) \u0026lt;https://github.com/agronholm/anyio/pull/1003\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.)\n(\u003ccode\u003e[#1009](https://github.com/agronholm/anyio/issues/1009) \u0026lt;https://github.com/agronholm/anyio/pull/1009\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero\n(\u003ccode\u003e[#1019](https://github.com/agronholm/anyio/issues/1019) \u0026lt;https://github.com/agronholm/anyio/pull/1019\u0026gt;\u003c/code\u003e_; requires Python 3.10 or\nlater when using Trio)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e\nfunction (\u003ccode\u003e[#1021](https://github.com/agronholm/anyio/issues/1021) \u0026lt;https://github.com/agronholm/anyio/pull/1021\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in\nsuch cases (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_; PR by\n\u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio\n(\u003ccode\u003e[#1002](https://github.com/agronholm/anyio/issues/1002) \u0026lt;https://github.com/agronholm/anyio/issues/1002\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from\n\u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function\n(\u003ccode\u003e[#1011](https://github.com/agronholm/anyio/issues/1011) \u0026lt;https://github.com/agronholm/anyio/issues/1011\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _task call graphs: \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003ehttps://docs.python.org/3/library/asyncio-graph.html\u003c/a\u003e\n.. _winloop: \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ehttps://github.com/Vizonex/Winloop\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `argon2-cffi-bindings` from 21.2.0 to 25.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/releases\"\u003eargon2-cffi-bindings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.1.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eFree-threading for Python 3.14!\u003c/p\u003e\n\u003cp\u003eCurrently, it's a bit complicated, because it requires CFFI 2.0 which is only available as a pre-release.\u003c/p\u003e\n\u003cp\u003eTherefore, when installing with \u003cem\u003euv\u003c/em\u003e, it's necessary to pass like this:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e$ uv pip install --prerelease=allow argon2-cffi\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://www.klaviyo.com\"\u003eKlaviyo\u003c/a\u003e (@\u003ca href=\"https://github.com/klaviyo\"\u003eklaviyo\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://doist.com/\"\u003eDoist\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), Jesse Snyder (@\u003ca href=\"https://github.com/jessesnyder\"\u003ejessesnyder\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://www.miketheman.net\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), \u003ca href=\"https://blog.journeythatcounts.nl\"\u003ePieter Swinkels\u003c/a\u003e (@\u003ca href=\"https://github.com/swinkels\"\u003eswinkels\u003c/a\u003e), Nick Libertini (@\u003ca href=\"https://github.com/libertininick\"\u003elibertininick\u003c/a\u003e), \u003ca href=\"https://mpr.crossjam.net/\"\u003eBrian M. Dennis\u003c/a\u003e (@\u003ca href=\"https://github.com/crossjam\"\u003ecrossjam\u003c/a\u003e), Ordinary Hobbit (@\u003ca href=\"https://github.com/grillazz\"\u003egrillazz\u003c/a\u003e), Moving Content AG (@\u003ca href=\"https://github.com/moving-content\"\u003emoving-content\u003c/a\u003e), \u003ca href=\"https://westervelt.com\"\u003eThe Westervelt Company\u003c/a\u003e (@\u003ca href=\"https://github.com/westerveltco\"\u003ewesterveltco\u003c/a\u003e), \u003ca href=\"https://slafs.net\"\u003eSławomir Ehlert\u003c/a\u003e (@\u003ca href=\"https://github.com/slafs\"\u003eslafs\u003c/a\u003e), Mostafa Khalil (@\u003ca href=\"https://github.com/khadrawy\"\u003ekhadrawy\u003c/a\u003e), \u003ca href=\"https://fmularczyk.pl\"\u003eFilip Mularczyk\u003c/a\u003e (@\u003ca href=\"https://github.com/mukiblejlok\"\u003emukiblejlok\u003c/a\u003e), Thomas Klinger (@\u003ca href=\"https://github.com/thmsklngr\"\u003ethmsklngr\u003c/a\u003e), \u003ca href=\"https://poehlmann.io\"\u003eAndreas Poehlmann\u003c/a\u003e (@\u003ca href=\"https://github.com/ap--\"\u003eap--\u003c/a\u003e), \u003ca href=\"https://atbigelow.com\"\u003eAugust Trapper Bigelow\u003c/a\u003e (@\u003ca href=\"https://github.com/atbigelow\"\u003eatbigelow\u003c/a\u003e), \u003ca href=\"https://noumenal.es/\"\u003eCarlton Gibson\u003c/a\u003e (@\u003ca href=\"https://github.com/carltongibson\"\u003ecarltongibson\u003c/a\u003e), and \u003ca href=\"https://roboflow.com\"\u003eRoboflow\u003c/a\u003e (@\u003ca href=\"https://github.com/roboflow\"\u003eroboflow\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eFull Changelog\u003c/h2\u003e\n\u003cp\u003eVendoring Argon2 @ \u003ca href=\"https://github.com/P-H-C/phc-winner-argon2/commit/f57e61e19229e23c4445b85494dbf7c07de721cb\"\u003e\u003cstrong\u003e\u003ccode\u003ef57e61e\u003c/code\u003e\u003c/strong\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOfficial Python 3.12, 3.13, and 3.14 support. No code or packaging changes were necessary.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport for free-threading (aka nogil) on Python 3.14. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/93\"\u003e#93\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels for Windows on ARM64. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/83\"\u003e#83\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.6, 3.7, and 3.8 support. There is very little activity on the bindings repo, so it doesn't make sense to carry around the build complexity of those ancient Python versions. The \u003ca href=\"https://pypi.org/project/argon2-cffi-bindings/21.2.0/\"\u003e21.2.0 wheels on PyPI\u003c/a\u003e include support for Python 3.6 and are based on the same Argon2 version.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/blob/main/CHANGELOG.md\"\u003eargon2-cffi-bindings's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/compare/21.2.0...25.1.0\"\u003e25.1.0\u003c/a\u003e - 2025-07-30\u003c/h2\u003e\n\u003cp\u003eVendoring Argon2 @ \u003ca href=\"https://github.com/P-H-C/phc-winner-argon2/commit/f57e61e19229e23c4445b85494dbf7c07de721cb\"\u003e\u003cstrong\u003e\u003ccode\u003ef57e61e\u003c/code\u003e\u003c/strong\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOfficial Python 3.12, 3.13, and 3.14 support.\nNo code or packaging changes were necessary.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport for free-threading (aka nogil) on Python 3.14.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/70\"\u003e#70\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/93\"\u003e#93\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels for Windows on ARM64.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/83\"\u003e#83\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.6, 3.7, and 3.8 support.\nThere is very little activity on the bindings repo, so it doesn't make sense to carry around the build complexity of those ancient Python versions.\nThe \u003ca href=\"https://pypi.org/project/argon2-cffi-bindings/21.2.0/\"\u003e21.2.0 wheels on PyPI\u003c/a\u003e include support for Python 3.6 and are based on the same Argon2 version.\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/hynek/argon2-cffi-bindings/commit/66f5b2340ef25699504bcc0f08eadcbefaf219aa\"\u003e\u003ccode\u003e66f5b23\u003c/code\u003e\u003c/a\u003e Prepare 25.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/d2c80c05dc12079b7bce081df13a12251281a136\"\u003e\u003ccode\u003ed2c80c0\u003c/code\u003e\u003c/a\u003e Consistency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/cc7181e7de500e5acf8277c6b7abcf1946bbb6bb\"\u003e\u003ccode\u003ecc7181e\u003c/code\u003e\u003c/a\u003e Use dependency groups (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/94\"\u003e#94\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/41aecc197493d627e43ab36e8d30c52811c834d7\"\u003e\u003ccode\u003e41aecc1\u003c/code\u003e\u003c/a\u003e Update metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/1276da7784ff9375842d22c66a8812e3ac51c5e2\"\u003e\u003ccode\u003e1276da7\u003c/code\u003e\u003c/a\u003e Mention new wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/1aad4747f9b73b549f39894a27118037ba484c20\"\u003e\u003ccode\u003e1aad474\u003c/code\u003e\u003c/a\u003e Add support for free-threaded builds (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/70\"\u003e#70\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/3ed973484763dd8084d54cff47d5121653d9ff9b\"\u003e\u003ccode\u003e3ed9734\u003c/code\u003e\u003c/a\u003e Bump pypa/cibuildwheel from 2.23 to 3.0 (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/91\"\u003e#91\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/c2bc26268c939436d8b1584a51dfdeacefb5b6c8\"\u003e\u003ccode\u003ec2bc262\u003c/code\u003e\u003c/a\u003e update Ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/e5d69b7ef5690819ae21ab6deb24a49dcf9c1aec\"\u003e\u003ccode\u003ee5d69b7\u003c/code\u003e\u003c/a\u003e Zizmor: clarify trust\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/4bb1e3bad074c923a14892c754a5fa5e41d3d398\"\u003e\u003ccode\u003e4bb1e3b\u003c/code\u003e\u003c/a\u003e Update + rename Ruff\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/compare/21.2.0...25.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.13.4 to 4.14.2\n\nUpdates `bleach` from 6.2.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\u003c/blockquote\u003e\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.2.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 `certifi` from 2025.6.15 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\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/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.06.15...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\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/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.2 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\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/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\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/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.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/click/blob/8.3.1/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNo...\n\n_Description has been truncated_","html_url":"https://github.com/manulthanura/ReviewClassifier/pull/72","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/manulthanura%2FReviewClassifier/issues/72","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/72/packages"},{"uuid":"3596802801","node_id":"PR_kwDOOlXPW86x89zS","number":127,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 45 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-01T20:30:17.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-06T17:29:10.000Z","updated_at":"2025-12-01T20:30:18.000Z","time_to_close":2170867,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":45,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.0","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.71.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.2","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"openfeature-provider-ofrep","old_version":"0.1.1","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.0","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.0.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 45 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.71.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.2` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.0` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.0.1` |\n\nBumps the pip-production-dependencies group with 40 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.71.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.2` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.0` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.0.1` |\n\nBumps the pip-production-dependencies group with 9 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.51b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e Fixed an issue where FastAPI reports IP instead of URL.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3670\"\u003e#3670\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.30.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/347517a7ccaf145a940fc6e2a37a8d1df621f3a3\"\u003e347517a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ff0a06e (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/498\"\u003e#498\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/c722cf0239f2b9b95a1214b99447a9316c2c73d8\"\u003ec722cf0\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-feature/python-sdk/commit/2d78d33d8a0e63c80c9ef330debd77fe80d3445f\"\u003e\u003ccode\u003e2d78d33\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e\u003ccode\u003e81a1d95\u003c/code\u003e\u003c/a\u003e chore: remove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e\u003ccode\u003e74409bf\u003c/code\u003e\u003c/a\u003e chore: add missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e\u003ccode\u003e837fef9\u003c/code\u003e\u003c/a\u003e chore: replace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003e\u003ccode\u003ede37144\u003c/code\u003e\u003c/a\u003e fix: fix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003e\u003ccode\u003eb418cb0\u003c/code\u003e\u003c/a\u003e chore: update mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/is...\n\n_Description has been truncated_","html_url":"https://github.com/Moshood88/open-telemetry-opentelemetry-demo/pull/127","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Moshood88%2Fopen-telemetry-opentelemetry-demo/issues/127","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/127/packages"},{"uuid":"3595639846","node_id":"PR_kwDOOuxJSc6x4_Xn","number":104,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 45 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-01T15:23:46.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-06T12:34:57.000Z","updated_at":"2025-12-01T15:23:47.000Z","time_to_close":2170129,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":45,"packages":[{"name":"grpcio-health-checking","old_version":"1.71.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.0","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.71.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.2","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"openfeature-provider-ofrep","old_version":"0.1.1","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.0","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.0.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 45 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.71.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.2` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.0` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.0.1` |\n\nBumps the pip-production-dependencies group with 40 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.71.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.2` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.0` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.0.1` |\n\nBumps the pip-production-dependencies group with 9 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.71.0 to 1.76.0\n\nUpdates `grpcio` from 1.71.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.71.0...v1.76.0\"\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.51b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e Fixed an issue where FastAPI reports IP instead of URL.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3670\"\u003e#3670\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.30.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/347517a7ccaf145a940fc6e2a37a8d1df621f3a3\"\u003e347517a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ff0a06e (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/498\"\u003e#498\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/c722cf0239f2b9b95a1214b99447a9316c2c73d8\"\u003ec722cf0\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-feature/python-sdk/commit/2d78d33d8a0e63c80c9ef330debd77fe80d3445f\"\u003e\u003ccode\u003e2d78d33\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e\u003ccode\u003e81a1d95\u003c/code\u003e\u003c/a\u003e chore: remove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e\u003ccode\u003e74409bf\u003c/code\u003e\u003c/a\u003e chore: add missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e\u003ccode\u003e837fef9\u003c/code\u003e\u003c/a\u003e chore: replace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003e\u003ccode\u003ede37144\u003c/code\u003e\u003c/a\u003e fix: fix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003e\u003ccode\u003eb418cb0\u003c/code\u003e\u003c/a\u003e chore: update mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/is...\n\n_Description has been truncated_","html_url":"https://github.com/KiranRepos/My_Telementry_Demo/pull/104","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/KiranRepos%2FMy_Telementry_Demo/issues/104","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/104/packages"},{"uuid":"3594944274","node_id":"PR_kwDOPEUJ286x2qbV","number":59,"state":"closed","title":"Bump the pip-production-dependencies group across 3 directories with 46 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-02T09:29:26.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-06T09:40:27.000Z","updated_at":"2025-12-02T09:29:26.000Z","time_to_close":2245739,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-production-dependencies","update_count":46,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.2.1","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.1.5","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.1.3","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.0","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.67.0","new_version":"1.71.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"locust","old_version":"2.32.9","new_version":"2.42.1","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.5.3","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.0","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.0.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 46 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.67.0` | `1.71.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.32.9` | `2.42.1` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.0` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.0.1` |\n\nBumps the pip-production-dependencies group with 42 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.67.0` | `1.71.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.32.9` | `2.42.1` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.0` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.0.1` |\n\nBumps the pip-production-dependencies group with 10 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.51b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e Fixed an issue where FastAPI reports IP instead of URL.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3670\"\u003e#3670\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.30.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.2.1 to 4.0.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.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).\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\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/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\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v3.3.0\"\u003e3.3.0\u003c/a\u003e - 2025-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eexc_info_as_array\u003c/code\u003e and \u003ccode\u003estack_info_as_array\u003c/code\u003e options are added to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e allowing both to be encoded as list of lines instead of a single multi-line string. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/35\"\u003e#35\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003emsgspec-python313-pre\u003c/code\u003e from \u003ccode\u003edev\u003c/code\u003e dependencies preventing potential RCE. Details: \u003ca href=\"https://github.com/nhairs/python-json-logger/security/advisories/GHSA-wmxh-pxcx-9w24#advisory-comment-121307\"\u003eGHSA-wmxh-pxcx-9w24\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/1hakusai1\"\u003e\u003ccode\u003e@​1hakusai1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/omnigodz\"\u003e\u003ccode\u003e@​omnigodz\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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/347517a7ccaf145a940fc6e2a37a8d1df621f3a3\"\u003e347517a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ff0a06e (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/498\"\u003e#498\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/c722cf0239f2b9b95a1214b99447a9316c2c73d8\"\u003ec722cf0\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-feature/python-sdk/commit/2d78d33d8a0e63c80c9ef330debd77fe80d3445f\"\u003e\u003ccode\u003e2d78d33\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.c...\n\n_Description has been truncated_","html_url":"https://github.com/martinmclarnon/opentelemetry-demo-slo-improvement/pull/59","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/martinmclarnon%2Fopentelemetry-demo-slo-improvement/issues/59","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/59/packages"}],"issue_packages":[{"old_version":"\u003c=26.4.0","new_version":"\u003c=27.1.0","update_type":null,"path":"/requirements/py311","pr_created_at":"2026-05-03T21:55:28.000Z","version_change":"\u003c=26.4.0 → \u003c=27.1.0","issue":{"uuid":"4373093072","node_id":"PR_kwDOSL8lfs7X1NiS","number":13,"state":"open","title":"deps: update pyzmq requirement from \u003c=26.4.0 to \u003c=27.1.0 in /requirements/py311","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-05-03T21:55:28.000Z","updated_at":"2026-05-03T21:55:29.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: update","packages":[{"name":"pyzmq","old_version":"\u003c=26.4.0","new_version":"\u003c=27.1.0","repository_url":"https://github.com/zeromq/pyzmq"}],"path":"/requirements/py311","ecosystem":"pip"},"body":"Updates the requirements on [pyzmq](https://github.com/zeromq/pyzmq) 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/zeromq/pyzmq/releases\"\u003epyzmq's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev27.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.1.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/425a21fd2ae3bc50d81176ff9a8253af3535a3d4\"\u003e\u003ccode\u003e425a21f\u003c/code\u003e\u003c/a\u003e Bump to 27.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/c6bf62145e912a95c0dfccff4609d1e52b464ceb\"\u003e\u003ccode\u003ec6bf621\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2127\"\u003e#2127\u003c/a\u003e from minrk/271\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/3558cceb69d9d5ca1ac14e2dc300060232371e86\"\u003e\u003ccode\u003e3558cce\u003c/code\u003e\u003c/a\u003e release 27.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/17b9ce8d4e7bbe4f35271a303a73498cff46d9fa\"\u003e\u003ccode\u003e17b9ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2126\"\u003e#2126\u003c/a\u003e from minrk/compile-time-drafts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/83040f7467f268c1cddfd26efac7790bdd7d64e0\"\u003e\u003ccode\u003e83040f7\u003c/code\u003e\u003c/a\u003e restore zmq.DRAFT_API meaning drafts are actually available\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/e21dcd8e0bfa8194230b588864b03cbbb839ea10\"\u003e\u003ccode\u003ee21dcd8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2124\"\u003e#2124\u003c/a\u003e from zeromq/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/26233552a6c6557f2749265d3909a466ac57c3c3\"\u003e\u003ccode\u003e2623355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/684b2e5cb40b764ca45875a0c0b3af6d4662d46c\"\u003e\u003ccode\u003e684b2e5\u003c/code\u003e\u003c/a\u003e Bump to 27.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/912e61982a3413d9b7cdc1786fac3b5d5fa64620\"\u003e\u003ccode\u003e912e619\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2122\"\u003e#2122\u003c/a\u003e from minrk/devmode-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/69f8d905855421fb69e1783c71a4c1502c299bd8\"\u003e\u003ccode\u003e69f8d90\u003c/code\u003e\u003c/a\u003e changelog for 27.0.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/zeromq/pyzmq/compare/v2.0.7...v27.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/JonSmithTLT/security-platform-toolchain/pull/13","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonSmithTLT%2Fsecurity-platform-toolchain/issues/13","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/13/packages"}},{"old_version":"26.4.0","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2026-02-27T14:32:09.000Z","version_change":"26.4.0 → 27.1.0","issue":{"uuid":"4001313278","node_id":"PR_kwDOORHyMc7G1wzP","number":18,"state":"open","title":"deps: bump pyzmq from 26.4.0 to 27.1.0","user":"dependabot[bot]","labels":["dependencies"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-02-27T14:32:09.000Z","updated_at":"2026-02-27T15:12:57.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps","packages":[{"name":"pyzmq","old_version":"26.4.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyzmq](https://github.com/zeromq/pyzmq) from 26.4.0 to 27.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zeromq/pyzmq/releases\"\u003epyzmq's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev27.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.1.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.2'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.1'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/425a21fd2ae3bc50d81176ff9a8253af3535a3d4\"\u003e\u003ccode\u003e425a21f\u003c/code\u003e\u003c/a\u003e Bump to 27.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/c6bf62145e912a95c0dfccff4609d1e52b464ceb\"\u003e\u003ccode\u003ec6bf621\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2127\"\u003e#2127\u003c/a\u003e from minrk/271\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/3558cceb69d9d5ca1ac14e2dc300060232371e86\"\u003e\u003ccode\u003e3558cce\u003c/code\u003e\u003c/a\u003e release 27.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/17b9ce8d4e7bbe4f35271a303a73498cff46d9fa\"\u003e\u003ccode\u003e17b9ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2126\"\u003e#2126\u003c/a\u003e from minrk/compile-time-drafts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/83040f7467f268c1cddfd26efac7790bdd7d64e0\"\u003e\u003ccode\u003e83040f7\u003c/code\u003e\u003c/a\u003e restore zmq.DRAFT_API meaning drafts are actually available\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/e21dcd8e0bfa8194230b588864b03cbbb839ea10\"\u003e\u003ccode\u003ee21dcd8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2124\"\u003e#2124\u003c/a\u003e from zeromq/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/26233552a6c6557f2749265d3909a466ac57c3c3\"\u003e\u003ccode\u003e2623355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/684b2e5cb40b764ca45875a0c0b3af6d4662d46c\"\u003e\u003ccode\u003e684b2e5\u003c/code\u003e\u003c/a\u003e Bump to 27.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/912e61982a3413d9b7cdc1786fac3b5d5fa64620\"\u003e\u003ccode\u003e912e619\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2122\"\u003e#2122\u003c/a\u003e from minrk/devmode-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/69f8d905855421fb69e1783c71a4c1502c299bd8\"\u003e\u003ccode\u003e69f8d90\u003c/code\u003e\u003c/a\u003e changelog for 27.0.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/zeromq/pyzmq/compare/v26.4.0...v27.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pyzmq\u0026package-manager=pip\u0026previous-version=26.4.0\u0026new-version=27.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)\n- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)\n\n\n\u003c/details\u003e","html_url":"https://github.com/DanielMarchukov/rich-on-paper/pull/18","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/DanielMarchukov%2Frich-on-paper/issues/18","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/18/packages"}},{"old_version":"26.2.1","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2026-01-26T12:31:41.000Z","version_change":"26.2.1 → 27.1.0","issue":{"uuid":"3855782246","node_id":"PR_kwDOOIrH7c6_W0W4","number":217,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 50 updates","user":"dependabot[bot]","labels":["dependencies","python","Stale"],"assignees":[],"locked":false,"comments_count":3,"pull_request":true,"closed_at":"2026-02-20T04:57:02.000Z","author_association":null,"state_reason":null,"created_at":"2026-01-26T12:31:41.000Z","updated_at":"2026-02-20T04:57:11.000Z","time_to_close":2132721,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":50,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.50b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.29.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.2.1","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.4","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.1.5","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"opentelemetry-instrumentation-grpc","old_version":"0.50b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"langchain","old_version":"0.2.17","new_version":"1.2.7","repository_url":"https://github.com/langchain-ai/langchain"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2026.1.4","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.7","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.68.0","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.3.1","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"locust","old_version":"2.33.0","new_version":"2.43.1","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.5.3","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.4","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"roundrobin","old_version":"0.0.4","new_version":"0.1.0","repository_url":"https://github.com/linnik/roundrobin"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.3","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.5","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.2","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 50 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.2.1` |\n| [opentelemetry-instrumentation-grpc](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b1` |\n| [langchain](https://github.com/langchain-ai/langchain) | `0.2.17` | `1.2.7` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.2` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.7` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.68.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.3.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.43.1` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.4` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [roundrobin](https://github.com/linnik/roundrobin) | `0.0.4` | `0.1.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.2` |\n\nBumps the pip-production-dependencies group with 44 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.2.1` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2026.1.4` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.2` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.7` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.68.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.3.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.43.1` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.4` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [roundrobin](https://github.com/linnik/roundrobin) | `0.0.4` | `0.1.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.3` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.5` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.2` |\n\nBumps the pip-production-dependencies group with 12 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.2.1` |\n| [opentelemetry-instrumentation-grpc](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b1` |\n| [langchain](https://github.com/langchain-ai/langchain) | `0.2.17` | `1.2.7` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.50b0 to 0.60b1\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\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\u003ch2\u003eUnreleased\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Add exemplars for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3739\"\u003e#3739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-wsgi\u003c/code\u003e: Add exemplars for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3739\"\u003e#3739\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-client\u003c/code\u003e: add ability to capture custom headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3988\"\u003e#3988\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-requests\u003c/code\u003e: add ability to capture custom headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3987\"\u003e#3987\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-client\u003c/code\u003e: add typechecking for aiohttp-client instrumentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4006\"\u003e#4006\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Add support for 3.1+ streaming responses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3938\"\u003e#3938\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e: Support passing \u003ccode\u003eTracerProvider\u003c/code\u003e when instrumenting.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3819\"\u003e#3819\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-system-metrics\u003c/code\u003e: Add support for the \u003ccode\u003eOTEL_PYTHON_SYSTEM_METRICS_EXCLUDED_METRICS\u003c/code\u003e environment variable\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3959\"\u003e#3959\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-httpx\u003c/code\u003e: add ability to capture custom headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4047\"\u003e#4047\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-urllib3\u003c/code\u003e: add ability to capture custom headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4050\"\u003e#4050\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-urllib\u003c/code\u003e: add ability to capture custom headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4051\"\u003e#4051\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-confluent-kafka\u003c/code\u003e: Increase confluent-kafka upper bound to support newer versions (2.13.0)\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4099\"\u003e#4099\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e Implement new semantic convention opt-in migration\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3980\"\u003e#3980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-falcon\u003c/code\u003e: pass request attributes at span creation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4119\"\u003e#4119\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: add database stability attribute setters in \u003ccode\u003e_semconv\u003c/code\u003e utilities\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4108\"\u003e#4108\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Implement new semantic convention opt-in migration\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3993\"\u003e#3993\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: pass request attributes at span creation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/4140\"\u003e#4140\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-pyramid\u003c/code\u003e Implement new semantic convention opt-in migration\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\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.29.0 to 1.39.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.39.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.39.1/0.60b1 (2025-12-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSilence events API warnings for internal users\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4847\"\u003e#4847\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Convert objects of any type other than AnyValue in attributes to string to be exportable\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4808\"\u003e#4808\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edocs: Added sqlcommenter example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4734\"\u003e#4734\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebuild: bump ruff to 0.14.1\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4782\"\u003e#4782\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e as an optional dependency to \u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e\nand \u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4760\"\u003e#4760\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esemantic-conventions: Bump to 1.38.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4791\"\u003e#4791\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Remove LogData and extend SDK LogRecord to have instrumentation scope\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4676\"\u003e#4676\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Rename several classes from Log to LogRecord\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4647\"\u003e#4647\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration Guide:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eLogData\u003c/code\u003e has been removed. Users should update their code as follows:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Exporters:\u003c/strong\u003e Change from \u003ccode\u003eSequence[LogData]\u003c/code\u003e to \u003ccode\u003eSequence[ReadableLogRecord]\u003c/code\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef export(self, batch: Sequence[LogData]) -\u0026gt; LogRecordExportResult:\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadableLogRecord\ndef export(self, batch: Sequence[ReadableLogRecord]) -\u0026gt; LogRecordExportResult:\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Processors:\u003c/strong\u003e Use \u003ccode\u003eReadWriteLogRecord\u003c/code\u003e for processing, \u003ccode\u003eReadableLogRecord\u003c/code\u003e for exporting\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef on_emit(self, log_data: LogData):\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadWriteLogRecord, ReadableLogRecord\ndef on_emit(self, log_record: ReadWriteLogRecord):\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b4c13279187941b561de5d62e6483a91759ba123\"\u003e\u003ccode\u003eb4c1327\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.1/0.60b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4851\"\u003e#4851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/2fdd6587582febe0978d4b841c0f9ec92596d89b\"\u003e\u003ccode\u003e2fdd658\u003c/code\u003e\u003c/a\u003e Silence events warnings for internal users (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4850\"\u003e#4850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/dc0a9b340446b985cdebb6f45d70eab3e042c92a\"\u003e\u003ccode\u003edc0a9b3\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.0/0.60b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4833\"\u003e#4833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/cd150c3a201df6ff55c5a9b40ee877717d973a82\"\u003e\u003ccode\u003ecd150c3\u003c/code\u003e\u003c/a\u003e Fix changelog before the release (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4831\"\u003e#4831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/382fa46621953a80a6659bc4fb0a8266c4c982fc\"\u003e\u003ccode\u003e382fa46\u003c/code\u003e\u003c/a\u003e Mark events API/SDK as deprecated (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5307dd0a6cabea2877a67e067cf81be5285d586b\"\u003e\u003ccode\u003e5307dd0\u003c/code\u003e\u003c/a\u003e Fix errors on serialization of values that are not AnyValue in LogRecord attr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/8615ba0a0bc675d6ccad6693c637f009fec727eb\"\u003e\u003ccode\u003e8615ba0\u003c/code\u003e\u003c/a\u003e Fix type checking for built in metric exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4820\"\u003e#4820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/62da90eda4b1348730180ce2fa0aeae72e09c7ed\"\u003e\u003ccode\u003e62da90e\u003c/code\u003e\u003c/a\u003e Add lmolkova to approvers (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4812\"\u003e#4812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/61bda605d71498b15a13a106ed7564eaea9f642b\"\u003e\u003ccode\u003e61bda60\u003c/code\u003e\u003c/a\u003e Fix meeting and typos (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4817\"\u003e#4817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/546e47b0001b40ca777515325953106e81ed8dbd\"\u003e\u003ccode\u003e546e47b\u003c/code\u003e\u003c/a\u003e [logs-api/sdk] Rename several classes from Log to LogRecord (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4647\"\u003e#4647\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.29.0...v1.39.1\"\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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.2.1 to 4.0.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.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).\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\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/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\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v3.3.0\"\u003e3.3.0\u003c/a\u003e - 2025-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eexc_info_as_array\u003c/code\u003e and \u003ccode\u003estack_info_as_array\u003c/code\u003e options are added to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e allowing both to be encoded as list of lines instead of a single multi-line string. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/35\"\u003e#35\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003emsgspec-python313-pre\u003c/code\u003e from \u003ccode\u003edev\u003c/code\u003e dependencies preventing potential RCE. Details: \u003ca href=\"https://github.com/nhairs/python-json-logger/security/advisories/GHSA-wmxh-pxcx-9w24#advisory-comment-121307\"\u003eGHSA-wmxh-pxcx-9w24\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/1hakusai1\"\u003e\u003ccode\u003e@​1hakusai1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/omnigodz\"\u003e\u003ccode\u003e@​omnigodz\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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.4\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.3...v0.8.4\"\u003e0.8.4\u003c/a\u003e (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e63db4d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v5 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/539\"\u003e#539\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6aa54ba42b08a27083551dc831f1177e03524174\"\u003e6aa54ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e8fdd784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update amannn/action-semantic-pull-request action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/541\"\u003e#541\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/eea929d62ee470f56629461aec5f8d9f717bcea4\"\u003eeea929d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003ea9ee73a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to d0cc045 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/543\"\u003e#543\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/22210e69652384c0569117d50039045176d34d2a\"\u003e22210e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e0d8369f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003ed03223e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 64d10c1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/95b5ea04a22740a4733a68c16b2a6340adabb12d\"\u003e95b5ea0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e4d0779c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003ed537e5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e2138367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e63acac1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.3...v0.8.4\"\u003e0.8.4\u003c/a\u003e (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e63db4d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v5 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/539\"\u003e#539\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6aa54ba42b08a27083551dc831f1177e03524174\"\u003e6aa54ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e8fdd784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update amannn/action-semantic-pull-request action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/541\"\u003e#541\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/eea929d62ee470f56629461aec5f8d9f717bcea4\"\u003eeea929d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003ea9ee73a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to d0cc045 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/543\"\u003e#543\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/22210e69652384c0569117d50039045176d34d2a\"\u003e22210e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e0d8369f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003ed03223e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 64d10c1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/95b5ea04a22740a4733a68c16b2a6340adabb12d\"\u003e95b5ea0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e4d0779c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003ed537e5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e2138367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e63acac1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\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/open-feature/python-sdk/commit/418f3be69cdadd9617721c01eb91d4bce94d0399\"\u003e\u003ccode\u003e418f3be\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e\u003ccode\u003e63db4d7\u003c/code\u003e\u003c/a\u003e fix: mimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e\u003ccode\u003e8fdd784\u003c/code\u003e\u003c/a\u003e chore(deps): update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003e\u003ccode\u003ed537e5e\u003c/code\u003e\u003c/a\u003e chore: remove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e\u003ccode\u003e2138367\u003c/code\u003e\u003c/a\u003e chore: update license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e\u003ccode\u003e4d0779c\u003c/code\u003e\u003c/a\u003e chore: make the license field PEP639 compatible (\u003ca href=\"https://red...\n\n_Description has been truncated_","html_url":"https://github.com/aliyun-sls/opentelemetry_demo/pull/217","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliyun-sls%2Fopentelemetry_demo/issues/217","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/217/packages"}},{"old_version":"26.2.0","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2026-01-13T12:55:57.000Z","version_change":"26.2.0 → 27.1.0","issue":{"uuid":"3808738137","node_id":"PR_kwDOLufxkc687LO4","number":134,"state":"open","title":"deps: bump the ipykernel-updates group with 4 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":2,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2026-01-13T12:55:57.000Z","updated_at":"2026-01-17T16:46:21.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"deps: bump","group_name":"ipykernel-updates","update_count":4,"packages":[{"name":"ipykernel","old_version":"6.29.5","new_version":"7.1.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"psutil","old_version":"6.1.1","new_version":"7.2.1","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pyzmq","old_version":"26.2.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"tornado","old_version":"6.4.2","new_version":"6.5.4","repository_url":"https://github.com/tornadoweb/tornado"}],"path":null,"ecosystem":"pip"},"body":"Bumps the ipykernel-updates group with 4 updates: [ipykernel](https://github.com/ipython/ipykernel), [psutil](https://github.com/giampaolo/psutil), [pyzmq](https://github.com/zeromq/pyzmq) and [tornado](https://github.com/tornadoweb/tornado).\n\nUpdates `ipykernel` from 6.29.5 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ipython/ipykernel/releases\"\u003eipykernel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.1.0\u003c/h2\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using \u003ccode\u003e%notebook\u003c/code\u003e magic to save sessions as \u003ccode\u003e.ipynb\u003c/code\u003e files (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1435\"\u003e#1435\u003c/a\u003e). This is enabled using the traitlet \u003ccode\u003eZMQDisplayPublisher.store_display_history\u003c/code\u003e which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.\u003c/p\u003e\n\u003cp\u003eOutput from threads is restored to the pre-6.29 behavior by default (route to latest cell, unless \u003ccode\u003eget_ipython().set_parent()\u003c/code\u003e is called explicitly from the thread. If it is called, output from that thread will continue to be routed to the same cell). This behavior is now opt-in, instead of unconditional (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1451\"\u003e#1451\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eThis release also fixes bugs that were introduced into the 7.x branch relating to Matplotlib plots in separate windows not being displayed correctly (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1458\"\u003e#1458\u003c/a\u003e), kernels launched in new threads failing asserts (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1455\"\u003e#1455\u003c/a\u003e), and \u003ccode\u003eContextVar\u003c/code\u003es persisting between cells (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1462\"\u003e#1462\u003c/a\u003e). There is also a fix for keyboard interrupts on Windows (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1434\"\u003e#1434\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.1...6f61a6835c217e42c406ee01b359e2fa235baf43\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStore display outputs in history for \u003ccode\u003e%notebook\u003c/code\u003e magic \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1435\"\u003e#1435\u003c/a\u003e (\u003ca href=\"https://github.com/Darshan808\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix ContextVar persistence across cells \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1462\"\u003e#1462\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix matplotlib eventloops \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1458\"\u003e#1458\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefer to kernel launching thread instead of assuming the main thread \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1455\"\u003e#1455\u003c/a\u003e (\u003ca href=\"https://github.com/dfalbel\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix routing of background thread output when no parent is set explicitly \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1451\"\u003e#1451\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KeyboardInterrupt on Windows by manually resetting interrupt event \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1434\"\u003e#1434\u003c/a\u003e (\u003ca href=\"https://github.com/ptosco\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate pre-commit and related \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1465\"\u003e#1465\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest that matplotlib event loop integration is responsive \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1463\"\u003e#1463\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate tests for 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1453\"\u003e#1453\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/graphs/contributors?from=2025-10-14\u0026amp;to=2025-10-27\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ACarreau+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adfalbel+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​lumberbot-app\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aptosco+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.0.1\u003c/h2\u003e\n\u003ch2\u003e7.0.1\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.0.1 is a bug fix release to support CPython 3.14.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.0...6d9a14a21a8e328e384ebac48e4ccbaad85b1d45\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid overriding Thread._context in Python 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1447\"\u003e#1447\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ipython/ipykernel/blob/main/CHANGELOG.md\"\u003eipykernel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using \u003ccode\u003e%notebook\u003c/code\u003e magic to save sessions as \u003ccode\u003e.ipynb\u003c/code\u003e files (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1435\"\u003e#1435\u003c/a\u003e). This is enabled using the traitlet \u003ccode\u003eZMQDisplayPublisher.store_display_history\u003c/code\u003e which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.\u003c/p\u003e\n\u003cp\u003eOutput from threads is restored to the pre-6.29 behavior by default (route to latest cell, unless \u003ccode\u003eget_ipython().set_parent()\u003c/code\u003e is called explicitly from the thread. If it is called, output from that thread will continue to be routed to the same cell). This behavior is now opt-in, instead of unconditional (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1451\"\u003e#1451\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eThis release also fixes bugs that were introduced into the 7.x branch relating to Matplotlib plots in separate windows not being displayed correctly (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1458\"\u003e#1458\u003c/a\u003e), kernels launched in new threads failing asserts (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1455\"\u003e#1455\u003c/a\u003e), and \u003ccode\u003eContextVar\u003c/code\u003es persisting between cells (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1462\"\u003e#1462\u003c/a\u003e). There is also a fix for keyboard interrupts on Windows (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1434\"\u003e#1434\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.1...6f61a6835c217e42c406ee01b359e2fa235baf43\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStore display outputs in history for \u003ccode\u003e%notebook\u003c/code\u003e magic \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1435\"\u003e#1435\u003c/a\u003e (\u003ca href=\"https://github.com/Darshan808\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix ContextVar persistence across cells \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1462\"\u003e#1462\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix matplotlib eventloops \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1458\"\u003e#1458\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefer to kernel launching thread instead of assuming the main thread \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1455\"\u003e#1455\u003c/a\u003e (\u003ca href=\"https://github.com/dfalbel\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix routing of background thread output when no parent is set explicitly \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1451\"\u003e#1451\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KeyboardInterrupt on Windows by manually resetting interrupt event \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1434\"\u003e#1434\u003c/a\u003e (\u003ca href=\"https://github.com/ptosco\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate pre-commit and related \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1465\"\u003e#1465\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest that matplotlib event loop integration is responsive \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1463\"\u003e#1463\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate tests for 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1453\"\u003e#1453\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/graphs/contributors?from=2025-10-14\u0026amp;to=2025-10-27\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ACarreau+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adfalbel+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​lumberbot-app\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aptosco+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e7.0.1\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.0.1 is a bug fix release to support CPython 3.14.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.0...6d9a14a21a8e328e384ebac48e4ccbaad85b1d45\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid overriding Thread._context in Python 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1447\"\u003e#1447\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix 7.x license warnings \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1448\"\u003e#1448\u003c/a\u003e (\u003ca href=\"https://github.com/bollwyvl\"\u003e\u003ccode\u003e@​bollwyvl\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eci: Test on PyPy 3.11 instead of 3.10 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1444\"\u003e#1444\u003c/a\u003e (\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation improvements\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/ipython/ipykernel/commit/39eaf96ab6db0d0ff9ad269831384c53a11e11d8\"\u003e\u003ccode\u003e39eaf96\u003c/code\u003e\u003c/a\u003e Publish 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/6f61a6835c217e42c406ee01b359e2fa235baf43\"\u003e\u003ccode\u003e6f61a68\u003c/code\u003e\u003c/a\u003e test that matplotlib event loop integration is responsive (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1463\"\u003e#1463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/8446e02948c390793e129affeceedfa30ed5080f\"\u003e\u003ccode\u003e8446e02\u003c/code\u003e\u003c/a\u003e Fix KeyboardInterrupt on Windows by manually resetting interrupt event (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1434\"\u003e#1434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/dd1e09484854c8dedcd98436bc01b6b8e1cc9034\"\u003e\u003ccode\u003edd1e094\u003c/code\u003e\u003c/a\u003e update pre-commit and related (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1465\"\u003e#1465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/95f245138589db4f723b8af06107cdfeadc53314\"\u003e\u003ccode\u003e95f2451\u003c/code\u003e\u003c/a\u003e fix ContextVar persistence across cells (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1462\"\u003e#1462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/c56a7aab3cad1fb91f7e7185dc7403d561ecd667\"\u003e\u003ccode\u003ec56a7aa\u003c/code\u003e\u003c/a\u003e Fix matplotlib eventloops (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/c7af34cd19ebcd43f5aafe1919909feb6e898387\"\u003e\u003ccode\u003ec7af34c\u003c/code\u003e\u003c/a\u003e Refer to kernel laucnhing thread instead of assuming the main thread (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1455\"\u003e#1455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/7193d14de447a18470a18d60b81eda5f0048b6aa\"\u003e\u003ccode\u003e7193d14\u003c/code\u003e\u003c/a\u003e Fix routing of background thread output when no parent is set explicitly (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1451\"\u003e#1451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/b8f5dfc3a35a658c66b85213e60f634bd8a44488\"\u003e\u003ccode\u003eb8f5dfc\u003c/code\u003e\u003c/a\u003e Store display outputs in history for \u003ccode\u003e%notebook\u003c/code\u003e magic (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/93f11dbb02692a7922cb6fdb4ebadffdb8b691c0\"\u003e\u003ccode\u003e93f11db\u003c/code\u003e\u003c/a\u003e update tests for 3.14 (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1453\"\u003e#1453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ipython/ipykernel/compare/v6.29.5...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `psutil` from 6.1.1 to 7.2.1\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/giampaolo/psutil/blob/master/HISTORY.rst\"\u003epsutil's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e7.2.1\u003c/h1\u003e\n\u003cp\u003e2025-12-29\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eBug fixes\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2699_, [FreeBSD], [NetBSD]: \u003ccode\u003eheap_info()\u003c/code\u003e_ does not detect small allocations\n(\u0026lt;= 1K). In order to fix that, we now flush internal jemalloc cache before\nfetching the metrics.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.2.0\u003c/h1\u003e\n\u003cp\u003e2025-12-23\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e1275_: new \u003ccode\u003eheap_info()\u003c/code\u003e_ and \u003ccode\u003eheap_trim()\u003c/code\u003e_ functions, providing direct\naccess to the platform's native C heap allocator (glibc, mimalloc,\nlibmalloc). Useful to create tools to detect memory leaks.\u003c/li\u003e\n\u003cli\u003e2403_, [Linux]: publish wheels for Linux musl.\u003c/li\u003e\n\u003cli\u003e2680_: unit tests are no longer installed / part of the distribution. They\nnow 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\u003e2684_, [FreeBSD], [critical]: compilation fails on FreeBSD 14 due to missing\ninclude.\u003c/li\u003e\n\u003cli\u003e2691_, [Windows]: fix memory leak in \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\u003cul\u003e\n\u003cli\u003e2680_: \u003ccode\u003eimport psutil.tests\u003c/code\u003e no longer works (but it was never documented to\nbegin with).\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch1\u003e7.1.3\u003c/h1\u003e\n\u003cp\u003e2025-11-02\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eEnhancements\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e2667_: enforce \u003ccode\u003eclang-format\u003c/code\u003e on all C and header files. It is now the\nmandatory formatting style for all C sources.\u003c/li\u003e\n\u003cli\u003e2672_, [macOS], [BSD]: increase the chances to recognize zombie processes and\nraise the appropriate exception (\u003ccode\u003eZombieProcess\u003c/code\u003e_).\u003c/li\u003e\n\u003cli\u003e2676_, 2678_: replace unsafe \u003ccode\u003esprintf\u003c/code\u003e / \u003ccode\u003esnprintf\u003c/code\u003e / \u003ccode\u003esprintf_s\u003c/code\u003e calls with\n\u003ccode\u003estr_format()\u003c/code\u003e. Replace \u003ccode\u003estrlcat\u003c/code\u003e / \u003ccode\u003estrlcpy\u003c/code\u003e with safe \u003ccode\u003estr_copy\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/giampaolo/psutil/commit/6130c19da2d01383befa0dfca2371a792f8881af\"\u003e\u003ccode\u003e6130c19\u003c/code\u003e\u003c/a\u003e Fix \u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2699\"\u003e#2699\u003c/a\u003e / BSD: flush internal jemalloc cache before returning metrics.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/899ee4efa9c1943de14a5818853b6dc9c019eb4f\"\u003e\u003ccode\u003e899ee4e\u003c/code\u003e\u003c/a\u003e Mention psleak\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/704e218db7da14e98a54f2aa9f93372d5900e0b4\"\u003e\u003ccode\u003e704e218\u003c/code\u003e\u003c/a\u003e Pre-release\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/1a946cfe738045cecf031222cd5078da21946af4\"\u003e\u003ccode\u003e1a946cf\u003c/code\u003e\u003c/a\u003e Take psleak from PYPI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/5085421cabed317d5e2f7164e6072b0be05ba4f1\"\u003e\u003ccode\u003e5085421\u003c/code\u003e\u003c/a\u003e Use external psleak module for memleak tests (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2698\"\u003e#2698\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/ac56e6ad0b7c08755a5542afdacb668ad164fd09\"\u003e\u003ccode\u003eac56e6a\u003c/code\u003e\u003c/a\u003e CI: don't cancel CI in progress on 1st failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/10fe3d5e9372a504167b0a4df440ab949c0410fe\"\u003e\u003ccode\u003e10fe3d5\u003c/code\u003e\u003c/a\u003e Merge branch 'master' of github.com:giampaolo/psutil\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/ba507bd26bbfe5d1bdc45d606c8979f9e6f632cb\"\u003e\u003ccode\u003eba507bd\u003c/code\u003e\u003c/a\u003e Fix various CI errors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/d5a1398f0860c04883ef881c4760f32d14ef4abf\"\u003e\u003ccode\u003ed5a1398\u003c/code\u003e\u003c/a\u003e Update cpu_count docs: clarify differences from os.cpu_count (\u003ca href=\"https://redirect.github.com/giampaolo/psutil/issues/2696\"\u003e#2696\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/giampaolo/psutil/commit/556158f55fc3b2f1271b48c66c46912323cf8bec\"\u003e\u003ccode\u003e556158f\u003c/code\u003e\u003c/a\u003e Refact memleak.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/giampaolo/psutil/compare/release-6.1.1...release-7.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pyzmq` from 26.2.0 to 27.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zeromq/pyzmq/releases\"\u003epyzmq's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev27.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.1.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.2'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.1'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev26.4.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\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/zeromq/pyzmq/commit/425a21fd2ae3bc50d81176ff9a8253af3535a3d4\"\u003e\u003ccode\u003e425a21f\u003c/code\u003e\u003c/a\u003e Bump to 27.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/c6bf62145e912a95c0dfccff4609d1e52b464ceb\"\u003e\u003ccode\u003ec6bf621\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2127\"\u003e#2127\u003c/a\u003e from minrk/271\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/3558cceb69d9d5ca1ac14e2dc300060232371e86\"\u003e\u003ccode\u003e3558cce\u003c/code\u003e\u003c/a\u003e release 27.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/17b9ce8d4e7bbe4f35271a303a73498cff46d9fa\"\u003e\u003ccode\u003e17b9ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2126\"\u003e#2126\u003c/a\u003e from minrk/compile-time-drafts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/83040f7467f268c1cddfd26efac7790bdd7d64e0\"\u003e\u003ccode\u003e83040f7\u003c/code\u003e\u003c/a\u003e restore zmq.DRAFT_API meaning drafts are actually available\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/e21dcd8e0bfa8194230b588864b03cbbb839ea10\"\u003e\u003ccode\u003ee21dcd8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2124\"\u003e#2124\u003c/a\u003e from zeromq/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/26233552a6c6557f2749265d3909a466ac57c3c3\"\u003e\u003ccode\u003e2623355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/684b2e5cb40b764ca45875a0c0b3af6d4662d46c\"\u003e\u003ccode\u003e684b2e5\u003c/code\u003e\u003c/a\u003e Bump to 27.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/912e61982a3413d9b7cdc1786fac3b5d5fa64620\"\u003e\u003ccode\u003e912e619\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2122\"\u003e#2122\u003c/a\u003e from minrk/devmode-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/69f8d905855421fb69e1783c71a4c1502c299bd8\"\u003e\u003ccode\u003e69f8d90\u003c/code\u003e\u003c/a\u003e changelog for 27.0.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/zeromq/pyzmq/compare/v26.2.0...v27.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `tornado` from 6.4.2 to 6.5.4\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/tornadoweb/tornado/blob/v6.5.4/docs/releases.rst\"\u003etornado's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eRelease notes\u003c/h1\u003e\n\u003cp\u003e.. toctree::\n:maxdepth: 2\u003c/p\u003e\n\u003cp\u003ereleases/v6.5.4\nreleases/v6.5.3\nreleases/v6.5.2\nreleases/v6.5.1\nreleases/v6.5.0\nreleases/v6.4.2\nreleases/v6.4.1\nreleases/v6.4.0\nreleases/v6.3.3\nreleases/v6.3.2\nreleases/v6.3.1\nreleases/v6.3.0\nreleases/v6.2.0\nreleases/v6.1.0\nreleases/v6.0.4\nreleases/v6.0.3\nreleases/v6.0.2\nreleases/v6.0.1\nreleases/v6.0.0\nreleases/v5.1.1\nreleases/v5.1.0\nreleases/v5.0.2\nreleases/v5.0.1\nreleases/v5.0.0\nreleases/v4.5.3\nreleases/v4.5.2\nreleases/v4.5.1\nreleases/v4.5.0\nreleases/v4.4.3\nreleases/v4.4.2\nreleases/v4.4.1\nreleases/v4.4.0\nreleases/v4.3.0\nreleases/v4.2.1\nreleases/v4.2.0\nreleases/v4.1.0\nreleases/v4.0.2\nreleases/v4.0.1\nreleases/v4.0.0\nreleases/v3.2.2\nreleases/v3.2.1\nreleases/v3.2.0\nreleases/v3.1.1\nreleases/v3.1.0\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/tornadoweb/tornado/commit/63d4df4eefa6750bb14efa1ebffe67b8c54fbad4\"\u003e\u003ccode\u003e63d4df4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tornadoweb/tornado/issues/3564\"\u003e#3564\u003c/a\u003e from bdarnell/release-654\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/eadbf9adbe9db19e2686a32f48ddf9a25518c4f6\"\u003e\u003ccode\u003eeadbf9a\u003c/code\u003e\u003c/a\u003e Release notes and version bump for 6.5.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/bbc2b1429c6db80765a8a95c09ddddc7bb40e4e8\"\u003e\u003ccode\u003ebbc2b14\u003c/code\u003e\u003c/a\u003e Make sure that the in-operator on HTTPHeaders is case insensitive\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/38014ddb51520ff7762c1d55535925dba2cdbe31\"\u003e\u003ccode\u003e38014dd\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tornadoweb/tornado/issues/3558\"\u003e#3558\u003c/a\u003e from bdarnell/relnotes-653\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/083e2b24bb0ab1bbc049192d5aca86c059c98d80\"\u003e\u003ccode\u003e083e2b2\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tornadoweb/tornado/issues/3557\"\u003e#3557\u003c/a\u003e from bdarnell/perf-counter-65\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/31431c9aecefeb64b4c2fddcff5a25eccc12e981\"\u003e\u003ccode\u003e31431c9\u003c/code\u003e\u003c/a\u003e test: Use time.perf_counter instead of time.time for performance tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/07b5924706b1992ccc4c272365efcf46b08e8b0d\"\u003e\u003ccode\u003e07b5924\u003c/code\u003e\u003c/a\u003e tox: Pin pycares version 4 due to backwards-incompatible changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/a5e50e20d635916415b8609df1bbad57fce3613c\"\u003e\u003ccode\u003ea5e50e2\u003c/code\u003e\u003c/a\u003e Release notes and version bump for 6.5.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/297662942893c1f01a8e4ca0f82503e89594a53c\"\u003e\u003ccode\u003e2976629\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/tornadoweb/tornado/issues/3555\"\u003e#3555\u003c/a\u003e from bdarnell/release-653\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tornadoweb/tornado/commit/9c163aebeaad9e6e7d28bac1f33580eb00b0e421\"\u003e\u003ccode\u003e9c163ae\u003c/code\u003e\u003c/a\u003e web: Harden against invalid HTTP reason phrases\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/tornadoweb/tornado/compare/v6.4.2...v6.5.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore \u003cdependency name\u003e major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)\n- `@dependabot ignore \u003cdependency name\u003e` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)\n- `@dependabot unignore \u003cdependency name\u003e` will remove all of the ignore conditions of the specified dependency\n- `@dependabot unignore \u003cdependency name\u003e \u003cignore condition\u003e` will remove the ignore condition of the specified dependency and ignore conditions\n\n\n\u003c/details\u003e","html_url":"https://github.com/OpenMS/pyopenms_viz/pull/134","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenMS%2Fpyopenms_viz/issues/134","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/134/packages"}},{"old_version":"26.2.1","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-12-18T14:27:10.000Z","version_change":"26.2.1 → 27.1.0","issue":{"uuid":"3743394485","node_id":"PR_kwDOOcEvi865m7FP","number":137,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 47 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-26T16:25:15.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-18T14:27:10.000Z","updated_at":"2026-01-26T16:25:17.000Z","time_to_close":3376685,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":47,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.4","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.0","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.7","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.3.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"openfeature-provider-ofrep","old_version":"0.1.1","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 47 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.2` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.7` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.3.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.2` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 42 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.2` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.7` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.3.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.2` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 10 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.51b0 to 0.60b1\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\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\u003ch2\u003eUnreleased\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.(request.)duration\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3945\"\u003e#3945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-util-http\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-requests\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-wsgi\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: normalize byte-valued user-agent headers before detecting synthetic sources so attributes are recorded reliably.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-requests\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-wsgi\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e Detect synthetic sources on requests, ASGI, and WSGI.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3674\"\u003e#3674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-client\u003c/code\u003e: add support for url exclusions via \u003ccode\u003eOTEL_PYTHON_EXCLUDED_URLS\u003c/code\u003e / \u003ccode\u003eOTEL_PYTHON_AIOHTTP_CLIENT_EXCLUDED_URLS\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3850\"\u003e#3850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-httpx\u003c/code\u003e: add support for url exclusions via \u003ccode\u003eOTEL_PYTHON_EXCLUDED_URLS\u003c/code\u003e / \u003ccode\u003eOTEL_PYTHON_HTTPX_EXCLUDED_URLS\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3837\"\u003e#3837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3883\"\u003e#3883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlalchemy\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3886\"\u003e#3886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-mysql\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-mysqlclient\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-pymysql\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3885\"\u003e#3885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3884\"\u003e#3884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e: add support for custom header captures via \u003ccode\u003eOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST\u003c/code\u003e and \u003ccode\u003eOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-redis\u003c/code\u003e: add support for \u003ccode\u003esuppress_instrumentation\u003c/code\u003e context manager for both sync and async Redis clients and pipelines\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: improve docs for response_hook with examples of providing attributes from middlewares\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3923\"\u003e#3923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate for Log SDK breaking changes. Rename InMemoryLogExporter to InMemoryLogRecordExporter in several tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-instrumentation: allow to skip all instrumentations loading with a wildcard\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-redis\u003c/code\u003e: add missing copyright header for opentelemetry-instrumentation-redis\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3976\"\u003e#3976\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.30.0 to 1.39.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.39.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.39.1/0.60b1 (2025-12-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSilence events API warnings for internal users\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4847\"\u003e#4847\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Convert objects of any type other than AnyValue in attributes to string to be exportable\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4808\"\u003e#4808\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edocs: Added sqlcommenter example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4734\"\u003e#4734\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebuild: bump ruff to 0.14.1\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4782\"\u003e#4782\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e as an optional dependency to \u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e\nand \u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4760\"\u003e#4760\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esemantic-conventions: Bump to 1.38.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4791\"\u003e#4791\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Remove LogData and extend SDK LogRecord to have instrumentation scope\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4676\"\u003e#4676\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Rename several classes from Log to LogRecord\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4647\"\u003e#4647\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration Guide:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eLogData\u003c/code\u003e has been removed. Users should update their code as follows:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Exporters:\u003c/strong\u003e Change from \u003ccode\u003eSequence[LogData]\u003c/code\u003e to \u003ccode\u003eSequence[ReadableLogRecord]\u003c/code\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef export(self, batch: Sequence[LogData]) -\u0026gt; LogRecordExportResult:\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadableLogRecord\ndef export(self, batch: Sequence[ReadableLogRecord]) -\u0026gt; LogRecordExportResult:\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Processors:\u003c/strong\u003e Use \u003ccode\u003eReadWriteLogRecord\u003c/code\u003e for processing, \u003ccode\u003eReadableLogRecord\u003c/code\u003e for exporting\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef on_emit(self, log_data: LogData):\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadWriteLogRecord, ReadableLogRecord\ndef on_emit(self, log_record: ReadWriteLogRecord):\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b4c13279187941b561de5d62e6483a91759ba123\"\u003e\u003ccode\u003eb4c1327\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.1/0.60b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4851\"\u003e#4851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/2fdd6587582febe0978d4b841c0f9ec92596d89b\"\u003e\u003ccode\u003e2fdd658\u003c/code\u003e\u003c/a\u003e Silence events warnings for internal users (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4850\"\u003e#4850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/dc0a9b340446b985cdebb6f45d70eab3e042c92a\"\u003e\u003ccode\u003edc0a9b3\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.0/0.60b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4833\"\u003e#4833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/cd150c3a201df6ff55c5a9b40ee877717d973a82\"\u003e\u003ccode\u003ecd150c3\u003c/code\u003e\u003c/a\u003e Fix changelog before the release (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4831\"\u003e#4831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/382fa46621953a80a6659bc4fb0a8266c4c982fc\"\u003e\u003ccode\u003e382fa46\u003c/code\u003e\u003c/a\u003e Mark events API/SDK as deprecated (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5307dd0a6cabea2877a67e067cf81be5285d586b\"\u003e\u003ccode\u003e5307dd0\u003c/code\u003e\u003c/a\u003e Fix errors on serialization of values that are not AnyValue in LogRecord attr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/8615ba0a0bc675d6ccad6693c637f009fec727eb\"\u003e\u003ccode\u003e8615ba0\u003c/code\u003e\u003c/a\u003e Fix type checking for built in metric exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4820\"\u003e#4820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/62da90eda4b1348730180ce2fa0aeae72e09c7ed\"\u003e\u003ccode\u003e62da90e\u003c/code\u003e\u003c/a\u003e Add lmolkova to approvers (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4812\"\u003e#4812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/61bda605d71498b15a13a106ed7564eaea9f642b\"\u003e\u003ccode\u003e61bda60\u003c/code\u003e\u003c/a\u003e Fix meeting and typos (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4817\"\u003e#4817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/546e47b0001b40ca777515325953106e81ed8dbd\"\u003e\u003ccode\u003e546e47b\u003c/code\u003e\u003c/a\u003e [logs-api/sdk] Rename several classes from Log to LogRecord (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4647\"\u003e#4647\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.39.1\"\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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.4\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.3...v0.8.4\"\u003e0.8.4\u003c/a\u003e (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e63db4d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v5 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/539\"\u003e#539\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6aa54ba42b08a27083551dc831f1177e03524174\"\u003e6aa54ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e8fdd784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update amannn/action-semantic-pull-request action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/541\"\u003e#541\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/eea929d62ee470f56629461aec5f8d9f717bcea4\"\u003eeea929d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003ea9ee73a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to d0cc045 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/543\"\u003e#543\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/22210e69652384c0569117d50039045176d34d2a\"\u003e22210e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e0d8369f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003ed03223e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 64d10c1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/95b5ea04a22740a4733a68c16b2a6340adabb12d\"\u003e95b5ea0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e4d0779c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003ed537e5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e2138367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e63acac1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.3...v0.8.4\"\u003e0.8.4\u003c/a\u003e (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e63db4d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v5 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/539\"\u003e#539\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6aa54ba42b08a27083551dc831f1177e03524174\"\u003e6aa54ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e8fdd784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update amannn/action-semantic-pull-request action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/541\"\u003e#541\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/eea929d62ee470f56629461aec5f8d9f717bcea4\"\u003eeea929d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003ea9ee73a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to d0cc045 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/543\"\u003e#543\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/22210e69652384c0569117d50039045176d34d2a\"\u003e22210e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e0d8369f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003ed03223e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 64d10c1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/95b5ea04a22740a4733a68c16b2a6340adabb12d\"\u003e95b5ea0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e4d0779c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003ed537e5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e2138367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e63acac1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\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/open-feature/python-sdk/commit/418f3be69cdadd9617721c01eb91d4bce94d0399\"\u003e\u003ccode\u003e418f3be\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e\u003ccode\u003e63db4d7\u003c/code\u003e\u003c/a\u003e fix: mimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e\u003ccode\u003e8fdd784\u003c/code\u003e\u003c/a\u003e chore(deps): update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003e\u003ccode\u003ed537e5e\u003c/code\u003e\u003c/a\u003e chore: remove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e\u003ccode\u003e2138367\u003c/code\u003e\u003c/a\u003e chore: update license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e\u003ccode\u003e4d0779c\u003c/code\u003e\u003c/a\u003e chore: make the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003e\u003ccode\u003ed03223e\u003c/code\u003e\u003c/a\u003e chore(deps): update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003e\u003ccode\u003ea9ee73a\u003c/code\u003e\u003c/a\u003e chore(deps): update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e\u003ccode\u003e63acac1\u003c/code\u003e\u003c/a\u003e chore: upgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e\u003ccode\u003e0d8369f\u003c/code\u003e\u003c/a\u003e chore(deps): update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.0...v0.8.4\"\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.0 to 0.2.6\n\u003cdetails\u003e...\n\n_Description has been truncated_","html_url":"https://github.com/shubhankar-max/Opentelemetry-Application/pull/137","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/shubhankar-max%2FOpentelemetry-Application/issues/137","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/137/packages"}},{"old_version":"26.2.1","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-12-18T07:25:54.000Z","version_change":"26.2.1 → 27.1.0","issue":{"uuid":"3741818314","node_id":"PR_kwDON4I6J865hhRd","number":186,"state":"closed","title":"Bump the pip-production-dependencies group across 3 directories with 46 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-26T07:41:31.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-18T07:25:54.000Z","updated_at":"2026-01-26T07:41:33.000Z","time_to_close":3370537,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-production-dependencies","update_count":46,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.4","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.1","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.2.0","new_version":"0.3.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.2","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.7","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.3.0","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.39.1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.60b1","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.2","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.6.2","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 46 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.1` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.2` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.7` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.3.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.2` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 42 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.1` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.2` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.7` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.3.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.60b1` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.2` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.6.2` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 10 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.60b1` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.39.1` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.4` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.1` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.3.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.51b0 to 0.60b1\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\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\u003ch2\u003eUnreleased\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.(request.)duration\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3945\"\u003e#3945\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-util-http\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-requests\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-wsgi\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: normalize byte-valued user-agent headers before detecting synthetic sources so attributes are recorded reliably.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/issues/4001\"\u003e#4001\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-requests\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-wsgi\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e Detect synthetic sources on requests, ASGI, and WSGI.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3674\"\u003e#3674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-client\u003c/code\u003e: add support for url exclusions via \u003ccode\u003eOTEL_PYTHON_EXCLUDED_URLS\u003c/code\u003e / \u003ccode\u003eOTEL_PYTHON_AIOHTTP_CLIENT_EXCLUDED_URLS\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3850\"\u003e#3850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-httpx\u003c/code\u003e: add support for url exclusions via \u003ccode\u003eOTEL_PYTHON_EXCLUDED_URLS\u003c/code\u003e / \u003ccode\u003eOTEL_PYTHON_HTTPX_EXCLUDED_URLS\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3837\"\u003e#3837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3883\"\u003e#3883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlalchemy\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3886\"\u003e#3886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-mysql\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-mysqlclient\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-pymysql\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3885\"\u003e#3885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3884\"\u003e#3884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e: add support for custom header captures via \u003ccode\u003eOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST\u003c/code\u003e and \u003ccode\u003eOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-redis\u003c/code\u003e: add support for \u003ccode\u003esuppress_instrumentation\u003c/code\u003e context manager for both sync and async Redis clients and pipelines\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: improve docs for response_hook with examples of providing attributes from middlewares\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3923\"\u003e#3923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate for Log SDK breaking changes. Rename InMemoryLogExporter to InMemoryLogRecordExporter in several tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-instrumentation: allow to skip all instrumentations loading with a wildcard\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-redis\u003c/code\u003e: add missing copyright header for opentelemetry-instrumentation-redis\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3976\"\u003e#3976\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.30.0 to 1.39.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.39.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.39.1/0.60b1 (2025-12-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSilence events API warnings for internal users\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4847\"\u003e#4847\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Convert objects of any type other than AnyValue in attributes to string to be exportable\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4808\"\u003e#4808\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edocs: Added sqlcommenter example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4734\"\u003e#4734\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebuild: bump ruff to 0.14.1\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4782\"\u003e#4782\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e as an optional dependency to \u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e\nand \u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4760\"\u003e#4760\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esemantic-conventions: Bump to 1.38.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4791\"\u003e#4791\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Remove LogData and extend SDK LogRecord to have instrumentation scope\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4676\"\u003e#4676\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Rename several classes from Log to LogRecord\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4647\"\u003e#4647\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration Guide:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eLogData\u003c/code\u003e has been removed. Users should update their code as follows:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Exporters:\u003c/strong\u003e Change from \u003ccode\u003eSequence[LogData]\u003c/code\u003e to \u003ccode\u003eSequence[ReadableLogRecord]\u003c/code\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef export(self, batch: Sequence[LogData]) -\u0026gt; LogRecordExportResult:\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadableLogRecord\ndef export(self, batch: Sequence[ReadableLogRecord]) -\u0026gt; LogRecordExportResult:\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Processors:\u003c/strong\u003e Use \u003ccode\u003eReadWriteLogRecord\u003c/code\u003e for processing, \u003ccode\u003eReadableLogRecord\u003c/code\u003e for exporting\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef on_emit(self, log_data: LogData):\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadWriteLogRecord, ReadableLogRecord\ndef on_emit(self, log_record: ReadWriteLogRecord):\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b4c13279187941b561de5d62e6483a91759ba123\"\u003e\u003ccode\u003eb4c1327\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.1/0.60b1 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4851\"\u003e#4851\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/2fdd6587582febe0978d4b841c0f9ec92596d89b\"\u003e\u003ccode\u003e2fdd658\u003c/code\u003e\u003c/a\u003e Silence events warnings for internal users (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4850\"\u003e#4850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/dc0a9b340446b985cdebb6f45d70eab3e042c92a\"\u003e\u003ccode\u003edc0a9b3\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.0/0.60b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4833\"\u003e#4833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/cd150c3a201df6ff55c5a9b40ee877717d973a82\"\u003e\u003ccode\u003ecd150c3\u003c/code\u003e\u003c/a\u003e Fix changelog before the release (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4831\"\u003e#4831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/382fa46621953a80a6659bc4fb0a8266c4c982fc\"\u003e\u003ccode\u003e382fa46\u003c/code\u003e\u003c/a\u003e Mark events API/SDK as deprecated (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5307dd0a6cabea2877a67e067cf81be5285d586b\"\u003e\u003ccode\u003e5307dd0\u003c/code\u003e\u003c/a\u003e Fix errors on serialization of values that are not AnyValue in LogRecord attr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/8615ba0a0bc675d6ccad6693c637f009fec727eb\"\u003e\u003ccode\u003e8615ba0\u003c/code\u003e\u003c/a\u003e Fix type checking for built in metric exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4820\"\u003e#4820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/62da90eda4b1348730180ce2fa0aeae72e09c7ed\"\u003e\u003ccode\u003e62da90e\u003c/code\u003e\u003c/a\u003e Add lmolkova to approvers (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4812\"\u003e#4812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/61bda605d71498b15a13a106ed7564eaea9f642b\"\u003e\u003ccode\u003e61bda60\u003c/code\u003e\u003c/a\u003e Fix meeting and typos (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4817\"\u003e#4817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/546e47b0001b40ca777515325953106e81ed8dbd\"\u003e\u003ccode\u003e546e47b\u003c/code\u003e\u003c/a\u003e [logs-api/sdk] Rename several classes from Log to LogRecord (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4647\"\u003e#4647\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.39.1\"\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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.4\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.3...v0.8.4\"\u003e0.8.4\u003c/a\u003e (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e63db4d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v5 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/539\"\u003e#539\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6aa54ba42b08a27083551dc831f1177e03524174\"\u003e6aa54ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e8fdd784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update amannn/action-semantic-pull-request action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/541\"\u003e#541\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/eea929d62ee470f56629461aec5f8d9f717bcea4\"\u003eeea929d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003ea9ee73a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to d0cc045 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/543\"\u003e#543\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/22210e69652384c0569117d50039045176d34d2a\"\u003e22210e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e0d8369f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003ed03223e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 64d10c1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/95b5ea04a22740a4733a68c16b2a6340adabb12d\"\u003e95b5ea0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e4d0779c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003ed537e5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e2138367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e63acac1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.3...v0.8.4\"\u003e0.8.4\u003c/a\u003e (2025-12-08)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e63db4d7\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v5 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/539\"\u003e#539\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6aa54ba42b08a27083551dc831f1177e03524174\"\u003e6aa54ba\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e8fdd784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update amannn/action-semantic-pull-request action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/541\"\u003e#541\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/eea929d62ee470f56629461aec5f8d9f717bcea4\"\u003eeea929d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003ea9ee73a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to d0cc045 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/543\"\u003e#543\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/22210e69652384c0569117d50039045176d34d2a\"\u003e22210e6\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e0d8369f\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003ed03223e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 64d10c1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/542\"\u003e#542\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/95b5ea04a22740a4733a68c16b2a6340adabb12d\"\u003e95b5ea0\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003emake the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e4d0779c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003ed537e5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e2138367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e63acac1\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\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/open-feature/python-sdk/commit/418f3be69cdadd9617721c01eb91d4bce94d0399\"\u003e\u003ccode\u003e418f3be\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/540\"\u003e#540\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63db4d7f6cecbbf221d7870d18131456266c3253\"\u003e\u003ccode\u003e63db4d7\u003c/code\u003e\u003c/a\u003e fix: mimic the behavior of stdlib StrEnum.\u003cstrong\u003estr\u003c/strong\u003e in backport (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/552\"\u003e#552\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8fdd784bac8a36ac517a30c8f180bacbb09a62e0\"\u003e\u003ccode\u003e8fdd784\u003c/code\u003e\u003c/a\u003e chore(deps): update actions/checkout action to v6 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/551\"\u003e#551\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d537e5e2a3b1cb17b20b8cebc4a63920c59d1f4a\"\u003e\u003ccode\u003ed537e5e\u003c/code\u003e\u003c/a\u003e chore: remove year from copyright (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/550\"\u003e#550\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/2138367be098740ea989ff49f800c5c5b748ff49\"\u003e\u003ccode\u003e2138367\u003c/code\u003e\u003c/a\u003e chore: update license copyright and add cursor to gitignore (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/549\"\u003e#549\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4d0779c56cc66d3fd9754a74f45c5c0a8e01c8ee\"\u003e\u003ccode\u003e4d0779c\u003c/code\u003e\u003c/a\u003e chore: make the license field PEP639 compatible (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/548\"\u003e#548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/d03223e72af4c9d49473284877d3ccf3d2fdb8fe\"\u003e\u003ccode\u003ed03223e\u003c/code\u003e\u003c/a\u003e chore(deps): update github/codeql-action action to v4 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/547\"\u003e#547\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a9ee73a670407bf23c150ae53112ac1dc037a75e\"\u003e\u003ccode\u003ea9ee73a\u003c/code\u003e\u003c/a\u003e chore(deps): update astral-sh/setup-uv action to v7 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/546\"\u003e#546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/63acac1f544724b0aea23141769b03229f3c81d1\"\u003e\u003ccode\u003e63acac1\u003c/code\u003e\u003c/a\u003e chore: upgrade uv and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/545\"\u003e#545\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0d8369f8d35aaeb869f5fea4943568f6e86cd137\"\u003e\u003ccode\u003e0d8369f\u003c/code\u003e\u003c/a\u003e chore(deps): update codecov/codecov-action action to v5.5.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/544\"\u003e#544\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.0...v0.8.4\"\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.1 to 0.2.6\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...\n\n_Description has been truncated_","html_url":"https://github.com/mokadir/mkadir-opentelemetry/pull/186","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mokadir%2Fmkadir-opentelemetry/issues/186","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/186/packages"}},{"old_version":"26.4.0","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-12-08T02:32:25.000Z","version_change":"26.4.0 → 27.1.0","issue":{"uuid":"3704392014","node_id":"PR_kwDOO1bbZM63kwzP","number":34,"state":"closed","title":"chore(deps): bump the production-dependencies group across 1 directory with 73 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-15T02:26:50.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-08T02:32:25.000Z","updated_at":"2025-12-15T02:26:52.000Z","time_to_close":604465,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps): bump","group_name":"production-dependencies","update_count":73,"packages":[{"name":"ipykernel","old_version":"6.29.5","new_version":"7.1.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"matplotlib","old_version":"3.10.3","new_version":"3.10.7","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"pandas","old_version":"2.2.3","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"plotly","old_version":"6.1.2","new_version":"6.5.0","repository_url":"https://github.com/plotly/plotly.py"},{"name":"pypsa","old_version":"0.34.1","new_version":"1.0.5","repository_url":"https://github.com/PyPSA/PyPSA"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"bottleneck","old_version":"1.5.0","new_version":"1.6.0","repository_url":"https://github.com/pydata/bottleneck"},{"name":"cdsapi","old_version":"0.7.6","new_version":"0.7.7","repository_url":"https://github.com/ecmwf/cdsapi"},{"name":"certifi","old_version":"2025.4.26","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"cfgrib","old_version":"0.9.15.0","new_version":"0.9.15.1","repository_url":"https://github.com/ecmwf/cfgrib"},{"name":"cftime","old_version":"1.6.4.post1","new_version":"1.6.5","repository_url":"https://github.com/Unidata/cftime"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.2.1","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"cloudpickle","old_version":"3.1.1","new_version":"3.1.2","repository_url":"https://github.com/cloudpipe/cloudpickle"},{"name":"comm","old_version":"0.2.2","new_version":"0.2.3","repository_url":"https://github.com/ipython/comm"},{"name":"contourpy","old_version":"1.3.2","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"dask","old_version":"2025.5.1","new_version":"2025.11.0","repository_url":"https://github.com/dask/dask"},{"name":"debugpy","old_version":"1.8.14","new_version":"1.8.17","repository_url":"https://github.com/microsoft/debugpy"},{"name":"eccodes","old_version":"2.42.0","new_version":"2.44.0","repository_url":"https://github.com/ecmwf/eccodes-python"},{"name":"ecmwf-datastores-client","old_version":"0.2.0","new_version":"0.4.1","repository_url":"https://github.com/ecmwf/ecmwf-datastores-client"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"fastjsonschema","old_version":"2.21.1","new_version":"2.21.2","repository_url":"https://github.com/horejsek/python-fastjsonschema"},{"name":"findlibs","old_version":"0.1.1","new_version":"0.1.2","repository_url":"https://github.com/ecmwf/findlibs"},{"name":"fonttools","old_version":"4.58.1","new_version":"4.61.0","repository_url":"https://github.com/fonttools/fonttools"},{"name":"fsspec","old_version":"2025.5.1","new_version":"2025.12.0","repository_url":"https://github.com/fsspec/filesystem_spec"},{"name":"geopandas","old_version":"1.1.0","new_version":"1.1.1","repository_url":"https://github.com/geopandas/geopandas"},{"name":"h5netcdf","old_version":"1.6.3","new_version":"1.7.3","repository_url":"https://github.com/h5netcdf/h5netcdf"},{"name":"h5py","old_version":"3.14.0","new_version":"3.15.1","repository_url":"https://github.com/h5py/h5py"},{"name":"highspy","old_version":"1.10.0","new_version":"1.12.0","repository_url":"https://github.com/ERGO-Code/HiGHS"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"ipython","old_version":"9.3.0","new_version":"9.8.0","repository_url":"https://github.com/ipython/ipython"},{"name":"jsonschema","old_version":"4.24.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"jupyter-core","old_version":"5.8.1","new_version":"5.9.1","repository_url":"https://github.com/jupyter/jupyter_core"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"linopy","old_version":"0.5.5","new_version":"0.5.8","repository_url":"https://github.com/PyPSA/linopy"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"multiurl","old_version":"0.3.6","new_version":"0.3.7","repository_url":"https://github.com/ecmwf/multiurl"},{"name":"narwhals","old_version":"1.41.0","new_version":"2.13.0","repository_url":"https://github.com/narwhals-dev/narwhals"},{"name":"netcdf4","old_version":"1.7.2","new_version":"1.7.3","repository_url":"https://github.com/Unidata/netcdf4-python"},{"name":"networkx","old_version":"3.5","new_version":"3.6","repository_url":"https://github.com/networkx/networkx"},{"name":"numexpr","old_version":"2.10.2","new_version":"2.14.1","repository_url":"https://github.com/pydata/numexpr"},{"name":"numpy","old_version":"2.2.0","new_version":"2.3.5","repository_url":"https://github.com/numpy/numpy"},{"name":"packaging","old_version":"24.2","new_version":"25.0","repository_url":"https://github.com/pypa/packaging"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"pillow","old_version":"11.2.1","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.1","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"polars","old_version":"1.30.0","new_version":"1.35.2","repository_url":"https://github.com/pola-rs/polars"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pyogrio","old_version":"0.11.0","new_version":"0.12.1","repository_url":"https://github.com/geopandas/pyogrio"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.2.5","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"pyproj","old_version":"3.7.1","new_version":"3.7.2","repository_url":"https://github.com/pyproj4/pyproj"},{"name":"pytz","old_version":"2024.2","new_version":"2025.2","repository_url":"https://github.com/stub42/pytz"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"pyzmq","old_version":"26.4.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rpds-py","old_version":"0.25.1","new_version":"0.30.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"scipy","old_version":"1.15.3","new_version":"1.16.3","repository_url":"https://github.com/scipy/scipy"},{"name":"shapely","old_version":"2.0.7","new_version":"2.1.2","repository_url":"https://github.com/shapely/shapely"},{"name":"toolz","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/pytoolz/toolz"},{"name":"tornado","old_version":"6.5.1","new_version":"6.5.2","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"typing-extensions","old_version":"4.14.0","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"tzdata","old_version":"2024.2","new_version":"2025.2","repository_url":"https://github.com/python/tzdata"},{"name":"urllib3","old_version":"2.5.0","new_version":"2.6.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.2.14","repository_url":"https://github.com/jquast/wcwidth"},{"name":"xarray","old_version":"2025.4.0","new_version":"2025.12.0","repository_url":"https://github.com/pydata/xarray"},{"name":"zipp","old_version":"3.22.0","new_version":"3.23.0","repository_url":"https://github.com/jaraco/zipp"}],"path":null,"ecosystem":"pip"},"body":"Bumps the production-dependencies group with 73 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [ipykernel](https://github.com/ipython/ipykernel) | `6.29.5` | `7.1.0` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.3` | `3.10.7` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.2.3` | `2.3.3` |\n| [plotly](https://github.com/plotly/plotly.py) | `6.1.2` | `6.5.0` |\n| [pypsa](https://github.com/PyPSA/PyPSA) | `0.34.1` | `1.0.5` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [bottleneck](https://github.com/pydata/bottleneck) | `1.5.0` | `1.6.0` |\n| [cdsapi](https://github.com/ecmwf/cdsapi) | `0.7.6` | `0.7.7` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.4.26` | `2025.11.12` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [cfgrib](https://github.com/ecmwf/cfgrib) | `0.9.15.0` | `0.9.15.1` |\n| [cftime](https://github.com/Unidata/cftime) | `1.6.4.post1` | `1.6.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.2.1` | `8.3.1` |\n| [cloudpickle](https://github.com/cloudpipe/cloudpickle) | `3.1.1` | `3.1.2` |\n| [comm](https://github.com/ipython/comm) | `0.2.2` | `0.2.3` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.2` | `1.3.3` |\n| [dask](https://github.com/dask/dask) | `2025.5.1` | `2025.11.0` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.14` | `1.8.17` |\n| [eccodes](https://github.com/ecmwf/eccodes-python) | `2.42.0` | `2.44.0` |\n| [ecmwf-datastores-client](https://github.com/ecmwf/ecmwf-datastores-client) | `0.2.0` | `0.4.1` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [fastjsonschema](https://github.com/horejsek/python-fastjsonschema) | `2.21.1` | `2.21.2` |\n| [findlibs](https://github.com/ecmwf/findlibs) | `0.1.1` | `0.1.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.1` | `4.61.0` |\n| [fsspec](https://github.com/fsspec/filesystem_spec) | `2025.5.1` | `2025.12.0` |\n| [geopandas](https://github.com/geopandas/geopandas) | `1.1.0` | `1.1.1` |\n| [h5netcdf](https://github.com/h5netcdf/h5netcdf) | `1.6.3` | `1.7.3` |\n| [h5py](https://github.com/h5py/h5py) | `3.14.0` | `3.15.1` |\n| [highspy](https://github.com/ERGO-Code/HiGHS) | `1.10.0` | `1.12.0` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [ipython](https://github.com/ipython/ipython) | `9.3.0` | `9.8.0` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.24.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [jupyter-core](https://github.com/jupyter/jupyter_core) | `5.8.1` | `5.9.1` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [linopy](https://github.com/PyPSA/linopy) | `0.5.5` | `0.5.8` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [multiurl](https://github.com/ecmwf/multiurl) | `0.3.6` | `0.3.7` |\n| [narwhals](https://github.com/narwhals-dev/narwhals) | `1.41.0` | `2.13.0` |\n| [netcdf4](https://github.com/Unidata/netcdf4-python) | `1.7.2` | `1.7.3` |\n| [networkx](https://github.com/networkx/networkx) | `3.5` | `3.6` |\n| [numexpr](https://github.com/pydata/numexpr) | `2.10.2` | `2.14.1` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.0` | `2.3.5` |\n| [packaging](https://github.com/pypa/packaging) | `24.2` | `25.0` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.0.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.1` |\n| [polars](https://github.com/pola-rs/polars) | `1.30.0` | `1.35.2` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pyogrio](https://github.com/geopandas/pyogrio) | `0.11.0` | `0.12.1` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.2.5` |\n| [pyproj](https://github.com/pyproj4/pyproj) | `3.7.1` | `3.7.2` |\n| [pytz](https://github.com/stub42/pytz) | `2024.2` | `2025.2` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.4.0` | `27.1.0` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.25.1` | `0.30.0` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.3` | `1.16.3` |\n| [shapely](https://github.com/shapely/shapely) | `2.0.7` | `2.1.2` |\n| [toolz](https://github.com/pytoolz/toolz) | `1.0.0` | `1.1.0` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.1` | `6.5.2` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.14.0` | `4.15.0` |\n| [tzdata](https://github.com/python/tzdata) | `2024.2` | `2025.2` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.5.0` | `2.6.0` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.2.14` |\n| [xarray](https://github.com/pydata/xarray) | `2025.4.0` | `2025.12.0` |\n| [zipp](https://github.com/jaraco/zipp) | `3.22.0` | `3.23.0` |\n\n\nUpdates `ipykernel` from 6.29.5 to 7.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ipython/ipykernel/releases\"\u003eipykernel's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev7.1.0\u003c/h2\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using \u003ccode\u003e%notebook\u003c/code\u003e magic to save sessions as \u003ccode\u003e.ipynb\u003c/code\u003e files (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1435\"\u003e#1435\u003c/a\u003e). This is enabled using the traitlet \u003ccode\u003eZMQDisplayPublisher.store_display_history\u003c/code\u003e which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.\u003c/p\u003e\n\u003cp\u003eOutput from threads is restored to the pre-6.29 behavior by default (route to latest cell, unless \u003ccode\u003eget_ipython().set_parent()\u003c/code\u003e is called explicitly from the thread. If it is called, output from that thread will continue to be routed to the same cell). This behavior is now opt-in, instead of unconditional (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1451\"\u003e#1451\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eThis release also fixes bugs that were introduced into the 7.x branch relating to Matplotlib plots in separate windows not being displayed correctly (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1458\"\u003e#1458\u003c/a\u003e), kernels launched in new threads failing asserts (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1455\"\u003e#1455\u003c/a\u003e), and \u003ccode\u003eContextVar\u003c/code\u003es persisting between cells (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1462\"\u003e#1462\u003c/a\u003e). There is also a fix for keyboard interrupts on Windows (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1434\"\u003e#1434\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.1...6f61a6835c217e42c406ee01b359e2fa235baf43\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStore display outputs in history for \u003ccode\u003e%notebook\u003c/code\u003e magic \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1435\"\u003e#1435\u003c/a\u003e (\u003ca href=\"https://github.com/Darshan808\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix ContextVar persistence across cells \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1462\"\u003e#1462\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix matplotlib eventloops \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1458\"\u003e#1458\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefer to kernel launching thread instead of assuming the main thread \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1455\"\u003e#1455\u003c/a\u003e (\u003ca href=\"https://github.com/dfalbel\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix routing of background thread output when no parent is set explicitly \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1451\"\u003e#1451\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KeyboardInterrupt on Windows by manually resetting interrupt event \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1434\"\u003e#1434\u003c/a\u003e (\u003ca href=\"https://github.com/ptosco\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate pre-commit and related \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1465\"\u003e#1465\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest that matplotlib event loop integration is responsive \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1463\"\u003e#1463\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate tests for 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1453\"\u003e#1453\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/graphs/contributors?from=2025-10-14\u0026amp;to=2025-10-27\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ACarreau+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adfalbel+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​lumberbot-app\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aptosco+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev7.0.1\u003c/h2\u003e\n\u003ch2\u003e7.0.1\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.0.1 is a bug fix release to support CPython 3.14.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.0...6d9a14a21a8e328e384ebac48e4ccbaad85b1d45\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid overriding Thread._context in Python 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1447\"\u003e#1447\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ipython/ipykernel/blob/main/CHANGELOG.md\"\u003eipykernel's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e7.1.0\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.1.0 fixes an issue where display outputs such as Matplotlib plots were not included when using \u003ccode\u003e%notebook\u003c/code\u003e magic to save sessions as \u003ccode\u003e.ipynb\u003c/code\u003e files (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1435\"\u003e#1435\u003c/a\u003e). This is enabled using the traitlet \u003ccode\u003eZMQDisplayPublisher.store_display_history\u003c/code\u003e which defaults to the previous behaviour of False. This is a minor release rather than a patch release due to the addition of the new traitlet.\u003c/p\u003e\n\u003cp\u003eOutput from threads is restored to the pre-6.29 behavior by default (route to latest cell, unless \u003ccode\u003eget_ipython().set_parent()\u003c/code\u003e is called explicitly from the thread. If it is called, output from that thread will continue to be routed to the same cell). This behavior is now opt-in, instead of unconditional (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1451\"\u003e#1451\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003eThis release also fixes bugs that were introduced into the 7.x branch relating to Matplotlib plots in separate windows not being displayed correctly (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1458\"\u003e#1458\u003c/a\u003e), kernels launched in new threads failing asserts (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1455\"\u003e#1455\u003c/a\u003e), and \u003ccode\u003eContextVar\u003c/code\u003es persisting between cells (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1462\"\u003e#1462\u003c/a\u003e). There is also a fix for keyboard interrupts on Windows (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1434\"\u003e#1434\u003c/a\u003e).\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.1...6f61a6835c217e42c406ee01b359e2fa235baf43\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eEnhancements made\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eStore display outputs in history for \u003ccode\u003e%notebook\u003c/code\u003e magic \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1435\"\u003e#1435\u003c/a\u003e (\u003ca href=\"https://github.com/Darshan808\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix ContextVar persistence across cells \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1462\"\u003e#1462\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix matplotlib eventloops \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1458\"\u003e#1458\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRefer to kernel launching thread instead of assuming the main thread \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1455\"\u003e#1455\u003c/a\u003e (\u003ca href=\"https://github.com/dfalbel\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix routing of background thread output when no parent is set explicitly \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1451\"\u003e#1451\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix KeyboardInterrupt on Windows by manually resetting interrupt event \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1434\"\u003e#1434\u003c/a\u003e (\u003ca href=\"https://github.com/ptosco\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eupdate pre-commit and related \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1465\"\u003e#1465\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003etest that matplotlib event loop integration is responsive \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1463\"\u003e#1463\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate tests for 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1453\"\u003e#1453\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/graphs/contributors?from=2025-10-14\u0026amp;to=2025-10-27\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ACarreau+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3ADarshan808+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Darshan808\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Adfalbel+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​dfalbel\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aianthomas23+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Akrassowski+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​krassowski\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Alumberbot-app+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​lumberbot-app\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aminrk+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fipykernel+involves%3Aptosco+updated%3A2025-10-14..2025-10-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​ptosco\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003e7.0.1\u003c/h2\u003e\n\u003cp\u003eIPykernel 7.0.1 is a bug fix release to support CPython 3.14.\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/ipykernel/compare/v7.0.0...6d9a14a21a8e328e384ebac48e4ccbaad85b1d45\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAvoid overriding Thread._context in Python 3.14 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1447\"\u003e#1447\u003c/a\u003e (\u003ca href=\"https://github.com/ianthomas23\"\u003e\u003ccode\u003e@​ianthomas23\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix 7.x license warnings \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1448\"\u003e#1448\u003c/a\u003e (\u003ca href=\"https://github.com/bollwyvl\"\u003e\u003ccode\u003e@​bollwyvl\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eci: Test on PyPy 3.11 instead of 3.10 \u003ca href=\"https://redirect.github.com/ipython/ipykernel/pull/1444\"\u003e#1444\u003c/a\u003e (\u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/39eaf96ab6db0d0ff9ad269831384c53a11e11d8\"\u003e\u003ccode\u003e39eaf96\u003c/code\u003e\u003c/a\u003e Publish 7.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/6f61a6835c217e42c406ee01b359e2fa235baf43\"\u003e\u003ccode\u003e6f61a68\u003c/code\u003e\u003c/a\u003e test that matplotlib event loop integration is responsive (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1463\"\u003e#1463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/8446e02948c390793e129affeceedfa30ed5080f\"\u003e\u003ccode\u003e8446e02\u003c/code\u003e\u003c/a\u003e Fix KeyboardInterrupt on Windows by manually resetting interrupt event (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1434\"\u003e#1434\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/dd1e09484854c8dedcd98436bc01b6b8e1cc9034\"\u003e\u003ccode\u003edd1e094\u003c/code\u003e\u003c/a\u003e update pre-commit and related (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1465\"\u003e#1465\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/95f245138589db4f723b8af06107cdfeadc53314\"\u003e\u003ccode\u003e95f2451\u003c/code\u003e\u003c/a\u003e fix ContextVar persistence across cells (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1462\"\u003e#1462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/c56a7aab3cad1fb91f7e7185dc7403d561ecd667\"\u003e\u003ccode\u003ec56a7aa\u003c/code\u003e\u003c/a\u003e Fix matplotlib eventloops (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/c7af34cd19ebcd43f5aafe1919909feb6e898387\"\u003e\u003ccode\u003ec7af34c\u003c/code\u003e\u003c/a\u003e Refer to kernel laucnhing thread instead of assuming the main thread (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1455\"\u003e#1455\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/7193d14de447a18470a18d60b81eda5f0048b6aa\"\u003e\u003ccode\u003e7193d14\u003c/code\u003e\u003c/a\u003e Fix routing of background thread output when no parent is set explicitly (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1451\"\u003e#1451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/b8f5dfc3a35a658c66b85213e60f634bd8a44488\"\u003e\u003ccode\u003eb8f5dfc\u003c/code\u003e\u003c/a\u003e Store display outputs in history for \u003ccode\u003e%notebook\u003c/code\u003e magic (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1435\"\u003e#1435\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/ipykernel/commit/93f11dbb02692a7922cb6fdb4ebadffdb8b691c0\"\u003e\u003ccode\u003e93f11db\u003c/code\u003e\u003c/a\u003e update tests for 3.14 (\u003ca href=\"https://redirect.github.com/ipython/ipykernel/issues/1453\"\u003e#1453\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/ipython/ipykernel/compare/v6.29.5...v7.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `matplotlib` from 3.10.3 to 3.10.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/matplotlib/matplotlib/releases\"\u003ematplotlib's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eREL: v3.10.7\u003c/h2\u003e\n\u003cp\u003eThis is the latest bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eThe most important update in this release is that the minimum version\nof \u003ccode\u003epyparsing\u003c/code\u003e has been updated to version 3.0.\u003c/p\u003e\n\u003ch2\u003eREL: v3.10.6\u003c/h2\u003e\n\u003cp\u003eThis is a bugfix release in the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eHighlights from this release include:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e- Fix regression of hi-dpi support for Qt\n- Fix race condition in TexManager.make_dvi \u0026amp; make_png\n- Various documentation and other bugfixes\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003eREL: v3.10.5\u003c/h2\u003e\n\u003cp\u003eThis is the fourth bugfix release of the 3.10.x series.\u003c/p\u003e\n\u003cp\u003eIncluded in this release is distributed wheels for Python 3.14 (including freethreaded) and Windows ARM.\u003c/p\u003e\n\u003cp\u003eThere are also several smaller bugfixes.\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/matplotlib/matplotlib/commit/4aeb773422464799998d900198b35cb80e94b3e1\"\u003e\u003ccode\u003e4aeb773\u003c/code\u003e\u003c/a\u003e REL: v3.10.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/080add32f6b3c82075ccfb1111b21d5ff9e9c075\"\u003e\u003ccode\u003e080add3\u003c/code\u003e\u003c/a\u003e Merge branch 'v3.10.6-doc' into v3.10.x\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/a604a8beed19bdda1355a29a12ab2904367cf140\"\u003e\u003ccode\u003ea604a8b\u003c/code\u003e\u003c/a\u003e Github Stats v3.10.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/f550261fadf30702a42bc85f71e3489a3c2f6b99\"\u003e\u003ccode\u003ef550261\u003c/code\u003e\u003c/a\u003e Zenodo v3.10.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/9a5e3e4253a3deaa5c83451b1208b5d46759ff7c\"\u003e\u003ccode\u003e9a5e3e4\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30628\"\u003e#30628\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-30626-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/eb8cb0ce31f6965713a5d46fe4fadf2dffb74773\"\u003e\u003ccode\u003eeb8cb0c\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30626\"\u003e#30626\u003c/a\u003e: MNT: Fix new F401 unused imports warnings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/8fadc71e0e372f05aa0305ef425c5152d70d6f39\"\u003e\u003ccode\u003e8fadc71\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/29745\"\u003e#29745\u003c/a\u003e: Use PEP8 style method and function names from (\u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30589\"\u003e#30589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/098876ee6f695f6c5297d4cf3f974c9d64ff4c79\"\u003e\u003ccode\u003e098876e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30614\"\u003e#30614\u003c/a\u003e from meeseeksmachine/auto-backport-of-pr-30612-on-v...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/eb42d8637ba5891aa806fa6b0ed73835c16b2741\"\u003e\u003ccode\u003eeb42d86\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30612\"\u003e#30612\u003c/a\u003e: MNT: update black pin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matplotlib/matplotlib/commit/4a9c187a73fce92074b262612b3285dcff2d615e\"\u003e\u003ccode\u003e4a9c187\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/matplotlib/matplotlib/issues/30572\"\u003e#30572\u003c/a\u003e from QuLogic/auto-backport-of-pr-30571-on-v3.10.x\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/matplotlib/matplotlib/compare/v3.10.3...v3.10.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pandas` from 2.2.3 to 2.3.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pandas-dev/pandas/releases\"\u003epandas's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ePandas 2.3.3\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.3.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.3.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.3 supports Python 3.9 and higher, and is the first release to support Python 3.14.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.2\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.2.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3/whatsnew/v2.3.2.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.2 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epython3 -m pip install --upgrade pandas\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003ePlease report any issues with the release on the \u003ca href=\"https://github.com/pandas-dev/pandas/issues\"\u003epandas issue tracker\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThanks to all the contributors who made this release possible.\u003c/p\u003e\n\u003ch2\u003ePandas 2.3.1\u003c/h2\u003e\n\u003cp\u003eWe are pleased to announce the release of pandas 2.3.1.\nThis release includes some improvements and fixes to the future string data type (preview feature for the upcoming pandas 3.0). We recommend that all users upgrade to this version.\u003c/p\u003e\n\u003cp\u003eSee the \u003ca href=\"https://pandas.pydata.org/pandas-docs/version/2.3.1/whatsnew/v2.3.1.html\"\u003efull whatsnew\u003c/a\u003e for a list of all the changes.\nPandas 2.3.1 supports Python 3.9 and higher.\u003c/p\u003e\n\u003cp\u003eThe release will be available on the conda-forge channel:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003econda install pandas --channel conda-forge\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003eOr via PyPI:\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/pandas-dev/pandas/commit/9c8bc3e55188c8aff37207a74f1dd144980b8874\"\u003e\u003ccode\u003e9c8bc3e\u003c/code\u003e\u003c/a\u003e RLS: 2.3.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/6aa788a00bda9b0f004302076dad94df3edeafc7\"\u003e\u003ccode\u003e6aa788a\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DOC: prepare 2.3.3 whatsnew notes for release (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62499\"\u003e#62499\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62508\"\u003e#62508\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/b64f0df403d11ac733d9f460f89a5e99c8044ed0\"\u003e\u003ccode\u003eb64f0df\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: avoid validation error for ufunc with string[python] ar...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/058eb2b0edfc408dae9966ef1f03372f2a3ff04c\"\u003e\u003ccode\u003e058eb2b\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: String[pyarrow] comparison with mixed object (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62424\"\u003e#62424\u003c/a\u003e) (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/2ca088daef6a9d9333fea8aedffc7e50d28dfdee\"\u003e\u003ccode\u003e2ca088d\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] DEPR: remove the Period resampling deprecation (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62480\"\u003e#62480\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62\"\u003e#62\u003c/a\u003e...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/92bf98f623572ed053d48be5818c8503f1b61888\"\u003e\u003ccode\u003e92bf98f\u003c/code\u003e\u003c/a\u003e [backport 2.3.x] BUG: fix .str.isdigit to honor unicode superscript for older...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/e57c7d6a2247316188fba0ba2a0db3c11028d75c\"\u003e\u003ccode\u003ee57c7d6\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62452\"\u003e#62452\u003c/a\u003e on branch 2.3.x (TST: Adjust tests for numexpr 2.13) (\u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62454\"\u003e#62454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/e0fe9a03c90e560c34a3bbbdd1735a8b64f7b281\"\u003e\u003ccode\u003ee0fe9a0\u003c/code\u003e\u003c/a\u003e Backport to 2.3.x: REGR: from_records not initializing subclasses properly (#...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/23a1085e641c8e3a5b500e319c5973e4160b9236\"\u003e\u003ccode\u003e23a1085\u003c/code\u003e\u003c/a\u003e BUG: improve future warning for boolean operations with missaligned indexes (...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pandas-dev/pandas/commit/61136969fb18b438b6660bd5d485d0236dbf4a71\"\u003e\u003ccode\u003e6113696\u003c/code\u003e\u003c/a\u003e Backport PR \u003ca href=\"https://redirect.github.com/pandas-dev/pandas/issues/62396\"\u003e#62396\u003c/a\u003e on branch 2.3.x (PKG/DOC: indicate Python 3.14 support in ...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pandas-dev/pandas/compare/v2.2.3...v2.3.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `plotly` from 6.1.2 to 6.5.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/plotly/plotly.py/releases\"\u003eplotly's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev6.5.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.2.0 to version 3.3.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.3.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5421\"\u003e#5421\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ehovertemplate\u003c/code\u003e for \u003ccode\u003ecandlestick\u003c/code\u003e and \u003ccode\u003eohlc\u003c/code\u003e traces [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7619\"\u003e#7619\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where numpy datetime contained in Python list was converted to integer [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5415\"\u003e#5415\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.4.0...v6.5.0\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.4.0...v6.5.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.4.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.1.1 to version 3.2.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5388\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ehovertemplatefallback\u003c/code\u003e and \u003ccode\u003etexttemplatefallback\u003c/code\u003e attributes [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7577\"\u003e#7577\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd \u0026quot;SI extended\u0026quot; formatting rule for tick exponents on axis labels, allowing values to be displayed with extended SI prefixes (e.g., femto, pico, atto) [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7249\"\u003e#7249\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate \u003ccode\u003ecreate_hexbin_mapbox\u003c/code\u003e in favor of \u003ccode\u003ecreate_hexbin_map\u003c/code\u003e, update related function calls [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5358\"\u003e5358\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/ajlien\"\u003e\u003ccode\u003e@​ajlien\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.3.1\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Plotly.js from version 3.1.0 to version 3.1.1. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5357\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eFix issue preventing Scattergl plots with text elements from rendering [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7563\"\u003eplotly.js#7563\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUse native legends when converting from matplotlib [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5312\"\u003e#5312\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/robertoffmoura\"\u003e\u003ccode\u003e@​robertoffmoura\u003c/code\u003e\u003c/a\u003e to the contribution!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eshared_yaxes\u003c/code\u003e to work with secondary axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5180\"\u003e#5180\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/gmjw\"\u003e\u003ccode\u003e@​gmjw\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where width/height in plot layout were not respected during Kaleido image export [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5325\"\u003e#5325\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typo in default argument to \u003ccode\u003e_ternary_contour.py\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5315\"\u003e#5315\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/Lexachoc\"\u003e\u003ccode\u003e@​Lexachoc\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003efig.show()\u003c/code\u003e behavior when \u003ccode\u003eipython\u003c/code\u003e is installed [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5258\"\u003e#5258\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.3.0...v6.3.1\"\u003ehttps://github.com/plotly/plotly.py/compare/v6.3.0...v6.3.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev6.3.0\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev6.2.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\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/plotly/plotly.py/blob/main/CHANGELOG.md\"\u003eplotly's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e[6.5.0] - 2025-11-17\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.2.0 to version 3.3.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases/tag/v3.3.0\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5421\"\u003e#5421\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ehovertemplate\u003c/code\u003e for \u003ccode\u003ecandlestick\u003c/code\u003e and \u003ccode\u003eohlc\u003c/code\u003e traces [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7619\"\u003e#7619\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix bug where numpy datetime contained in Python list was converted to integer [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5415\"\u003e#5415\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.4.0] - 2025-11-02\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate plotly.js from version 3.1.1 to version 3.2.0. See the plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5388\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003ehovertemplatefallback\u003c/code\u003e and \u003ccode\u003etexttemplatefallback\u003c/code\u003e attributes [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7577\"\u003e#7577\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eAdd \u0026quot;SI extended\u0026quot; formatting rule for tick exponents on axis labels, allowing values to be displayed with extended SI prefixes (e.g., femto, pico, atto) [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7249\"\u003e#7249\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDeprecated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eDeprecate \u003ccode\u003ecreate_hexbin_mapbox\u003c/code\u003e in favor of \u003ccode\u003ecreate_hexbin_map\u003c/code\u003e, update related function calls [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5358\"\u003e5358\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/ajlien\"\u003e\u003ccode\u003e@​ajlien\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.3.1] - 2025-10-02\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate Plotly.js from version 3.1.0 to version 3.1.1. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5357\"\u003e#5357\u003c/a\u003e]. Notable changes include:\n\u003cul\u003e\n\u003cli\u003eFix issue preventing Scattergl plots with text elements from rendering [\u003ca href=\"https://redirect.github.com/plotly/plotly.js/pull/7563\"\u003eplotly.js#7563\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eUse native legends when converting from matplotlib [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5312\"\u003e#5312\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/robertoffmoura\"\u003e\u003ccode\u003e@​robertoffmoura\u003c/code\u003e\u003c/a\u003e to the contribution!\u003c/li\u003e\n\u003cli\u003eAllow \u003ccode\u003eshared_yaxes\u003c/code\u003e to work with secondary axes [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5180\"\u003e#5180\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/gmjw\"\u003e\u003ccode\u003e@​gmjw\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix issue where width/height in plot layout were not respected during Kaleido image export [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5325\"\u003e#5325\u003c/a\u003e]\u003c/li\u003e\n\u003cli\u003eFix typo in default argument to \u003ccode\u003e_ternary_contour.py\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5315\"\u003e#5315\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/Lexachoc\"\u003e\u003ccode\u003e@​Lexachoc\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003cli\u003eFix incorrect \u003ccode\u003efig.show()\u003c/code\u003e behavior when \u003ccode\u003eipython\u003c/code\u003e is installed [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5258\"\u003e#5258\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.3.0] - 2025-08-12\u003c/h2\u003e\n\u003ch3\u003eUpdated\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated Plotly.js from version 3.0.1 to version 3.1.0. See the Plotly.js \u003ca href=\"https://github.com/plotly/plotly.js/releases\"\u003erelease notes\u003c/a\u003e for more information. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5318\"\u003e#5318\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eExposed \u003ccode\u003eplotly.io.get_chrome()\u003c/code\u003e as a function which can be called from within a Python script. [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5282\"\u003e#5282\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eResolved issue causing extraneous engine deprecation warnings [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5287\"\u003e#5287\u003c/a\u003e], with thanks to \u003ca href=\"https://github.com/jdbeel\"\u003e\u003ccode\u003e@​jdbeel\u003c/code\u003e\u003c/a\u003e for the contribution!\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[6.2.0] - 2025-06-26\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdd SRI (Subresource Integrity) hash support for CDN script tags when using \u003ccode\u003einclude_plotlyjs='cdn'\u003c/code\u003e. This enhances security by ensuring browser verification of CDN-served plotly.js files [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5165\"\u003e#5165\u003c/a\u003e] (with thanks to \u003ca href=\"https://github.com/ddworken\"\u003e\u003ccode\u003e@​ddworken\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAllow setting Plotly.js path via \u003ccode\u003epio.defaults\u003c/code\u003e [\u003ca href=\"https://redirect.github.com/plotly/plotly.py/pull/5207\"\u003e#5207\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/plotly/plotly.py/commit/b19f8e54350e753b3e82cdc078293e826009a640\"\u003e\u003ccode\u003eb19f8e5\u003c/code\u003e\u003c/a\u003e changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/1ec9a16b3700a3399f7bf6d802a42510fe60c215\"\u003e\u003ccode\u003e1ec9a16\u003c/code\u003e\u003c/a\u003e Update CHANGELOG.md\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/83a2b0b4594dd330ff23ccdb77770773ac7ef1bc\"\u003e\u003ccode\u003e83a2b0b\u003c/code\u003e\u003c/a\u003e version changes for v6.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/a49f495aee7fbee5ac0a18dab4f563e7a68ce3e7\"\u003e\u003ccode\u003ea49f495\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5421\"\u003e#5421\u003c/a\u003e from plotly/update-plotlyjs-3.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/f68752659ebbe499cd50cb4ca961d882aedfa84a\"\u003e\u003ccode\u003ef687526\u003c/code\u003e\u003c/a\u003e update plotly/labextension with files from ci\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/83ab425007895dabe5f682400bd45671be1a6386\"\u003e\u003ccode\u003e83ab425\u003c/code\u003e\u003c/a\u003e update package-lock with new plotly.js\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/a3480f0237e76074fc3d9c47363689ae2b8a8ac7\"\u003e\u003ccode\u003ea3480f0\u003c/code\u003e\u003c/a\u003e package-lock indentation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/e519d5a46e44c90b24e678a93a2548a7cb0ae567\"\u003e\u003ccode\u003ee519d5a\u003c/code\u003e\u003c/a\u003e update plotly.js to v3.3.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/22b0ac0ee686b1fc06ecb35c1b9b7f8e5261acba\"\u003e\u003ccode\u003e22b0ac0\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/plotly/plotly.py/issues/5415\"\u003e#5415\u003c/a\u003e from plotly/fix-np-date-handling-issue\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/plotly/plotly.py/commit/aa30be57c36d0ca602c0683d2232e7724f2b9dcf\"\u003e\u003ccode\u003eaa30be5\u003c/code\u003e\u003c/a\u003e Update _plotly_utils/basevalidators.py\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/plotly/plotly.py/compare/v6.1.2...v6.5.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pypsa` from 0.34.1 to 1.0.5\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/PyPSA/PyPSA/releases\"\u003epypsa's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev1.0.5\u003c/h2\u003e\n\u003cp\u003eRevised release notes are available in the \u003ca href=\"https://docs.pypsa.org/latest/release-notes/\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eci: free up disk space by \u003ca href=\"https://github.com/lkstrp\"\u003e\u003ccode\u003e@​lkstrp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1447\"\u003ePyPSA/PyPSA#1447\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd user Serentica by \u003ca href=\"https://github.com/gincrement\"\u003e\u003ccode\u003e@​gincrement\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1453\"\u003ePyPSA/PyPSA#1453\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003ebuild(deps): bump 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/PyPSA/PyPSA/pull/1455\"\u003ePyPSA/PyPSA#1455\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: CVaR optimization fails if components have no marginal costs by \u003ca href=\"https://github.com/Irieo\"\u003e\u003ccode\u003e@​Irieo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1457\"\u003ePyPSA/PyPSA#1457\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix markdown syntax for pip install command by \u003ca href=\"https://github.com/flxlchr\"\u003e\u003ccode\u003e@​flxlchr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1460\"\u003ePyPSA/PyPSA#1460\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: run model runs only with src changes by \u003ca href=\"https://github.com/lkstrp\"\u003e\u003ccode\u003e@​lkstrp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1462\"\u003ePyPSA/PyPSA#1462\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: using inactive generators in global carrier constraint by \u003ca href=\"https://github.com/lkstrp\"\u003e\u003ccode\u003e@​lkstrp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1450\"\u003ePyPSA/PyPSA#1450\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: fix typo and improve description by \u003ca href=\"https://github.com/flxlchr\"\u003e\u003ccode\u003e@​flxlchr\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1461\"\u003ePyPSA/PyPSA#1461\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate users.md by \u003ca href=\"https://github.com/gincrement\"\u003e\u003ccode\u003e@​gincrement\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1458\"\u003ePyPSA/PyPSA#1458\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix description in stochastic optimization documentation by \u003ca href=\"https://github.com/energyLS\"\u003e\u003ccode\u003e@​energyLS\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1452\"\u003ePyPSA/PyPSA#1452\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate users.md / Meridian Economics by \u003ca href=\"https://github.com/gincrement\"\u003e\u003ccode\u003e@​gincrement\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1463\"\u003ePyPSA/PyPSA#1463\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix broadcasting bug for rolling horizon with linearised UC case by \u003ca href=\"https://github.com/Irieo\"\u003e\u003ccode\u003e@​Irieo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1464\"\u003ePyPSA/PyPSA#1464\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: expressions returning zero for non-extendable generators by \u003ca href=\"https://github.com/FabianHofmann\"\u003e\u003ccode\u003e@​FabianHofmann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1451\"\u003ePyPSA/PyPSA#1451\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/flxlchr\"\u003e\u003ccode\u003e@​flxlchr\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1460\"\u003ePyPSA/PyPSA#1460\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyPSA/PyPSA/compare/v1.0.4...v1.0.5\"\u003ehttps://github.com/PyPSA/PyPSA/compare/v1.0.4...v1.0.5\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.4\u003c/h2\u003e\n\u003cp\u003eRevised release notes are available in the \u003ca href=\"https://PyPSA.readthedocs.io/en/latest/release-notes.html\"\u003edocumentation\u003c/a\u003e.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd example notebook on negative prices in unit commitment model by \u003ca href=\"https://github.com/Irieo\"\u003e\u003ccode\u003e@​Irieo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1434\"\u003ePyPSA/PyPSA#1434\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eadd pypsa-asean by \u003ca href=\"https://github.com/fneum\"\u003e\u003ccode\u003e@​fneum\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1435\"\u003ePyPSA/PyPSA#1435\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix link in stochastic optimization example by \u003ca href=\"https://github.com/euronion\"\u003e\u003ccode\u003e@​euronion\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1436\"\u003ePyPSA/PyPSA#1436\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: snapshot selection for operational in multi period optimization by \u003ca href=\"https://github.com/FabianHofmann\"\u003e\u003ccode\u003e@​FabianHofmann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1437\"\u003ePyPSA/PyPSA#1437\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: masking of nan constraints in kvl by \u003ca href=\"https://github.com/FabianHofmann\"\u003e\u003ccode\u003e@​FabianHofmann\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1438\"\u003ePyPSA/PyPSA#1438\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix handling of inactive storage components in constraints/variables by \u003ca href=\"https://github.com/Irieo\"\u003e\u003ccode\u003e@​Irieo\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1442\"\u003ePyPSA/PyPSA#1442\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: busmap clustering for multilinks by \u003ca href=\"https://github.com/lkstrp\"\u003e\u003ccode\u003e@​lkstrp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1441\"\u003ePyPSA/PyPSA#1441\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: follow up on \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1441\"\u003e#1441\u003c/a\u003e by \u003ca href=\"https://github.com/lkstrp\"\u003e\u003ccode\u003e@​lkstrp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1445\"\u003ePyPSA/PyPSA#1445\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUnpin shapely upper bound by \u003ca href=\"https://github.com/brynpickering\"\u003e\u003ccode\u003e@​brynpickering\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1444\"\u003ePyPSA/PyPSA#1444\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: use pixi for model tests by \u003ca href=\"https://github.com/lkstrp\"\u003e\u003ccode\u003e@​lkstrp\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1443\"\u003ePyPSA/PyPSA#1443\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/brynpickering\"\u003e\u003ccode\u003e@​brynpickering\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/pull/1444\"\u003ePyPSA/PyPSA#1444\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/PyPSA/PyPSA/compare/v1.0.3...v1.0.4\"\u003ehttps://github.com/PyPSA/PyPSA/compare/v1.0.3...v1.0.4\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.0.3\u003c/h2\u003e\n\u003cp\u003eRevised release notes are available in the \u003ca href=\"https://PyPSA.readthedocs.io/en/latest/release-notes.html\"\u003edocumentation\u003c/a\u003e.\u003c/p\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/PyPSA/PyPSA/blob/master/docs/release-notes.md\"\u003epypsa's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/releases/tag/v1.0.5\"\u003e\u003cstrong\u003ev1.0.5\u003c/strong\u003e\u003c/a\u003e \u003c!-- raw HTML omitted --\u003e4th December 2025\u003c!-- raw HTML omitted --\u003e { id=\u0026quot;v1.0.5\u0026quot; }\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix curtailment, capacity, and capex expressions returning zero for non-extendable generators. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003cli\u003eFix using inactive generators in global carrier constraint. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003cli\u003eFix CVaR optimization to handle networks with zero operational costs. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003cli\u003eFix xarray broadcasting for rolling-horizon with linearized unit commitment optimization. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/releases/tag/v1.0.4\"\u003e\u003cstrong\u003ev1.0.4\u003c/strong\u003e\u003c/a\u003e \u003c!-- raw HTML omitted --\u003e21st November 2025\u003c!-- raw HTML omitted --\u003e { id=\u0026quot;v1.0.4\u0026quot; }\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix busmap clustering to correctly remap all bus ports in multi-port links. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003cli\u003eFix handling of inactive \u003ccode\u003eStorageUnit\u003c/code\u003e or \u003ccode\u003eStore\u003c/code\u003e components (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003cli\u003eFix snapshot selection in operational limit global constraint with investment period. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdded new example notebook demonstrating negative electricity prices in linearized unit commitment problem. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/releases/tag/v1.0.3\"\u003e\u003cstrong\u003ev1.0.3\u003c/strong\u003e\u003c/a\u003e \u003c!-- raw HTML omitted --\u003e6th November 2025\u003c!-- raw HTML omitted --\u003e { id=\u0026quot;v1.0.3\u0026quot; }\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFix ramp_limit_up/down constraints: correctly detect components with ramp limits, handle rolling-horizon windows by using previous-window dispatch, and add unit tests for Link ramp limits and ramping constraints in rolling horizon mode. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/releases/tag/v1.0.2\"\u003e\u003cstrong\u003ev1.0.2\u003c/strong\u003e\u003c/a\u003e \u003c!-- raw HTML omitted --\u003e24th October 2025\u003c!-- raw HTML omitted --\u003e { id=\u0026quot;v1.0.2\u0026quot; }\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFix infinite recursion error when pickling networks. (\u003c!-- raw HTML omitted --\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/releases/tag/v1.0.1\"\u003e\u003cstrong\u003ev1.0.1\u003c/strong\u003e\u003c/a\u003e \u003c!-- raw HTML omitted --\u003e20th October 2025\u003c!-- raw HTML omitted --\u003e { id=\u0026quot;v1.0.1\u0026quot; }\u003c/h2\u003e\n\u003ch3\u003eBug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix [\u003ccode\u003en.set_snapshots\u003c/code\u003e][pypsa.Network.set_snapshots] to synchronize investment period weightings when snapshots with new periods are set. (\u003c!-- raw HTML omitted --\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix scenario extraction methods ([pypsa.Network.get_scenario][] and [\u003ccode\u003en['scenario']\u003c/code\u003e][pypsa.Network.\u003cstrong\u003egetitem\u003c/strong\u003e]) to properly handle empty components (\u003c!-- raw HTML omitted --\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix bus validation when adding global constraints via [pypsa.Network.add][], eliminating false warnings for GlobalConstraints. (\u003c!-- raw HTML omitted --\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix dimension name consistency when adding investment period weightings. (\u003c!-- raw HTML omitted --\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/releases/tag/v1.0.0\"\u003e\u003cstrong\u003ev1.0.0\u003c/strong\u003e\u003c/a\u003e \u003c!-- raw HTML omitted --\u003e14th October 2025\u003c!-- raw HTML omitted --\u003e 🎉 { id=\u0026quot;v1.0.0\u0026quot; }\u003c/h2\u003e\n\u003ch3\u003e\u003cstrong\u003ePyPSA 1.0\u003c/strong\u003e is here!\u003c/h3\u003e\n\u003cp\u003eCheck out \u003ca href=\"https://github.com/PyPSA/PyPSA/blob/master/docs/v1-guide.md\"\u003eWhat's new in PyPSA v1.0\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eFeatures\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/470e3de1c8086f8805deca9d4c834d11e2f49c57\"\u003e\u003ccode\u003e470e3de\u003c/code\u003e\u003c/a\u003e [github-actions.ci] prepare release v1.0.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/56e9645a158e7ea8ae7df5bd2fd8b3cde7cbfe05\"\u003e\u003ccode\u003e56e9645\u003c/code\u003e\u003c/a\u003e prepare release \u003ccode\u003ev1.0.5\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/6c46fdd0f68be1543af9f17aac8af978f2030dfc\"\u003e\u003ccode\u003e6c46fdd\u003c/code\u003e\u003c/a\u003e fix: expressions returning zero for non-extendable generators (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1451\"\u003e#1451\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/325e6620340d350b3977049eb0a078542c3003d6\"\u003e\u003ccode\u003e325e662\u003c/code\u003e\u003c/a\u003e Fix broadcasting bug for rolling horizon with linearised UC case (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1464\"\u003e#1464\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/a4b5416e8346b4e696c6b95d25d1aed28dfd6723\"\u003e\u003ccode\u003ea4b5416\u003c/code\u003e\u003c/a\u003e Update users.md / Meridian Economics (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1463\"\u003e#1463\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/4c7037dbd8b241f29494ff6473ba97e36364ee87\"\u003e\u003ccode\u003e4c7037d\u003c/code\u003e\u003c/a\u003e Update example of stochastic optimization documentation (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1452\"\u003e#1452\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/53324de38945dd273185d018002649186f9f514b\"\u003e\u003ccode\u003e53324de\u003c/code\u003e\u003c/a\u003e Update users.md (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1458\"\u003e#1458\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/2532a8a251cfc58d7c49669dc3693d780bac7f16\"\u003e\u003ccode\u003e2532a8a\u003c/code\u003e\u003c/a\u003e docs: fix typo and improve description (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1461\"\u003e#1461\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/7460437c63887d542c1b90d65f103e4e4ff1ca56\"\u003e\u003ccode\u003e7460437\u003c/code\u003e\u003c/a\u003e fix: using inactive generators in global carrier constraint (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1450\"\u003e#1450\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PyPSA/PyPSA/commit/681b9ac3fd5f6edeb9d23bf9ca288107f67b3965\"\u003e\u003ccode\u003e681b9ac\u003c/code\u003e\u003c/a\u003e ci: run model runs only with src changes (\u003ca href=\"https://redirect.github.com/PyPSA/PyPSA/issues/1462\"\u003e#1462\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/PyPSA/PyPSA/compare/v0.34.1...v1.0.5\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `bottleneck` from 1.5.0 to 1.6.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pydata/bottleneck/blob/master/RELEASE.rst\"\u003ebottleneck's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eBottleneck 1.6.0\u003c/h1\u003e\n\u003cp\u003e\u003cem\u003eRelease date 2025-09-05\u003c/em\u003e\u003c/p\u003e\n\u003cp\u003eMaintenance\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e- Add Python 3.14 support, drop Python 3.9 \n- Add free-threading trove classifier\n- Bump upper bound on numpy to account for numpy 2.3.x\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydata/bottleneck/commit/3e5e705762b866e401eb9c0de9ce16b4cabc6348\"\u003e\u003ccode\u003e3e5e705\u003c/code\u003e\u003c/a\u003e MAINT: fix warning about \u003ccode\u003epp_*\u003c/code\u003e skip selector for PyPy wheels not being neede...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydata/bottleneck/commit/e3978ab0b742fc1d826193dbdf81f8c0f96b9bcf\"\u003e\u003ccode\u003ee3978ab\u003c/code\u003e\u003c/a\u003e MNT: Prepare changelog for 1.6.0  (\u003ca href=\"https://redirect.github.com/pydata/bottleneck/issues/482\"\u003e#482\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydata/bottleneck/commit/aff8796c9ccb5e4fe5baa7b0dff0076eacdfcae3\"\u003e\u003ccode\u003eaff8796\u003c/code\u003e\u003c/a\u003e CI: windows-2019 runner was retired, move to windows-2022\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydata/bottleneck/commit/f5f011f1e165f7ad8ce64d306aaff0a3f4d335a8\"\u003e\u003ccode\u003ef5f011f\u003c/code\u003e\u003c/a\u003e MAINT: add Python 3.14 support, drop Python 3.9\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydata/bottleneck/commit/f3944e9b02b1fa48322624e2efd1468f33a05f79\"\u003e\u003ccode\u003ef3944e9\u003c/code\u003e\u003c/a\u003e MAINT: add free-threading trove classifier\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pydata/bottleneck/commit/148684f2bfd1af29e791fa6a7773641a7e025754\"\u003e\u003ccode\u003e148684f\u003c/code\u003e\u003c/a\u003e BLD: bump upper bound on numpy to account for numpy 2.3.x\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pydata/bottleneck/compare/v1.5.0...v1.6.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cdsapi` from 0.7.6 to 0.7.7\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ecmwf/cdsapi/releases\"\u003ecdsapi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.7.7\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/ecmwf/cdsapi/compare/0.7.6...0.7.7\"\u003ehttps://github.com/ecmwf/cdsapi/compare/0.7.6...0.7.7\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/ecmwf/cdsapi/commit/e1be102bce7b7dafb27e9831c42863fdeada557b\"\u003e\u003ccode\u003ee1be102\u003c/code\u003e\u003c/a\u003e Update setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ecmwf/cdsapi/commit/72d7cec0b611c2f71c1a69da4668368df5118cdb\"\u003e\u003ccode\u003e72d7cec\u003c/code\u003e\u003c/a\u003e back to development version\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ecmwf/cdsapi/compare/0.7.6...0.7.7\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `certifi` from 2025.4.26 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\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/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.04.26...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\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/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://githu...\n\n_Description has been truncated_","html_url":"https://github.com/ryanjenkinson/data-centre-modelling/pull/34","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/ryanjenkinson%2Fdata-centre-modelling/issues/34","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/34/packages"}},{"old_version":"^25.1.0","new_version":"^27.1.0","update_type":null,"path":"/services/telemetry-processor","pr_created_at":"2025-12-05T21:36:40.000Z","version_change":"^25.1.0 → ^27.1.0","issue":{"uuid":"3700415841","node_id":"PR_kwDOOYUJTM63X3yb","number":25,"state":"open","title":"Update pyzmq requirement from ^25.1.0 to ^27.1.0 in /services/telemetry-processor","user":"dependabot[bot]","labels":[],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-12-05T21:36:40.000Z","updated_at":"2025-12-05T21:36:41.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Update","packages":[{"name":"pyzmq","old_version":"^25.1.0","new_version":"^27.1.0","repository_url":"https://github.com/zeromq/pyzmq"}],"path":"/services/telemetry-processor","ecosystem":"pip"},"body":"Updates the requirements on [pyzmq](https://github.com/zeromq/pyzmq) 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/zeromq/pyzmq/releases\"\u003epyzmq's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev27.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.1.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/425a21fd2ae3bc50d81176ff9a8253af3535a3d4\"\u003e\u003ccode\u003e425a21f\u003c/code\u003e\u003c/a\u003e Bump to 27.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/c6bf62145e912a95c0dfccff4609d1e52b464ceb\"\u003e\u003ccode\u003ec6bf621\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2127\"\u003e#2127\u003c/a\u003e from minrk/271\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/3558cceb69d9d5ca1ac14e2dc300060232371e86\"\u003e\u003ccode\u003e3558cce\u003c/code\u003e\u003c/a\u003e release 27.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/17b9ce8d4e7bbe4f35271a303a73498cff46d9fa\"\u003e\u003ccode\u003e17b9ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2126\"\u003e#2126\u003c/a\u003e from minrk/compile-time-drafts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/83040f7467f268c1cddfd26efac7790bdd7d64e0\"\u003e\u003ccode\u003e83040f7\u003c/code\u003e\u003c/a\u003e restore zmq.DRAFT_API meaning drafts are actually available\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/e21dcd8e0bfa8194230b588864b03cbbb839ea10\"\u003e\u003ccode\u003ee21dcd8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2124\"\u003e#2124\u003c/a\u003e from zeromq/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/26233552a6c6557f2749265d3909a466ac57c3c3\"\u003e\u003ccode\u003e2623355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/684b2e5cb40b764ca45875a0c0b3af6d4662d46c\"\u003e\u003ccode\u003e684b2e5\u003c/code\u003e\u003c/a\u003e Bump to 27.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/912e61982a3413d9b7cdc1786fac3b5d5fa64620\"\u003e\u003ccode\u003e912e619\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2122\"\u003e#2122\u003c/a\u003e from minrk/devmode-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/69f8d905855421fb69e1783c71a4c1502c299bd8\"\u003e\u003ccode\u003e69f8d90\u003c/code\u003e\u003c/a\u003e changelog for 27.0.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/zeromq/pyzmq/compare/v25.1.0...v27.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/BosWojciech/F1-Telemetry/pull/25","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/BosWojciech%2FF1-Telemetry/issues/25","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/25/packages"}},{"old_version":"26.2.0","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-12-03T23:27:07.000Z","version_change":"26.2.0 → 27.1.0","issue":{"uuid":"3692256489","node_id":"PR_kwDONF5WLM628N0n","number":432,"state":"closed","title":"chore: bump the pip-production-dependencies group across 4 directories with 48 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-27T00:37:37.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-03T23:27:07.000Z","updated_at":"2026-01-27T00:37:38.000Z","time_to_close":4669830,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"pip-production-dependencies","update_count":48,"packages":[{"name":"grpcio-health-checking","old_version":"1.68.1","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.68.1","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.29.0","new_version":"1.39.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"2.0.7","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.7.4","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.1.5","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.1.3","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2024.8.30","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.0","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.7","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.15","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.0","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.66.0","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"locust","old_version":"2.32.4","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.5.3","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.29.0","new_version":"1.39.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.29.0","new_version":"1.39.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.29.0","new_version":"1.39.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.50b0","new_version":"0.60b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"5.29.1","new_version":"6.33.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.0","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 47 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.68.1` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.68.1` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.4` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.8.30` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.0` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.15` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.66.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.32.4` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.50b0` | `0.60b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.1` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.0` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.0` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 43 updates in the /src/loadgenerator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.4` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.8.30` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.0` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.15` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.66.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.32.4` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.50b0` | `0.60b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.1` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.0` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.0` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 11 updates in the /src/recommendationservice directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.68.1` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.68.1` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.60b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.39.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.4` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `7.1.3` |\n| [grpcio-tools](https://github.com/grpc/grpc) | `1.68.1` | `1.76.0` |\n\nBumps the pip-production-dependencies group with 1 update in the /src/recommendationservice/genproto directory: [grpcio-tools](https://github.com/grpc/grpc).\n\nUpdates `grpcio-health-checking` from 1.68.1 to 1.76.0\n\nUpdates `grpcio` from 1.68.1 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.68.1...v1.76.0\"\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.50b0 to 0.60b0\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\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-requests\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-wsgi\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e Detect synthetic sources on requests, ASGI, and WSGI.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3674\"\u003e#3674\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-client\u003c/code\u003e: add support for url exclusions via \u003ccode\u003eOTEL_PYTHON_EXCLUDED_URLS\u003c/code\u003e / \u003ccode\u003eOTEL_PYTHON_AIOHTTP_CLIENT_EXCLUDED_URLS\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3850\"\u003e#3850\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-httpx\u003c/code\u003e: add support for url exclusions via \u003ccode\u003eOTEL_PYTHON_EXCLUDED_URLS\u003c/code\u003e / \u003ccode\u003eOTEL_PYTHON_HTTPX_EXCLUDED_URLS\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3837\"\u003e#3837\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3883\"\u003e#3883\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-sqlalchemy\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3886\"\u003e#3886\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-mysql\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-mysqlclient\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-pymysql\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3885\"\u003e#3885\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3884\"\u003e#3884\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e: add support for custom header captures via \u003ccode\u003eOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_REQUEST\u003c/code\u003e and \u003ccode\u003eOTEL_INSTRUMENTATION_HTTP_CAPTURE_HEADERS_SERVER_RESPONSE\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3916\"\u003e#3916\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-redis\u003c/code\u003e: add support for \u003ccode\u003esuppress_instrumentation\u003c/code\u003e context manager for both sync and async Redis clients and pipelines\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-django\u003c/code\u003e: improve docs for response_hook with examples of providing attributes from middlewares\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3923\"\u003e#3923\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate for Log SDK breaking changes. Rename InMemoryLogExporter to InMemoryLogRecordExporter in several tests\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3589\"\u003e#3589\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-instrumentation: allow to skip all instrumentations loading with a wildcard\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3967\"\u003e#3967\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-redis\u003c/code\u003e: add missing copyright header for opentelemetry-instrumentation-redis\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3976\"\u003e#3976\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: bedrock: Add safety check for bedrock ConverseStream responses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3990\"\u003e#3990\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: bedrock: only decode JSON input buffer in Anthropic Claude streaming\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3875\"\u003e#3875\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-client\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e: Fix readme links and text\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3902\"\u003e#3902\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aws-lambda\u003c/code\u003e: Fix ImportError with slash-delimited handler paths\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3894\"\u003e#3894\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-richconsole\u003c/code\u003e: Prevent deadlock when parent span is not part of the batch\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3900\"\u003e#3900\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg2\u003c/code\u003e, \u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: improve readthedocs for sqlcommenter configuration.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3882\"\u003e#3882\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-aiohttp-server\u003c/code\u003e: delay initialization of tracer, meter and excluded urls to instrumentation for testability\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3836\"\u003e#3836\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eReplace Python 3.14-deprecated \u003ccode\u003easyncio.iscoroutinefunction\u003c/code\u003e with \u003ccode\u003einspect.iscoroutinefunction\u003c/code\u003e.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3880\"\u003e#3880\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-elasticsearch\u003c/code\u003e: Enhance elasticsearch query body sanitization\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3919\"\u003e#3919\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.29.0 to 1.39.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.39.0/0.60b0 (2025-12-03)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003ccode\u003eopentelemetry-api\u003c/code\u003e: Convert objects of any type other than AnyValue in attributes to string to be exportable\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4808\"\u003e#4808\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003edocs: Added sqlcommenter example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4734\"\u003e#4734\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ebuild: bump ruff to 0.14.1\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4782\"\u003e#4782\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAdd \u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e as an optional dependency to \u003ccode\u003eopentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e\nand \u003ccode\u003eopentelemetry-exporter-otlp-proto-http\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4760\"\u003e#4760\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003esemantic-conventions: Bump to 1.38.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4791\"\u003e#4791\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Remove LogData and extend SDK LogRecord to have instrumentation scope\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4676\"\u003e#4676\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e[BREAKING] Rename several classes from Log to LogRecord\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4647\"\u003e#4647\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMigration Guide:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ccode\u003eLogData\u003c/code\u003e has been removed. Users should update their code as follows:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Exporters:\u003c/strong\u003e Change from \u003ccode\u003eSequence[LogData]\u003c/code\u003e to \u003ccode\u003eSequence[ReadableLogRecord]\u003c/code\u003e\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef export(self, batch: Sequence[LogData]) -\u0026gt; LogRecordExportResult:\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadableLogRecord\ndef export(self, batch: Sequence[ReadableLogRecord]) -\u0026gt; LogRecordExportResult:\n...\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eFor Log Processors:\u003c/strong\u003e Use \u003ccode\u003eReadWriteLogRecord\u003c/code\u003e for processing, \u003ccode\u003eReadableLogRecord\u003c/code\u003e for exporting\u003c/p\u003e\n\u003cpre lang=\"python\"\u003e\u003ccode\u003e# Before\nfrom opentelemetry.sdk._logs import LogData\ndef on_emit(self, log_data: LogData):\n    ...\n\u003ch1\u003eAfter\u003c/h1\u003e\n\u003cp\u003efrom opentelemetry.sdk._logs import ReadWriteLogRecord, ReadableLogRecord\ndef on_emit(self, log_record: ReadWriteLogRecord):\n# Convert to ReadableLogRecord before exporting\nreadable = ReadableLogRecord(\nlog_record=log_record.log_record,\nresource=log_record.resource or Resource.create({}),\ninstrumentation_scope=log_record.instrumentation_scope,\n\u003c/code\u003e\u003c/pre\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/dc0a9b340446b985cdebb6f45d70eab3e042c92a\"\u003e\u003ccode\u003edc0a9b3\u003c/code\u003e\u003c/a\u003e Prepare release 1.39.0/0.60b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4833\"\u003e#4833\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/cd150c3a201df6ff55c5a9b40ee877717d973a82\"\u003e\u003ccode\u003ecd150c3\u003c/code\u003e\u003c/a\u003e Fix changelog before the release (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4831\"\u003e#4831\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/382fa46621953a80a6659bc4fb0a8266c4c982fc\"\u003e\u003ccode\u003e382fa46\u003c/code\u003e\u003c/a\u003e Mark events API/SDK as deprecated (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4654\"\u003e#4654\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5307dd0a6cabea2877a67e067cf81be5285d586b\"\u003e\u003ccode\u003e5307dd0\u003c/code\u003e\u003c/a\u003e Fix errors on serialization of values that are not AnyValue in LogRecord attr...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/8615ba0a0bc675d6ccad6693c637f009fec727eb\"\u003e\u003ccode\u003e8615ba0\u003c/code\u003e\u003c/a\u003e Fix type checking for built in metric exporters (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4820\"\u003e#4820\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/62da90eda4b1348730180ce2fa0aeae72e09c7ed\"\u003e\u003ccode\u003e62da90e\u003c/code\u003e\u003c/a\u003e Add lmolkova to approvers (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4812\"\u003e#4812\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/61bda605d71498b15a13a106ed7564eaea9f642b\"\u003e\u003ccode\u003e61bda60\u003c/code\u003e\u003c/a\u003e Fix meeting and typos (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4817\"\u003e#4817\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/546e47b0001b40ca777515325953106e81ed8dbd\"\u003e\u003ccode\u003e546e47b\u003c/code\u003e\u003c/a\u003e [logs-api/sdk] Rename several classes from Log to LogRecord (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4647\"\u003e#4647\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5ddb8e7407a06b560c5483f7649913e170229936\"\u003e\u003ccode\u003e5ddb8e7\u003c/code\u003e\u003c/a\u003e [logs-sdk] Remove LogData and extend SDK LogRecord to have instrumentation sc...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/20dedf5f7fa4affc15bda27067bacc7cf366fac8\"\u003e\u003ccode\u003e20dedf5\u003c/code\u003e\u003c/a\u003e Add gcp auth package as optional dependency to the HTTP/GRPC OTLP Exporters (...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.29.0...v1.39.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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 2.0.7 to 4.0.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.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).\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\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/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\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v3.3.0\"\u003e3.3.0\u003c/a\u003e - 2025-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eexc_info_as_array\u003c/code\u003e and \u003ccode\u003estack_info_as_array\u003c/code\u003e options are added to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e allowing both to be encoded as list of lines instead of a single multi-line string. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/35\"\u003e#35\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003emsgspec-python313-pre\u003c/code\u003e from \u003ccode\u003edev\u003c/code\u003e dependencies preventing potential RCE. Details: \u003ca href=\"https://github.com/nhairs/python-json-logger/security/advisories/GHSA-wmxh-pxcx-9w24#advisory-comment-121307\"\u003eGHSA-wmxh-pxcx-9w24\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/1hakusai1\"\u003e\u003ccode\u003e@​1hakusai1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/omnigodz\"\u003e\u003ccode\u003e@​omnigodz\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.0...v3.2.1\"\u003e3.2.1\u003c/a\u003e - 2024-12-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImport error on \u003ccode\u003eimport pythonjsonlogger.jsonlogger\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/29\"\u003e#29\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.1.0...v3.2.0\"\u003e3.2.0\u003c/a\u003e - 2024-12-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epythonjsonlogger.[ORJSON,MSGSPEC]_AVAILABLE\u003c/code\u003e no longer imports the respective package when determining availability.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epythonjsonlogger.[orjson,msgspec]\u003c/code\u003e now throws a \u003ccode\u003epythonjsonlogger.exception.MissingPackageError\u003c/code\u003e when required libraries are not available. These contain more information about what is missing whilst still being an \u003ccode\u003eImportError\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edefaults\u003c/code\u003e parameter is no longer ignored and now conforms to the standard library. Setting a defaults dictionary will add the specified keys if the those keys do not exist in a record or weren't passed by the \u003ccode\u003eextra\u003c/code\u003e parameter when logging a message.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etyping_extensions\u003c/code\u003e is only installed on Python version \u0026lt; 3.10.\u003c/li\u003e\n\u003cli\u003eSupport Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v2.0.7...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.7.4 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature...\n\n_Description has been truncated_","html_url":"https://github.com/CharlieTLe/opentelemetry-demo/pull/432","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CharlieTLe%2Fopentelemetry-demo/issues/432","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/432/packages"}},{"old_version":"26.2.0","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-12-02T02:26:14.000Z","version_change":"26.2.0 → 27.1.0","issue":{"uuid":"3683722062","node_id":"PR_kwDONF5WLM62fb-4","number":428,"state":"closed","title":"chore: bump the pip-production-dependencies group across 4 directories with 48 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-03T23:27:13.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-02T02:26:14.000Z","updated_at":"2025-12-03T23:27:15.000Z","time_to_close":162059,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore: bump","group_name":"pip-production-dependencies","update_count":48,"packages":[{"name":"grpcio-health-checking","old_version":"1.68.1","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.68.1","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.29.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"2.0.7","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.7.4","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.1.5","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.1.3","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2024.8.30","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.0","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.7","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.15","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.0","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.66.0","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.4","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"locust","old_version":"2.32.4","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.5.3","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.29.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.29.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.29.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.50b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"5.29.1","new_version":"6.33.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.2.3","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.0","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 47 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.68.1` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.68.1` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.4` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.8.30` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.0` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.15` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.66.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.32.4` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.50b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.1` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.0` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.0` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 43 updates in the /src/loadgenerator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.4` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2024.8.30` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.0` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.15` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.66.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.4` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.32.4` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.50b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.1` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.0` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.2.3` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.0` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 11 updates in the /src/recommendationservice directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.68.1` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.68.1` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.50b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.29.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.4` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.0` | `7.1.3` |\n| [grpcio-tools](https://github.com/grpc/grpc) | `1.68.1` | `1.76.0` |\n\nBumps the pip-production-dependencies group with 1 update in the /src/recommendationservice/genproto directory: [grpcio-tools](https://github.com/grpc/grpc).\n\nUpdates `grpcio-health-checking` from 1.68.1 to 1.76.0\n\nUpdates `grpcio` from 1.68.1 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.68.1...v1.76.0\"\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.50b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\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.29.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.29.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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 2.0.7 to 4.0.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.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).\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\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/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\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v3.3.0\"\u003e3.3.0\u003c/a\u003e - 2025-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eexc_info_as_array\u003c/code\u003e and \u003ccode\u003estack_info_as_array\u003c/code\u003e options are added to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e allowing both to be encoded as list of lines instead of a single multi-line string. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/35\"\u003e#35\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003emsgspec-python313-pre\u003c/code\u003e from \u003ccode\u003edev\u003c/code\u003e dependencies preventing potential RCE. Details: \u003ca href=\"https://github.com/nhairs/python-json-logger/security/advisories/GHSA-wmxh-pxcx-9w24#advisory-comment-121307\"\u003eGHSA-wmxh-pxcx-9w24\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/1hakusai1\"\u003e\u003ccode\u003e@​1hakusai1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/omnigodz\"\u003e\u003ccode\u003e@​omnigodz\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.0...v3.2.1\"\u003e3.2.1\u003c/a\u003e - 2024-12-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImport error on \u003ccode\u003eimport pythonjsonlogger.jsonlogger\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/29\"\u003e#29\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.1.0...v3.2.0\"\u003e3.2.0\u003c/a\u003e - 2024-12-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epythonjsonlogger.[ORJSON,MSGSPEC]_AVAILABLE\u003c/code\u003e no longer imports the respective package when determining availability.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epythonjsonlogger.[orjson,msgspec]\u003c/code\u003e now throws a \u003ccode\u003epythonjsonlogger.exception.MissingPackageError\u003c/code\u003e when required libraries are not available. These contain more information about what is missing whilst still being an \u003ccode\u003eImportError\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edefaults\u003c/code\u003e parameter is no longer ignored and now conforms to the standard library. Setting a defaults dictionary will add the specified keys if the those keys do not exist in a record or weren't passed by the \u003ccode\u003eextra\u003c/code\u003e parameter when logging a message.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etyping_extensions\u003c/code\u003e is only installed on Python version \u0026lt; 3.10.\u003c/li\u003e\n\u003cli\u003eSupport Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v2.0.7...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.7.4 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-...\n\n_Description has been truncated_","html_url":"https://github.com/CharlieTLe/opentelemetry-demo/pull/428","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/CharlieTLe%2Fopentelemetry-demo/issues/428","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/428/packages"}},{"old_version":"26.2.1","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-12-01T08:46:48.000Z","version_change":"26.2.1 → 27.1.0","issue":{"uuid":"3679917932","node_id":"PR_kwDOO1JBg862SgIi","number":122,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 46 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-18T07:23:44.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-01T08:46:48.000Z","updated_at":"2025-12-18T07:23:46.000Z","time_to_close":1463816,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":46,"packages":[{"name":"grpcio-health-checking","old_version":"1.71.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.0","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"openfeature-provider-ofrep","old_version":"0.1.1","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 46 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 41 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 9 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.71.0 to 1.76.0\n\nUpdates `grpcio` from 1.71.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.71.0...v1.76.0\"\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.51b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\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.30.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/347517a7ccaf145a940fc6e2a37a8d1df621f3a3\"\u003e347517a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ff0a06e (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/498\"\u003e#498\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/c722cf0239f2b9b95a1214b99447a9316c2c73d8\"\u003ec722cf0\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-feature/python-sdk/commit/2d78d33d8a0e63c80c9ef330debd77fe80d3445f\"\u003e\u003ccode\u003e2d78d33\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e\u003ccode\u003e81a1d95\u003c/code\u003e\u003c/a\u003e chore: remove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e\u003ccode\u003e74409bf\u003c/code\u003e\u003c/a\u003e chore: add missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e\u003ccode\u003e837fef9\u003c/code\u003e\u003c/a\u003e chore: replace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003e\u003ccode\u003ede37144\u003c/code\u003e\u003c/a\u003e fix: fix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"...\n\n_Description has been truncated_","html_url":"https://github.com/Vs7sai/cd-cd/pull/122","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Vs7sai%2Fcd-cd/issues/122","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/122/packages"}},{"old_version":"26.2.1","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-12-01T08:28:09.000Z","version_change":"26.2.1 → 27.1.0","issue":{"uuid":"3679852427","node_id":"PR_kwDON4I6J862SR1p","number":184,"state":"closed","title":"Bump the pip-production-dependencies group across 3 directories with 45 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-18T07:20:01.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-01T08:28:09.000Z","updated_at":"2025-12-18T07:20:02.000Z","time_to_close":1464712,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-production-dependencies","update_count":45,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.1","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 45 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.1` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 41 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.1` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 9 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.1` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.51b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\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.30.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/347517a7ccaf145a940fc6e2a37a8d1df621f3a3\"\u003e347517a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ff0a06e (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/498\"\u003e#498\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/c722cf0239f2b9b95a1214b99447a9316c2c73d8\"\u003ec722cf0\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-feature/python-sdk/commit/2d78d33d8a0e63c80c9ef330debd77fe80d3445f\"\u003e\u003ccode\u003e2d78d33\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e\u003ccode\u003e81a1d95\u003c/code\u003e\u003c/a\u003e chore: remove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e\u003ccode\u003e74409bf\u003c/code\u003e\u003c/a\u003e chore: add missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e\u003ccode\u003e837fef9\u003c/code\u003e\u003c/a\u003e chore: replace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003e\u003ccode\u003ede37144\u003c/code\u003e\u003c/a\u003e fix: fix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003e\u003ccode\u003eb418cb0...\n\n_Description has been truncated_","html_url":"https://github.com/mokadir/mkadir-opentelemetry/pull/184","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/mokadir%2Fmkadir-opentelemetry/issues/184","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/184/packages"}},{"old_version":"26.2.1","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-12-01T07:48:07.000Z","version_change":"26.2.1 → 27.1.0","issue":{"uuid":"3679712971","node_id":"PR_kwDOOZWQFs62RzC0","number":133,"state":"closed","title":"Bump the pip-production-dependencies group across 3 directories with 46 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-18T06:24:09.000Z","author_association":null,"state_reason":null,"created_at":"2025-12-01T07:48:07.000Z","updated_at":"2025-12-18T06:24:11.000Z","time_to_close":1463762,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-production-dependencies","update_count":46,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.0","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.6","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"openfeature-provider-ofrep","old_version":"0.1.1","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 46 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 41 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.6` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.1.3` | `3.1.4` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 9 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.51b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\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.30.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/347517a7ccaf145a940fc6e2a37a8d1df621f3a3\"\u003e347517a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ff0a06e (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/498\"\u003e#498\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/c722cf0239f2b9b95a1214b99447a9316c2c73d8\"\u003ec722cf0\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-feature/python-sdk/commit/2d78d33d8a0e63c80c9ef330debd77fe80d3445f\"\u003e\u003ccode\u003e2d78d33\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e\u003ccode\u003e81a1d95\u003c/code\u003e\u003c/a\u003e chore: remove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e\u003ccode\u003e74409bf\u003c/code\u003e\u003c/a\u003e chore: add missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e\u003ccode\u003e837fef9\u003c/code\u003e\u003c/a\u003e chore: replace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003e\u003ccode\u003ede37144\u003c/code\u003e\u003c/a\u003e fix: fix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"...\n\n_Description has been truncated_","html_url":"https://github.com/EagleOpsCorp/app-backend/pull/133","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/EagleOpsCorp%2Fapp-backend/issues/133","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/133/packages"}},{"old_version":"23.2.1","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-11-27T05:01:02.000Z","version_change":"23.2.1 → 27.1.0","issue":{"uuid":"3669869372","node_id":"PR_kwDOAE7iNM61xdLe","number":2588,"state":"open","title":"chore(deps): bump pyzmq from 23.2.1 to 27.1.0","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":null,"author_association":null,"state_reason":null,"created_at":"2025-11-27T05:01:02.000Z","updated_at":"2025-11-27T05:01:39.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps)","packages":[{"name":"pyzmq","old_version":"23.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"}],"path":null,"ecosystem":"pip"},"body":"Bumps [pyzmq](https://github.com/zeromq/pyzmq) from 23.2.1 to 27.1.0.\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/zeromq/pyzmq/releases\"\u003epyzmq's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev27.1.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.1.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.2\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.2'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.1\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.1'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev27.0.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eInstall with:\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003epip install 'pyzmq==27.0.0'\n\u003c/code\u003e\u003c/pre\u003e\n\u003ch2\u003ev26.4.0\u003c/h2\u003e\n\u003cp\u003eSee \u003ca href=\"https://pyzmq.readthedocs.io/en/latest/changelog.html\"\u003erelease notes\u003c/a\u003e, or \u003ca href=\"https://pypi.org/project/pyzmq/27.1.0/\"\u003epyzmq on PyPI\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/zeromq/pyzmq/commit/425a21fd2ae3bc50d81176ff9a8253af3535a3d4\"\u003e\u003ccode\u003e425a21f\u003c/code\u003e\u003c/a\u003e Bump to 27.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/c6bf62145e912a95c0dfccff4609d1e52b464ceb\"\u003e\u003ccode\u003ec6bf621\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2127\"\u003e#2127\u003c/a\u003e from minrk/271\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/3558cceb69d9d5ca1ac14e2dc300060232371e86\"\u003e\u003ccode\u003e3558cce\u003c/code\u003e\u003c/a\u003e release 27.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/17b9ce8d4e7bbe4f35271a303a73498cff46d9fa\"\u003e\u003ccode\u003e17b9ce8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2126\"\u003e#2126\u003c/a\u003e from minrk/compile-time-drafts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/83040f7467f268c1cddfd26efac7790bdd7d64e0\"\u003e\u003ccode\u003e83040f7\u003c/code\u003e\u003c/a\u003e restore zmq.DRAFT_API meaning drafts are actually available\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/e21dcd8e0bfa8194230b588864b03cbbb839ea10\"\u003e\u003ccode\u003ee21dcd8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2124\"\u003e#2124\u003c/a\u003e from zeromq/pre-commit-ci-update-config\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/26233552a6c6557f2749265d3909a466ac57c3c3\"\u003e\u003ccode\u003e2623355\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/684b2e5cb40b764ca45875a0c0b3af6d4662d46c\"\u003e\u003ccode\u003e684b2e5\u003c/code\u003e\u003c/a\u003e Bump to 27.0.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/912e61982a3413d9b7cdc1786fac3b5d5fa64620\"\u003e\u003ccode\u003e912e619\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/zeromq/pyzmq/issues/2122\"\u003e#2122\u003c/a\u003e from minrk/devmode-fix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zeromq/pyzmq/commit/69f8d905855421fb69e1783c71a4c1502c299bd8\"\u003e\u003ccode\u003e69f8d90\u003c/code\u003e\u003c/a\u003e changelog for 27.0.2\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/zeromq/pyzmq/compare/v23.2.1...v27.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\n\n[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pyzmq\u0026package-manager=pip\u0026previous-version=23.2.1\u0026new-version=27.1.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)\n\nDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.\n\n[//]: # (dependabot-automerge-start)\n[//]: # (dependabot-automerge-end)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003eDependabot commands and options\u003c/summary\u003e\n\u003cbr /\u003e\n\nYou can trigger Dependabot actions by commenting on this PR:\n- `@dependabot rebase` will rebase this PR\n- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it\n- `@dependabot merge` will merge this PR after your CI passes on it\n- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it\n- `@dependabot cancel merge` will cancel a previously requested merge and block automerging\n- `@dependabot reopen` will reopen this PR if it is closed\n- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually\n- `@dependabot show \u003cdependency name\u003e ignore conditions` will show all of the ignore conditions of the specified dependency\n- `@dependabot ignore 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/Screenly/Anthias/pull/2588","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Screenly%2FAnthias/issues/2588","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/2588/packages"}},{"old_version":"25.1.1","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-11-26T21:23:20.000Z","version_change":"25.1.1 → 27.1.0","issue":{"uuid":"3669077027","node_id":"PR_kwDONnxDPM61u2ZY","number":161,"state":"closed","title":"Bump the pip-production-dependencies group across 3 directories with 49 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2026-01-26T23:10:11.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-26T21:23:20.000Z","updated_at":"2026-01-26T23:10:13.000Z","time_to_close":5276811,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-production-dependencies","update_count":49,"packages":[{"name":"grpcio-health-checking","old_version":"1.60.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.60.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.25.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.0","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"2.0.7","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.7.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.1.5","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.1.3","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"5.9.6","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2023.7.22","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.3.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.7","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.14","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.0.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"4.0.0","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"23.9.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.0.11","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.61.0","new_version":"1.72.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.0.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.4","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"itsdangerous","old_version":"2.1.2","new_version":"2.2.0","repository_url":"https://github.com/pallets/itsdangerous"},{"name":"jinja2","old_version":"3.1.2","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"locust","old_version":"2.18.2","new_version":"2.42.5","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"3.4.0","new_version":"5.0.0","repository_url":"https://github.com/SvenskaSpel/locust-plugins"},{"name":"markupsafe","old_version":"2.1.3","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.0.7","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.25.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.25.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.25.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.46b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"4.25.2","new_version":"6.33.1","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"25.1.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.31.0","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"six","old_version":"1.16.0","new_version":"1.17.0","repository_url":"https://github.com/benjaminp/six"},{"name":"typing-extensions","old_version":"4.8.0","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.0.7","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"werkzeug","old_version":"3.0.1","new_version":"3.1.3","repository_url":"https://github.com/pallets/werkzeug"},{"name":"wrapt","old_version":"1.16.0","new_version":"2.0.1","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.1","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"6.1","new_version":"8.1.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 49 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.60.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.60.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `5.9.6` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2023.7.22` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.14` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.0.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `4.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `23.9.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.0.11` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.61.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.0.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.4` | `3.11` |\n| [itsdangerous](https://github.com/pallets/itsdangerous) | `2.1.2` | `2.2.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.18.2` | `2.42.5` |\n| [locust-plugins](https://github.com/SvenskaSpel/locust-plugins) | `3.4.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.3` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.0.7` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.46b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `4.25.2` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `25.1.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.8.0` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.0.7` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.0.1` | `3.1.3` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.16.0` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `6.1` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 45 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `5.9.6` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2023.7.22` | `2025.11.12` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.3.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.7` | `8.3.1` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.14` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.0.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `4.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `23.9.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.0.11` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.61.0` | `1.72.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.0.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.4` | `3.11` |\n| [itsdangerous](https://github.com/pallets/itsdangerous) | `2.1.2` | `2.2.0` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.2` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.18.2` | `2.42.5` |\n| [locust-plugins](https://github.com/SvenskaSpel/locust-plugins) | `3.4.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `2.1.3` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.0.7` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.46b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `4.25.2` | `6.33.1` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `25.1.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.31.0` | `2.32.5` |\n| [six](https://github.com/benjaminp/six) | `1.16.0` | `1.17.0` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.8.0` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.0.7` | `2.5.0` |\n| [werkzeug](https://github.com/pallets/werkzeug) | `3.0.1` | `3.1.3` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.16.0` | `2.0.1` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.1` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `6.1` | `8.1.1` |\n\nBumps the pip-production-dependencies group with 10 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.60.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.60.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.46b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.25.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.0` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `2.0.7` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.7.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `5.9.6` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.60.0 to 1.76.0\n\nUpdates `grpcio` from 1.60.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.60.0...v1.76.0\"\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.46b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Fix exemplars generation for \u003ccode\u003ehttp.server.request.duration\u003c/code\u003e and \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3912\"\u003e#3912\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\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.25.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.25.0...v1.38.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.0.0 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.0.1] - 2024-01-23\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eGracefully handle code which has been imported from a zipfile (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/456\"\u003e#456\u003c/a\u003e by [\u003ca href=\"https://github.com/samwyma\"\u003e\u003ccode\u003e@​samwyma\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eAllow modules using \u003ccode\u003eload_dotenv\u003c/code\u003e to be reloaded when launched in a separate thread (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/497\"\u003e#497\u003c/a\u003e by [\u003ca href=\"https://github.com/freddyaboulton\"\u003e\u003ccode\u003e@​freddyaboulton\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eFix file not closed after deletion, handle error in the rewrite function (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/469\"\u003e#469\u003c/a\u003e by [\u003ca href=\"https://github.com/Qwerty-133\"\u003e\u003ccode\u003e@​Qwerty-133\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUse pathlib.Path in tests (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/466\"\u003e#466\u003c/a\u003e by [\u003ca href=\"https://github.com/eumiro\"\u003e\u003ccode\u003e@​eumiro\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eFix year in release date in changelog.md (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/454\"\u003e#454\u003c/a\u003e by [\u003ca href=\"https://github.com/jankislinger\"\u003e\u003ccode\u003e@​jankislinger\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003cli\u003eUse https in README links (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/474\"\u003e#474\u003c/a\u003e by [\u003ca href=\"https://github.com/Nicals\"\u003e\u003ccode\u003e@​Nicals\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.0...v1.2.1\"\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 2.0.7 to 4.0.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.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).\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\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/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\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v3.3.0\"\u003e3.3.0\u003c/a\u003e - 2025-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eexc_info_as_array\u003c/code\u003e and \u003ccode\u003estack_info_as_array\u003c/code\u003e options are added to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e allowing both to be encoded as list of lines instead of a single multi-line string. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/35\"\u003e#35\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003emsgspec-python313-pre\u003c/code\u003e from \u003ccode\u003edev\u003c/code\u003e dependencies preventing potential RCE. Details: \u003ca href=\"https://github.com/nhairs/python-json-logger/security/advisories/GHSA-wmxh-pxcx-9w24#advisory-comment-121307\"\u003eGHSA-wmxh-pxcx-9w24\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/1hakusai1\"\u003e\u003ccode\u003e@​1hakusai1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/omnigodz\"\u003e\u003ccode\u003e@​omnigodz\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.0...v3.2.1\"\u003e3.2.1\u003c/a\u003e - 2024-12-16\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eImport error on \u003ccode\u003eimport pythonjsonlogger.jsonlogger\u003c/code\u003e \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/29\"\u003e#29\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.1.0...v3.2.0\"\u003e3.2.0\u003c/a\u003e - 2024-12-11\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003epythonjsonlogger.[ORJSON,MSGSPEC]_AVAILABLE\u003c/code\u003e no longer imports the respective package when determining availability.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003epythonjsonlogger.[orjson,msgspec]\u003c/code\u003e now throws a \u003ccode\u003epythonjsonlogger.exception.MissingPackageError\u003c/code\u003e when required libraries are not available. These contain more information about what is missing whilst still being an \u003ccode\u003eImportError\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003edefaults\u003c/code\u003e parameter is no longer ignored and now conforms to the standard library. Setting a defaults dictionary will add the specified keys if the those keys do not exist in a record or weren't passed by the \u003ccode\u003eextra\u003c/code\u003e parameter when logging a message.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003etyping_extensions\u003c/code\u003e is only installed on Python version \u0026lt; 3.10.\u003c/li\u003e\n\u003cli\u003eSupport Python 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v2.0.7...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.7.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb...\n\n_Description has been truncated_","html_url":"https://github.com/Jineshkumar1/opentelemetry-demo/pull/161","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jineshkumar1%2Fopentelemetry-demo/issues/161","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/161/packages"}},{"old_version":"26.3.0","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-11-24T00:24:28.000Z","version_change":"26.3.0 → 27.1.0","issue":{"uuid":"3656659945","node_id":"PR_kwDOI11r5c61FR4_","number":343,"state":"open","title":"chore(deps-dev): Bump the pip-version-updates group across 1 directory with 29 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":"2025-11-24T00:24:28.000Z","updated_at":"2025-11-24T00:24:44.000Z","time_to_close":null,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"chore(deps-dev): Bump","group_name":"pip-version-updates","update_count":29,"packages":[{"name":"pygments","old_version":"2.19.1","new_version":"2.19.2","repository_url":"https://github.com/pygments/pygments"},{"name":"pytest-mock","old_version":"3.14.0","new_version":"3.14.1","repository_url":"https://github.com/pytest-dev/pytest-mock"},{"name":"ruff","old_version":"0.11.0","new_version":"0.14.6","repository_url":"https://github.com/astral-sh/ruff"},{"name":"xdoctest","old_version":"1.2.0","new_version":"1.3.0","repository_url":"https://github.com/Erotemic/xdoctest"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"beautifulsoup4","old_version":"4.13.3","new_version":"4.14.2"},{"name":"comm","old_version":"0.2.2","new_version":"0.2.3","repository_url":"https://github.com/ipython/comm"},{"name":"debugpy","old_version":"1.8.13","new_version":"1.8.17","repository_url":"https://github.com/microsoft/debugpy"},{"name":"distlib","old_version":"0.3.9","new_version":"0.4.0","repository_url":"https://github.com/pypa/distlib"},{"name":"docstring-parser-fork","old_version":"0.0.12","new_version":"0.0.14","repository_url":"https://github.com/rr-/docstring_parser"},{"name":"exceptiongroup","old_version":"1.2.2","new_version":"1.3.1","repository_url":"https://github.com/agronholm/exceptiongroup"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"iniconfig","old_version":"2.0.0","new_version":"2.1.0","repository_url":"https://github.com/pytest-dev/iniconfig"},{"name":"jupyter-core","old_version":"5.7.2","new_version":"5.8.1","repository_url":"https://github.com/jupyter/jupyter_core"},{"name":"mypy-extensions","old_version":"1.0.0","new_version":"1.1.0","repository_url":"https://github.com/python/mypy_extensions"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"prompt-toolkit","old_version":"3.0.50","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pytz","old_version":"2025.1","new_version":"2025.2","repository_url":"https://github.com/stub42/pytz"},{"name":"pywin32","old_version":"309","new_version":"311","repository_url":"https://github.com/mhammond/pywin32"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"pyzmq","old_version":"26.3.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"ruamel-yaml","old_version":"0.18.10","new_version":"0.18.16"},{"name":"snowballstemmer","old_version":"2.2.0","new_version":"3.0.1","repository_url":"https://github.com/snowballstem/snowball"},{"name":"soupsieve","old_version":"2.6","new_version":"2.7","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.13.2","repository_url":"https://github.com/python/typing_extensions"},{"name":"virtualenv","old_version":"20.29.3","new_version":"20.35.4","repository_url":"https://github.com/pypa/virtualenv"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.2.14","repository_url":"https://github.com/jquast/wcwidth"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-version-updates group with 29 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [pygments](https://github.com/pygments/pygments) | `2.19.1` | `2.19.2` |\n| [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.0` | `3.14.1` |\n| [ruff](https://github.com/astral-sh/ruff) | `0.11.0` | `0.14.6` |\n| [xdoctest](https://github.com/Erotemic/xdoctest) | `1.2.0` | `1.3.0` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.3` | `4.14.2` |\n| [comm](https://github.com/ipython/comm) | `0.2.2` | `0.2.3` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.13` | `1.8.17` |\n| [distlib](https://github.com/pypa/distlib) | `0.3.9` | `0.4.0` |\n| [docstring-parser-fork](https://github.com/rr-/docstring_parser) | `0.0.12` | `0.0.14` |\n| [exceptiongroup](https://github.com/agronholm/exceptiongroup) | `1.2.2` | `1.3.1` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [iniconfig](https://github.com/pytest-dev/iniconfig) | `2.0.0` | `2.1.0` |\n| [jupyter-core](https://github.com/jupyter/jupyter_core) | `5.7.2` | `5.8.1` |\n| [mypy-extensions](https://github.com/python/mypy_extensions) | `1.0.0` | `1.1.0` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.50` | `3.0.52` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pytz](https://github.com/stub42/pytz) | `2025.1` | `2025.2` |\n| [pywin32](https://github.com/mhammond/pywin32) | `309` | `311` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.3.0` | `27.1.0` |\n| ruamel-yaml | `0.18.10` | `0.18.16` |\n| [snowballstemmer](https://github.com/snowballstem/snowball) | `2.2.0` | `3.0.1` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.6` | `2.7` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.13.2` |\n| [virtualenv](https://github.com/pypa/virtualenv) | `20.29.3` | `20.35.4` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.2.14` |\n\n\nUpdates `pygments` from 2.19.1 to 2.19.2\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pygments/pygments/releases\"\u003epygments's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e2.19.2\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eLua: Fix regression introduced in 2.19.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2882\"\u003e#2882\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2839\"\u003e#2839\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/pygments/pygments/blob/master/CHANGES\"\u003epygments's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 2.19.2\u003c/h2\u003e\n\u003cp\u003e(released June 21st, 2025)\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eLua: Fix regression introduced in 2.19.0 (\u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2882\"\u003e#2882\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2839\"\u003e#2839\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/pygments/pygments/commit/cfca62e6e95136e48a255e8cbffb0bbe1d98456c\"\u003e\u003ccode\u003ecfca62e\u003c/code\u003e\u003c/a\u003e Prepare v2.19.2 release.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/6688300df2ea289a6137c7ee9c78d0bb95683b5c\"\u003e\u003ccode\u003e6688300\u003c/code\u003e\u003c/a\u003e Disable pyodide (currently broken.)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/66997c3e302226a95c22cdaebf827444327920fa\"\u003e\u003ccode\u003e66997c3\u003c/code\u003e\u003c/a\u003e Update ruff version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/94dda77d69a6d6c47c33f06ce2425e7f306154a2\"\u003e\u003ccode\u003e94dda77\u003c/code\u003e\u003c/a\u003e Update CHANGES.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/26634c856cefea620571123577d1f8cf09589ed8\"\u003e\u003ccode\u003e26634c8\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2882\"\u003e#2882\u003c/a\u003e from thavelick/fix_lua_runaway_regex\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/b6a51ece09e31d3db2b732c8536a533b6de74768\"\u003e\u003ccode\u003eb6a51ec\u003c/code\u003e\u003c/a\u003e fix lua regex causing runaway backtracking.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/edef94d66c2d70f05a86ac6098a69ab253b8d946\"\u003e\u003ccode\u003eedef94d\u003c/code\u003e\u003c/a\u003e Investigation for \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2839\"\u003e#2839\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/fb6a00ef872e45a23212c214b8494ebedbd4709b\"\u003e\u003ccode\u003efb6a00e\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pygments/pygments/issues/2837\"\u003e#2837\u003c/a\u003e from dlazin/sql-cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pygments/pygments/commit/bf7aa2368fe7e0f42d4543781f0b00b4565b3995\"\u003e\u003ccode\u003ebf7aa23\u003c/code\u003e\u003c/a\u003e Clean up sql.py\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/pygments/pygments/compare/2.19.1...2.19.2\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `pytest-mock` from 3.14.0 to 3.14.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/pytest-mock/releases\"\u003epytest-mock's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev3.14.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/pull/503\"\u003e#503\u003c/a\u003e: Python 3.14 is now officially supported.\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/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst\"\u003epytest-mock's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e3.14.1 (2025-05-26)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003e[#503](https://github.com/pytest-dev/pytest-mock/issues/503) \u0026lt;https://github.com/pytest-dev/pytest-mock/pull/503\u0026gt;\u003c/code\u003e_: Python 3.14 is now officially supported.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/34dd61aa459520e096c70eb8a573700fc17c5de8\"\u003e\u003ccode\u003e34dd61a\u003c/code\u003e\u003c/a\u003e Release 3.14.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/299adb96640a51a48b5af9a69064b9edd7a9fe90\"\u003e\u003ccode\u003e299adb9\u003c/code\u003e\u003c/a\u003e Add support for Python 3.14 (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/503\"\u003e#503\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/f5fcef726a8ba4a54cd138321ae9771648a0bc8a\"\u003e\u003ccode\u003ef5fcef7\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/504\"\u003e#504\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/bae64d8c8ef44a7075d63f1d7f6ac36b76b61ce4\"\u003e\u003ccode\u003ebae64d8\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/502\"\u003e#502\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/824f334cc4b39eb05c0093fc43411ada3fdc8300\"\u003e\u003ccode\u003e824f334\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/501\"\u003e#501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/db1add63034430d66835c78992c0ed9b1e331cfd\"\u003e\u003ccode\u003edb1add6\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/500\"\u003e#500\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/48ac8746b6587457becf31d1272947de6d65e0d0\"\u003e\u003ccode\u003e48ac874\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/499\"\u003e#499\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/fe7ad9aab6a8e15e5762d5bdc85402249f2ca7ef\"\u003e\u003ccode\u003efe7ad9a\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/498\"\u003e#498\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/7857e608242aeb3d4b771296ee41d258b1a13838\"\u003e\u003ccode\u003e7857e60\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/497\"\u003e#497\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/pytest-mock/commit/a8b97ea2ca86e9cfa553e395cf20352a881d8eaf\"\u003e\u003ccode\u003ea8b97ea\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/pytest-dev/pytest-mock/issues/496\"\u003e#496\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/pytest-mock/compare/v3.14.0...v3.14.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `ruff` from 0.11.0 to 0.14.6\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/releases\"\u003eruff's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.14.6\u003c/h2\u003e\n\u003ch2\u003eRelease Notes\u003c/h2\u003e\n\u003cp\u003eReleased on 2025-11-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Support new PySNMP API paths (\u003ccode\u003eS508\u003c/code\u003e, \u003ccode\u003eS509\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21374\"\u003e#21374\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdjust own-line comment placement between branches (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21185\"\u003e#21185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error when formatting attribute expressions with outer parentheses, parenthesized value, and trailing comment on value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20418\"\u003e#20418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix panic when formatting comments in unary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21501\"\u003e#21501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003efmt: skip\u003c/code\u003e for compound statements on a single line (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20633\"\u003e#20633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Fix \u003ccode\u003eFURB103\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21454\"\u003e#21454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Fix false positive for complex conversion specifiers in \u003ccode\u003elogging-eager-conversion\u003c/code\u003e (\u003ccode\u003eRUF065\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid false positive on \u003ccode\u003eClassVar\u003c/code\u003e reassignment (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21478\"\u003e#21478\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRender hyperlinks for lint errors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21514\"\u003e#21514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eruff analyze\u003c/code\u003e option to skip over imports in \u003ccode\u003eTYPE_CHECKING\u003c/code\u003e blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21472\"\u003e#21472\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit \u003ccode\u003eeglot-format\u003c/code\u003e hook to eglot-managed Python buffers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21459\"\u003e#21459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention \u003ccode\u003eforce-exclude\u003c/code\u003e in \u0026quot;Configuration \u0026gt; Python file discovery\u0026quot; (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21500\"\u003e#21500\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gauthsvenkat\"\u003e\u003ccode\u003e@​gauthsvenkat\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thamer\"\u003e\u003ccode\u003e@​thamer\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Ruchir28\"\u003e\u003ccode\u003e@​Ruchir28\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thejcannon\"\u003e\u003ccode\u003e@​thejcannon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danparizher\"\u003e\u003ccode\u003e@​danparizher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eInstall ruff 0.14.6\u003c/h2\u003e\n\u003ch3\u003eInstall prebuilt binaries via shell script\u003c/h3\u003e\n\u003cpre lang=\"sh\"\u003e\u003ccode\u003ecurl --proto '=https' --tlsv1.2 -LsSf https://github.com/astral-sh/ruff/releases/download/0.14.6/ruff-installer.sh | sh\n\u0026lt;/tr\u0026gt;\u0026lt;/table\u0026gt; \n\u003c/code\u003e\u003c/pre\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md\"\u003eruff's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.14.6\u003c/h2\u003e\n\u003cp\u003eReleased on 2025-11-21.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-bandit\u003c/code\u003e] Support new PySNMP API paths (\u003ccode\u003eS508\u003c/code\u003e, \u003ccode\u003eS509\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21374\"\u003e#21374\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBug fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eAdjust own-line comment placement between branches (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21185\"\u003e#21185\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAvoid syntax error when formatting attribute expressions with outer parentheses, parenthesized value, and trailing comment on value (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20418\"\u003e#20418\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix panic when formatting comments in unary expressions (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21501\"\u003e#21501\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRespect \u003ccode\u003efmt: skip\u003c/code\u003e for compound statements on a single line (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/20633\"\u003e#20633\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003erefurb\u003c/code\u003e] Fix \u003ccode\u003eFURB103\u003c/code\u003e autofix (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21454\"\u003e#21454\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Fix false positive for complex conversion specifiers in \u003ccode\u003elogging-eager-conversion\u003c/code\u003e (\u003ccode\u003eRUF065\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21464\"\u003e#21464\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRule changes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eruff\u003c/code\u003e] Avoid false positive on \u003ccode\u003eClassVar\u003c/code\u003e reassignment (\u003ccode\u003eRUF012\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21478\"\u003e#21478\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eCLI\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRender hyperlinks for lint errors (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21514\"\u003e#21514\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd a \u003ccode\u003eruff analyze\u003c/code\u003e option to skip over imports in \u003ccode\u003eTYPE_CHECKING\u003c/code\u003e blocks (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21472\"\u003e#21472\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eLimit \u003ccode\u003eeglot-format\u003c/code\u003e hook to eglot-managed Python buffers (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21459\"\u003e#21459\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMention \u003ccode\u003eforce-exclude\u003c/code\u003e in \u0026quot;Configuration \u0026gt; Python file discovery\u0026quot; (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21500\"\u003e#21500\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ntBre\"\u003e\u003ccode\u003e@​ntBre\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylwil3\"\u003e\u003ccode\u003e@​dylwil3\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gauthsvenkat\"\u003e\u003ccode\u003e@​gauthsvenkat\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MichaReiser\"\u003e\u003ccode\u003e@​MichaReiser\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thamer\"\u003e\u003ccode\u003e@​thamer\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Ruchir28\"\u003e\u003ccode\u003e@​Ruchir28\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thejcannon\"\u003e\u003ccode\u003e@​thejcannon\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/danparizher\"\u003e\u003ccode\u003e@​danparizher\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chirizxc\"\u003e\u003ccode\u003e@​chirizxc\u003c/code\u003e\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e0.14.5\u003c/h2\u003e\n\u003cp\u003eReleased on 2025-11-13.\u003c/p\u003e\n\u003ch3\u003ePreview features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e[\u003ccode\u003eflake8-simplify\u003c/code\u003e] Apply \u003ccode\u003eSIM113\u003c/code\u003e when index variable is of type \u003ccode\u003eint\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/pull/21395\"\u003e#21395\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/59c6cb521d26380120f8522476fd09d296bf4f2e\"\u003e\u003ccode\u003e59c6cb5\u003c/code\u003e\u003c/a\u003e Bump 0.14.6 (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/21558\"\u003e#21558\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/54dba15088ced32c31592ab44ddfdf40614002bb\"\u003e\u003ccode\u003e54dba15\u003c/code\u003e\u003c/a\u003e [ty] Improve debug messages when imports fail (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/21555\"\u003e#21555\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1af318534a01ba6be69d7d77c33e96080635a8af\"\u003e\u003ccode\u003e1af3185\u003c/code\u003e\u003c/a\u003e [ty] Add support for relative import completions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/553e5686248e86b9c781af77c714adc229bf8cc5\"\u003e\u003ccode\u003e553e568\u003c/code\u003e\u003c/a\u003e [ty] Refactor detection of import statements for completions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/cdef3f5ab8115e2581e080341d4bab932d905af4\"\u003e\u003ccode\u003ecdef3f5\u003c/code\u003e\u003c/a\u003e [ty] Use dedicated collector for completions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/617882242719af179a42be68170f9de9d83174f4\"\u003e\u003ccode\u003e6178822\u003c/code\u003e\u003c/a\u003e [ty] Attach subdiagnostics to \u003ccode\u003eunresolved-import\u003c/code\u003e errors for relative imports...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/6b7adb0537d1a57f26cf462a637af483e0ba2c75\"\u003e\u003ccode\u003e6b7adb0\u003c/code\u003e\u003c/a\u003e [ty] support PEP 613 type aliases (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/21394\"\u003e#21394\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/06941c1987bd4fe2b54d99b5514784472cabc0b3\"\u003e\u003ccode\u003e06941c1\u003c/code\u003e\u003c/a\u003e [ty] More low-hanging fruit for inlay hint goto-definition (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/21548\"\u003e#21548\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/eb7c098d6b70aacbaebe8b7c8d7710ad4ad0f46b\"\u003e\u003ccode\u003eeb7c098\u003c/code\u003e\u003c/a\u003e [ty] implement \u003ccode\u003eTypedDict\u003c/code\u003e structural assignment (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/21467\"\u003e#21467\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/astral-sh/ruff/commit/1b28fc1f1417284a075afa4a18c5e9d31a7d8620\"\u003e\u003ccode\u003e1b28fc1\u003c/code\u003e\u003c/a\u003e [ty] Add more random TypeDetails and tests (\u003ca href=\"https://redirect.github.com/astral-sh/ruff/issues/21546\"\u003e#21546\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/astral-sh/ruff/compare/0.11.0...0.14.6\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `xdoctest` from 1.2.0 to 1.3.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/Erotemic/xdoctest/releases\"\u003exdoctest's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.3.0\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew \u003ccode\u003eASYNC\u003c/code\u003e basic directive to hold the asyncio event loop in any section of\ncode. Useful for multitasking tests.\u003c/li\u003e\n\u003cli\u003eSupport for 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003e16806_WORKAROUND\u003c/code\u003e as it is not longer needed for Python 3.8+\u003c/li\u003e\n\u003cli\u003eRemoved deprecated --xdoc-force-dynamic and --allow-xdoc-dynamic flags\u003c/li\u003e\n\u003cli\u003eImproved speed (~6x) of doctest collection when running in pytest\u003c/li\u003e\n\u003cli\u003eUses pytest plugin system to disable stdlib doctest instead of monkey patching.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed incorrect return type in docstrings\u003c/li\u003e\n\u003cli\u003eThe doctest parser no longer expand tabs to spaces\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eStart branch for dev/1.2.1\nby \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/162\"\u003eErotemic/xdoctest#162\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDev Branch: 1.2.1  by \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/163\"\u003eErotemic/xdoctest#163\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnable 313 in CI by \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/165\"\u003eErotemic/xdoctest#165\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDev/1.2.1 by \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/166\"\u003eErotemic/xdoctest#166\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003estatic_parse update by \u003ca href=\"https://github.com/lczyk\"\u003e\u003ccode\u003e@​lczyk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/168\"\u003eErotemic/xdoctest#168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDev/1.2.1 by \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/170\"\u003eErotemic/xdoctest#170\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix: dont expand tabs to spaces by \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/172\"\u003eErotemic/xdoctest#172\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDisable \u003ccode\u003e_pytest.doctest\u003c/code\u003e via the plugin system by \u003ca href=\"https://github.com/TTsangSC\"\u003e\u003ccode\u003e@​TTsangSC\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/174\"\u003eErotemic/xdoctest#174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eImprove async support with a new directive by \u003ca href=\"https://github.com/x42005e1f\"\u003e\u003ccode\u003e@​x42005e1f\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/176\"\u003eErotemic/xdoctest#176\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eDev/1.3.0 by \u003ca href=\"https://github.com/Erotemic\"\u003e\u003ccode\u003e@​Erotemic\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/177\"\u003eErotemic/xdoctest#177\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003easyncio.Runner\u003c/code\u003e on Python\u0026gt;=3.11 by \u003ca href=\"https://github.com/x42005e1f\"\u003e\u003ccode\u003e@​x42005e1f\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/178\"\u003eErotemic/xdoctest#178\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate documentation according to the latest changes by \u003ca href=\"https://github.com/x42005e1f\"\u003e\u003ccode\u003e@​x42005e1f\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/179\"\u003eErotemic/xdoctest#179\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/lczyk\"\u003e\u003ccode\u003e@​lczyk\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/168\"\u003eErotemic/xdoctest#168\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TTsangSC\"\u003e\u003ccode\u003e@​TTsangSC\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/174\"\u003eErotemic/xdoctest#174\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/x42005e1f\"\u003e\u003ccode\u003e@​x42005e1f\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/pull/176\"\u003eErotemic/xdoctest#176\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/Erotemic/xdoctest/compare/v1.2.0...refs/heads/release\"\u003ehttps://github.com/Erotemic/xdoctest/compare/v1.2.0...refs/heads/release\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/Erotemic/xdoctest/blob/main/CHANGELOG.md\"\u003exdoctest's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.3.0 - Released 2025-09-08\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eNew \u003ccode\u003eASYNC\u003c/code\u003e basic directive to hold the asyncio event loop in any section of\ncode. Useful for multitasking tests.\u003c/li\u003e\n\u003cli\u003eSupport for 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved \u003ccode\u003e16806_WORKAROUND\u003c/code\u003e as it is not longer needed for Python 3.8+\u003c/li\u003e\n\u003cli\u003eRemoved deprecated --xdoc-force-dynamic and --allow-xdoc-dynamic flags\u003c/li\u003e\n\u003cli\u003eImproved speed (~6x) of doctest collection when running in pytest\u003c/li\u003e\n\u003cli\u003eUses pytest plugin system to disable stdlib doctest instead of monkey patching.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixed incorrect return type in docstrings\u003c/li\u003e\n\u003cli\u003eThe doctest parser no longer expand tabs to spaces\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/Erotemic/xdoctest/commit/fac830885b9e9a1ca26a374d63036a9f25cc2066\"\u003e\u003ccode\u003efac8308\u003c/code\u003e\u003c/a\u003e Update documentation according to the latest changes (\u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/issues/179\"\u003e#179\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/f19a808717a4f3c9ebb53f5f2102b6f46fed52e6\"\u003e\u003ccode\u003ef19a808\u003c/code\u003e\u003c/a\u003e Use \u003ccode\u003easyncio.Runner\u003c/code\u003e on Python\u0026gt;=3.11 (\u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/2646c4bb2c8d4880cde4503c5b46b784fc9e01de\"\u003e\u003ccode\u003e2646c4b\u003c/code\u003e\u003c/a\u003e Dev/1.3.0 (\u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/9f633b1aae52bc1c0827a140c01dffc586694bc1\"\u003e\u003ccode\u003e9f633b1\u003c/code\u003e\u003c/a\u003e Improve async support with a new directive (\u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/issues/176\"\u003e#176\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/e029e414ba6fe85fbee9298e4721dc0590fc342d\"\u003e\u003ccode\u003ee029e41\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/Erotemic/xdoctest/issues/174\"\u003e#174\u003c/a\u003e from TTsangSC/reversibly-disable-doctest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/b1435256a1475ddccb2184da9c564a20bccb6776\"\u003e\u003ccode\u003eb143525\u003c/code\u003e\u003c/a\u003e Add changelog note\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/be66ffac0419bdcae54e703042ef67304af2b744\"\u003e\u003ccode\u003ebe66ffa\u003c/code\u003e\u003c/a\u003e Remove unused imports\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/d3dd93a8e56e55e62ec4617d02acce3e20f5be67\"\u003e\u003ccode\u003ed3dd93a\u003c/code\u003e\u003c/a\u003e Backward compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/a6f4f4d3db890d2827ec2252867014ced6150b64\"\u003e\u003ccode\u003ea6f4f4d\u003c/code\u003e\u003c/a\u003e Fixed corresponding tests\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Erotemic/xdoctest/commit/b018ce70917616681376e5f2bfa5f362cf5820b5\"\u003e\u003ccode\u003eb018ce7\u003c/code\u003e\u003c/a\u003e Fixes\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/Erotemic/xdoctest/compare/v1.2.0...v1.3.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.13.3 to 4.14.2\n\nUpdates `comm` from 0.2.2 to 0.2.3\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/ipython/comm/releases\"\u003ecomm's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.2.3\u003c/h2\u003e\n\u003ch2\u003e0.2.3\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/comm/compare/v0.2.2...ec3eb438c07314b47c057c1cc3ce5fe43c294e90\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eMerged PRs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003etraitlets\u003c/code\u003e dependency \u003ca href=\"https://redirect.github.com/ipython/comm/pull/32\"\u003e#32\u003c/a\u003e (\u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Security.md file. \u003ca href=\"https://redirect.github.com/ipython/comm/pull/29\"\u003e#29\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epre-commit updates and fixes \u003ca href=\"https://redirect.github.com/ipython/comm/pull/28\"\u003e#28\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/comm/graphs/contributors?from=2024-03-12\u0026amp;to=2025-07-25\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fcomm+involves%3ACarreau+updated%3A2024-03-12..2025-07-25\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fcomm+involves%3Adavidbrochart+updated%3A2024-03-12..2025-07-25\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\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/ipython/comm/blob/main/CHANGELOG.md\"\u003ecomm's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e0.2.3\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/comm/compare/v0.2.2...ec3eb438c07314b47c057c1cc3ce5fe43c294e90\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eMerged PRs\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003etraitlets\u003c/code\u003e dependency \u003ca href=\"https://redirect.github.com/ipython/comm/pull/32\"\u003e#32\u003c/a\u003e (\u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd Security.md file. \u003ca href=\"https://redirect.github.com/ipython/comm/pull/29\"\u003e#29\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003epre-commit updates and fixes \u003ca href=\"https://redirect.github.com/ipython/comm/pull/28\"\u003e#28\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/ipython/comm/graphs/contributors?from=2024-03-12\u0026amp;to=2025-07-25\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fcomm+involves%3ACarreau+updated%3A2024-03-12..2025-07-25\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Aipython%2Fcomm+involves%3Adavidbrochart+updated%3A2024-03-12..2025-07-25\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/057b00a49aabb97fb3c66eedcd97f09c6481d3c8\"\u003e\u003ccode\u003e057b00a\u003c/code\u003e\u003c/a\u003e Publish 0.2.3\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/ec3eb438c07314b47c057c1cc3ce5fe43c294e90\"\u003e\u003ccode\u003eec3eb43\u003c/code\u003e\u003c/a\u003e Remove \u003ccode\u003etraitlets\u003c/code\u003e dependency (\u003ca href=\"https://redirect.github.com/ipython/comm/issues/32\"\u003e#32\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/2223501c677ac4b8289294947cb10f4f120c6117\"\u003e\u003ccode\u003e2223501\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ipython/comm/issues/29\"\u003e#29\u003c/a\u003e from Carreau/secmd\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/31714fec2ec02aa0fdeb34bdaddee0ed94e5b676\"\u003e\u003ccode\u003e31714fe\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] auto fixes from pre-commit.com hooks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/706df339274bd66b887badfc755a5369223b09a4\"\u003e\u003ccode\u003e706df33\u003c/code\u003e\u003c/a\u003e Add Security.md file.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/3737dd5e8225dbcf710fb3490b01d3bdafc80294\"\u003e\u003ccode\u003e3737dd5\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/ipython/comm/issues/28\"\u003e#28\u003c/a\u003e from Carreau/pc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ipython/comm/commit/265d2c07ef255785e9aef4111f1391091d7e9d7e\"\u003e\u003ccode\u003e265d2c0\u003c/code\u003e\u003c/a\u003e pre-commit updates and fixes\u003c/li\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/ipython/comm/compare/v0.2.2...v0.2.3\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `debugpy` from 1.8.13 to 1.8.17\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/microsoft/debugpy/releases\"\u003edebugpy's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003edebugpy v1.8.16\u003c/h2\u003e\n\u003cp\u003eFixes\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/1939\"\u003eFix bug in attach for 3.11 and lower on Windows\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/osiewicz\"\u003e\u003ccode\u003e@​osiewicz\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003edebugpy v1.8.15\u003c/h2\u003e\n\u003cp\u003eFixes:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1876\"\u003eStep Over, Step Into, not working when debugging Subprocesses\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1918\"\u003eAllow debugging child processes started through an intermediary\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/microsoft/debugpy/pull/1917\"\u003eAttach to process on arm64 Mac\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1898\"\u003eDocumentation typo\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1893\"\u003e3.14 preliminary support\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks to \u003ca href=\"https://github.com/MichaelSpece\"\u003e\u003ccode\u003e@​MichaelSpece\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/jborean93\"\u003e\u003ccode\u003e@​jborean93\u003c/code\u003e\u003c/a\u003e, \u003ca href=\"https://github.com/ConradIrwin\"\u003e\u003ccode\u003e@​ConradIrwin\u003c/code\u003e\u003c/a\u003e for your help\u003c/p\u003e\n\u003ch2\u003edebugpy v1.8.14\u003c/h2\u003e\n\u003cp\u003eFixes for:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ebinskim warnings on linux\u003c/li\u003e\n\u003cli\u003esupport for posix_spawnp\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/microsoft/debugpy/commit/6cbdf8767e4c88dfaedf3db7b09ce2781496fc51\"\u003e\u003ccode\u003e6cbdf87\u003c/code\u003e\u003c/a\u003e update testing for python 3.14 (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1955\"\u003e#1955\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/2eb3afede0dd5b3c6229a2b8849efbfa18b3e078\"\u003e\u003ccode\u003e2eb3afe\u003c/code\u003e\u003c/a\u003e Check if \u003ccode\u003eos.__file__\u003c/code\u003e is available before using it (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1944\"\u003e#1944\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/b00a8129977494bd127dd0bfed22082597762a08\"\u003e\u003ccode\u003eb00a812\u003c/code\u003e\u003c/a\u003e pydevd: Fix up prefix of attach shared library for Windows (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1939\"\u003e#1939\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/1aff9aa541955b967f41895570d4c0b54a7504d9\"\u003e\u003ccode\u003e1aff9aa\u003c/code\u003e\u003c/a\u003e Expose CLI Options through public API (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1928\"\u003e#1928\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/ead90f6f71de505191038872a2aa8718874372a9\"\u003e\u003ccode\u003eead90f6\u003c/code\u003e\u003c/a\u003e Fix round-robin CI script when state issue has no assignees (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1930\"\u003e#1930\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/2b1e361eace18384ed30e2f18ae32febd9faea09\"\u003e\u003ccode\u003e2b1e361\u003c/code\u003e\u003c/a\u003e Document --adapter-access-token CLI arg (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1927\"\u003e#1927\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/ea1dd9a838749a58bcc2d026693cc5a3c3cdbad1\"\u003e\u003ccode\u003eea1dd9a\u003c/code\u003e\u003c/a\u003e Fix debugger stepping actions in forked process (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1921\"\u003e#1921\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/b387710b7f5cb7cbeab10783540d497854d71615\"\u003e\u003ccode\u003eb387710\u003c/code\u003e\u003c/a\u003e Add parent-session-pid argument (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1920\"\u003e#1920\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/0d65353cc6e519292296bf567bdc6dfa5bcd4ffc\"\u003e\u003ccode\u003e0d65353\u003c/code\u003e\u003c/a\u003e Fix attach to process on arm64 Mac. (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1917\"\u003e#1917\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/microsoft/debugpy/commit/99b202ee21441f844b4c8fa3f79d518834fa5ff5\"\u003e\u003ccode\u003e99b202e\u003c/code\u003e\u003c/a\u003e \u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1898\"\u003emicrosoft/debugpy#1898\u003c/a\u003e Fix. (\u003ca href=\"https://redirect.github.com/microsoft/debugpy/issues/1899\"\u003e#1899\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/microsoft/debugpy/compare/v1.8.13...v1.8.17\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `distlib` from 0.3.9 to 0.4.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pypa/distlib/blob/master/CHANGES.rst\"\u003edistlib's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.4.0\u003c/p\u003e\n\u003cpre\u003e\u003ccode\u003e\nReleased: 2025-07-17\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003emarkers\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd the \u003ccode\u003einterpret_parsed\u003c/code\u003e function.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003ewheel\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/238\"\u003e#238\u003c/a\u003e: Add build tag to wheel metadata if specified.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/243\"\u003e#243\u003c/a\u003e: Update to support free-threading version of Python (3.13t).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e: Support subdirectories in the dist-info directory. Thanks to Pieter P for the patch.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e: Fix path normalisation issue caused by the fix for \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eMove import in script wrapper to \u0026quot;if \u003cstrong\u003ename\u003c/strong\u003e == 'main'\u0026quot; clause.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003etests\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFix \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/245\"\u003e#245\u003c/a\u003e: Skip test_package_data if a SKIP_EXT_PACKAGE_DATA environment variable is present.\n\u003c/code\u003e\u003c/pre\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/aff2cbbc4e8a87b9440cb93472789a213813dbd6\"\u003e\u003ccode\u003eaff2cbb\u003c/code\u003e\u003c/a\u003e Finalise version.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/3716c4bcccac19d0c0f2ce0d1272dd33996381b5\"\u003e\u003ccode\u003e3716c4b\u003c/code\u003e\u003c/a\u003e Update change log, widen exception catching in test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/660bd337bf3217a7bd907c2ba8a2f8dd291ac793\"\u003e\u003ccode\u003e660bd33\u003c/code\u003e\u003c/a\u003e Changes for 0.4.0.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/56b4ad938455048fc79e599d369e02a1414e9946\"\u003e\u003ccode\u003e56b4ad9\u003c/code\u003e\u003c/a\u003e Guard script wrapper entrypoint import with if \u003cstrong\u003emain\u003c/strong\u003e (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/242\"\u003e#242\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/fe573669087cb1109fb0cc249bf0e06a5461324c\"\u003e\u003ccode\u003efe57366\u003c/code\u003e\u003c/a\u003e docs: update coverage results link (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/250\"\u003e#250\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/c3286e508bb60cd2337408d88eb614a93b612d8c\"\u003e\u003ccode\u003ec3286e5\u003c/code\u003e\u003c/a\u003e Temporarily exclude 3.13t on windows-latest.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/e6b83d3b0eeb11d8e7b053f11139d15aab89d196\"\u003e\u003ccode\u003ee6b83d3\u003c/code\u003e\u003c/a\u003e Normalize archive paths in dist-info (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/248\"\u003e#248\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/93baffeaa1773796d802bb761607a6466790dcba\"\u003e\u003ccode\u003e93baffe\u003c/code\u003e\u003c/a\u003e Skip no-longer-relevant test.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/83f656836f4b6d8175172fcb8370fbee691f2bec\"\u003e\u003ccode\u003e83f6568\u003c/code\u003e\u003c/a\u003e Support subdirectories in .dist-info (fixes \u003ca href=\"https://redirect.github.com/pypa/distlib/issues/246\"\u003e#246\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/247\"\u003e#247\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pypa/distlib/commit/f918abd5d20879041704f9d719533b213a55ad48\"\u003e\u003ccode\u003ef918abd\u003c/code\u003e\u003c/a\u003e Update \u003ccode\u003etest_wheel.WheelTestCase.test_abi\u003c/code\u003e for freethreading (\u003ca href=\"https://redirect.github.com/pypa/distlib/issues/244\"\u003e#244\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pypa/distlib/compare/0.3.9...0.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `docstring-parser-fork` from 0.0.12 to 0.0.14\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/rr-/docstring_parser/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `exceptiongroup` from 1.2.2 to 1.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/exceptiongroup/releases\"\u003eexceptiongroup's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.3.1\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAttributeError: 'TracebackException' object has no attribute 'exceptions'\u003c/code\u003e when formatting unpickled TBEs from another Python process which did not apply the \u003ccode\u003eexceptiongroup\u003c/code\u003e patches (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/144\"\u003e#144\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e1.3.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e**kwargs\u003c/code\u003e to function and method signatures as appropriate to match the signatures in the standard library\u003c/li\u003e\n\u003cli\u003eIn line with the stdlib typings in typeshed, updated \u003ccode\u003e(Base)ExceptionGroup\u003c/code\u003e generic types to define defaults for their generic arguments (defaulting to \u003ccode\u003eBaseExceptionGroup[BaseException]\u003c/code\u003e and \u003ccode\u003eExceptionGroup[Exception]\u003c/code\u003e) (PR by \u003ca href=\"https://github.com/mikenerone\"\u003e\u003ccode\u003e@​mikenerone\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eBaseExceptionGroup.__init__()\u003c/code\u003e to directly call \u003ccode\u003eBaseException.__init__()\u003c/code\u003e instead of the superclass \u003ccode\u003e__init__()\u003c/code\u003e in order to emulate the CPython behavior (broken or not) (PR by \u003ca href=\"https://github.com/cfbolz\"\u003e\u003ccode\u003e@​cfbolz\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the \u003ccode\u003eexceptions\u003c/code\u003e attribute to always return the same tuple of exceptions, created from the original exceptions sequence passed to \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e to match CPython behavior (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/143\"\u003e#143\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/agronholm/exceptiongroup/blob/main/CHANGES.rst\"\u003eexceptiongroup's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.3.1\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eFixed \u003ccode\u003eAttributeError: 'TracebackException' object has no attribute 'exceptions'\u003c/code\u003e\nwhen formatting unpickled TBEs from another Python process which did not apply the\n\u003ccode\u003eexceptiongroup\u003c/code\u003e patches\n(\u003ccode\u003e[#144](https://github.com/agronholm/exceptiongroup/issues/144) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/144\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.3.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003e**kwargs\u003c/code\u003e to function and method signatures as appropriate to match the\nsignatures in the standard library\u003c/li\u003e\n\u003cli\u003eIn line with the stdlib typings in typeshed, updated \u003ccode\u003e(Base)ExceptionGroup\u003c/code\u003e generic\ntypes to define defaults for their generic arguments (defaulting to\n\u003ccode\u003eBaseExceptionGroup[BaseException]\u003c/code\u003e and \u003ccode\u003eExceptionGroup[Exception]\u003c/code\u003e)\n(PR by \u003ca href=\"https://github.com/mikenerone\"\u003e\u003ccode\u003e@​mikenerone\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged \u003ccode\u003eBaseExceptionGroup.__init__()\u003c/code\u003e to directly call\n\u003ccode\u003eBaseException.__init__()\u003c/code\u003e instead of the superclass \u003ccode\u003e__init__()\u003c/code\u003e in order to\nemulate the CPython behavior (broken or not) (PR by \u003ca href=\"https://github.com/cfbolz\"\u003e\u003ccode\u003e@​cfbolz\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the \u003ccode\u003eexceptions\u003c/code\u003e attribute to always return the same tuple of exceptions,\ncreated from the original exceptions sequence passed to \u003ccode\u003eBaseExceptionGroup\u003c/code\u003e to\nmatch CPython behavior\n(\u003ccode\u003e[#143](https://github.com/agronholm/exceptiongroup/issues/143) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/143\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.2\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eRemoved an \u003ccode\u003eassert\u003c/code\u003e in \u003ccode\u003eexceptiongroup._formatting\u003c/code\u003e that caused compatibility\nissues with Sentry (\u003ccode\u003e[#123](https://github.com/agronholm/exceptiongroup/issues/123) \u0026lt;https://github.com/agronholm/exceptiongroup/issues/123\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.1\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eUpdated the copying of \u003ccode\u003e__notes__\u003c/code\u003e to match CPython behavior (PR by CF Bolz-Tereick)\u003c/li\u003e\n\u003cli\u003eCorrected the type annotation of the exception handler callback to accept a\n\u003ccode\u003eBaseExceptionGroup\u003c/code\u003e instead of \u003ccode\u003eBaseException\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFixed type errors on Python \u0026lt; 3.10 and the type annotation of \u003ccode\u003esuppress()\u003c/code\u003e\n(PR by John Litborn)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003e1.2.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded special monkeypatching if \u003ccode\u003eApport \u0026lt;https://github.com/canonical/apport\u0026gt;\u003c/code\u003e_ has\noverridden \u003ccode\u003esys.excepthook\u003c/code\u003e so it will format exception groups correctly\n(PR by John Litborn)\u003c/li\u003e\n\u003cli\u003eAdded a backport of \u003ccode\u003econtextlib.suppress()\u003c/code\u003e from Python 3.12.1 which also handles\nsuppressing exceptions inside exception groups\u003c/li\u003e\n\u003cli\u003eFixed bare \u003ccode\u003eraise\u003c/code\u003e in a handler reraising the original naked exception rather than\nan exception group which is what is raised when you do a \u003ccode\u003eraise\u003c/code\u003e in an \u003ccode\u003eexcept*\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/agronholm/exceptiongroup/commit/ddddb6fdf8582c4ae5187dc1bd258115974229fe\"\u003e\u003ccode\u003eddddb6f\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/49c5e60d9efad1416f4f42455e119375904a1d6d\"\u003e\u003ccode\u003e49c5e60\u003c/code\u003e\u003c/a\u003e Fixed AttributeError when formatting unpickled TBEs from an unpatched process\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/1be517f553249822a8fa12a4d7520d4b3ef15acd\"\u003e\u003ccode\u003e1be517f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/152\"\u003e#152\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/af0ea2fdfe218a4c2a1cb31ebd1a61dba459af6f\"\u003e\u003ccode\u003eaf0ea2f\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/exceptiongroup/issues/149\"\u003e#149\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/7c980a88a06a72db3d796d98504b335d24274abb\"\u003e\u003ccode\u003e7c980a8\u003c/code\u003e\u003c/a\u003e Removed pin on pyright version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/ef853368c8b94479adbd33cc58f1cac05839e116\"\u003e\u003ccode\u003eef85336\u003c/code\u003e\u003c/a\u003e Fixed typing job not finding Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/080b3f4e925bbdb8cee70cc30c5ef2937eab2bde\"\u003e\u003ccode\u003e080b3f4\u003c/code\u003e\u003c/a\u003e Pinned pyright version to fix typeshed related failure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/ac660908a1987880eddbb249947c1eef6e08513b\"\u003e\u003ccode\u003eac66090\u003c/code\u003e\u003c/a\u003e Added Python 3.14 to the test matrix\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/a0da94dadfb39c0b52c0cd5c87ace166b00f74c1\"\u003e\u003ccode\u003ea0da94d\u003c/code\u003e\u003c/a\u003e Fixed test failures on Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/exceptiongroup/commit/77fba8a871408ff2c48f536e5e73b1918239ba5f\"\u003e\u003ccode\u003e77fba8a\u003c/code\u003e\u003c/a\u003e Added the release version\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/exceptiongroup/compare/1.2.2...1.3.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `executing` from 2.2.0 to 2.2.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bafb305d96572bc8fb668b6564787bbb4fff2809\"\u003e\u003ccode\u003ebafb305\u003c/code\u003e\u003c/a\u003e Add 3.14 to classifiers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/5ed2ba36c2df94c91fefabd919880ffe061dc0f2\"\u003e\u003ccode\u003e5ed2ba3\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/alexmojaki/executing/issues/97\"\u003e#97\u003c/a\u003e from alexmojaki/3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/28095d447af50c49e154de5a27b9423611462f3d\"\u003e\u003ccode\u003e28095d4\u003c/code\u003e\u003c/a\u003e refactor: review changes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bb09dc677da7988a2c9555878b3727afa995b2c0\"\u003e\u003ccode\u003ebb09dc6\u003c/code\u003e\u003c/a\u003e refactor: some cleanup\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/dabc70ef5cc9a45eb57432822cdcf674af2e1db8\"\u003e\u003ccode\u003edabc70e\u003c/code\u003e\u003c/a\u003e fix: inst.argval can be a tuple for sometimes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/0772f918c432d6451594bcb6ffccba62e32e794c\"\u003e\u003ccode\u003e0772f91\u003c/code\u003e\u003c/a\u003e fix: removed comments\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/bacc5b699405e6f27d882dd2a71bb0ec30167f37\"\u003e\u003ccode\u003ebacc5b6\u003c/code\u003e\u003c/a\u003e fix: moved verification for CALL_INTRINSIC_2 back to 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/ec090751a1645cd14bfcb20a79b02371ffd6172b\"\u003e\u003ccode\u003eec09075\u003c/code\u003e\u003c/a\u003e test: added sample_results for 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/9405fed0769af3ee22dd4f433249f6494688638e\"\u003e\u003ccode\u003e9405fed\u003c/code\u003e\u003c/a\u003e fix: handle synthetic code to store annotation\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexmojaki/executing/commit/f09e4cd194aa3480c12a9f5afab3524d2a7222f2\"\u003e\u003ccode\u003ef09e4cd\u003c/code\u003e\u003c/a\u003e fix: TypeVar defaults\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/alexmojaki/executing/compare/v2.2.0...v2.2.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `iniconfig` from 2.0.0 to 2.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/releases\"\u003einiconfig's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/26\"\u003e#26\u003c/a\u003e - list individuals in license file by \u003ca href=\"https://github.com/RonnyPfannschmidt\"\u003e\u003ccode\u003e@​RonnyPfannschmidt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/52\"\u003epytest-dev/iniconfig#52\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eRun tests in CI by \u003ca href=\"https://github.com/nicoddemus\"\u003e\u003ccode\u003e@​nicoddemus\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/53\"\u003epytest-dev/iniconfig#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse \u003ccode\u003epypa/gh-action-pypi-publish@release/v1\u003c/code\u003e @ GHA by \u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/54\"\u003epytest-dev/iniconfig#54\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for Python 3.12-3.13 and drop EOL 3.7 by \u003ca href=\"https://github.com/hugovk\"\u003e\u003ccode\u003e@​hugovk\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/56\"\u003epytest-dev/iniconfig#56\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/nicoddemus\"\u003e\u003ccode\u003e@​nicoddemus\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/53\"\u003epytest-dev/iniconfig#53\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/webknjaz\"\u003e\u003ccode\u003e@​webknjaz\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/pull/54\"\u003epytest-dev/iniconfig#54\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.1.0\"\u003ehttps://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.1.0\u003c/a\u003e\u003c/p\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pytest-dev/iniconfig/blob/main/CHANGELOG\"\u003einiconfig's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003e2.1.0\u003c/h1\u003e\n\u003cul\u003e\n\u003cli\u003efix artifact building - pin minimal version of hatch\u003c/li\u003e\n\u003cli\u003edrop eol python 3.8\u003c/li\u003e\n\u003cli\u003eadd python 3.12 and 3.13\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/34793a6417e35e511d0c17ffdd8a02ade0f9568e\"\u003e\u003ccode\u003e34793a6\u003c/code\u003e\u003c/a\u003e pre-commit\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/136435d0a4345bb048dca98e7c2f4e938d74521b\"\u003e\u003ccode\u003e136435d\u003c/code\u003e\u003c/a\u003e update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/0bb99ad0f7a6b21d5eb24214a260132317a11e43\"\u003e\u003ccode\u003e0bb99ad\u003c/code\u003e\u003c/a\u003e fix \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/62\"\u003e#62\u003c/a\u003e: require a minimal hatch version with correct metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/16793eaddac67de0b8d621ae4e42e05b927e8d67\"\u003e\u003ccode\u003e16793ea\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/56\"\u003e#56\u003c/a\u003e from hugovk/add-3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/3dc2b2d6bf03e4b7cc92949a8ef0983fdd7ee442\"\u003e\u003ccode\u003e3dc2b2d\u003c/code\u003e\u003c/a\u003e Add support for Python 3.13\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/2eb8abfd9d3843100d7f138efe5bcd989a885024\"\u003e\u003ccode\u003e2eb8abf\u003c/code\u003e\u003c/a\u003e Bump GitHub Actions\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/8c4bb5bf57dde613c8cdcf0e02a09b2fff630907\"\u003e\u003ccode\u003e8c4bb5b\u003c/code\u003e\u003c/a\u003e Set python-version for pre-commit to remove CI warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/58b22b2d672564ff1925df51f4a8e07486765ed2\"\u003e\u003ccode\u003e58b22b2\u003c/code\u003e\u003c/a\u003e Drop support for EOL Python 3.7\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/4a53042252a109bcdd64422058de91c5dffff763\"\u003e\u003ccode\u003e4a53042\u003c/code\u003e\u003c/a\u003e Add support for Python 3.12\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pytest-dev/iniconfig/commit/9cae43103df70bac6fde7b9f35ad11a9f1be0cb4\"\u003e\u003ccode\u003e9cae431\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/pytest-dev/iniconfig/issues/54\"\u003e#54\u003c/a\u003e from webknjaz/patch-1\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/pytest-dev/iniconfig/compare/v2.0.0...v2.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `jupyter-core` from 5.7.2 to 5.8.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jupyter/jupyter_core/releases\"\u003ejupyter-core's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev5.8.1\u003c/h2\u003e\n\u003ch2\u003e5.8.1\u003c/h2\u003e\n\u003cp\u003eFixes a regression in 5.8.0 for code which may assume SYSTEM_CONFIG_PATH is non-empty (Jupyter Server).\u003c/p\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyter/jupyter_core/compare/v5.8.0...de1fe1fdfb2aeba5a492d047c9e800ce79158d40\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eConvert license settings into PEP-639 format \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/431\"\u003e#431\u003c/a\u003e (\u003ca href=\"https://github.com/jbedorf\"\u003e\u003ccode\u003e@​jbedorf\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003euse env config path for system config path when no system config path \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/430\"\u003e#430\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eContributors to this release\u003c/h3\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyter/jupyter_core/graphs/contributors?from=2025-05-26\u0026amp;to=2025-05-27\u0026amp;type=c\"\u003eGitHub contributors page for this release\u003c/a\u003e)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"https://github.com/search?q=repo%3Ajupyter%2Fjupyter_core+involves%3Ajbedorf+updated%3A2025-05-26..2025-05-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​jbedorf\u003c/code\u003e\u003c/a\u003e | \u003ca href=\"https://github.com/search?q=repo%3Ajupyter%2Fjupyter_core+involves%3Aminrk+updated%3A2025-05-26..2025-05-27\u0026amp;type=Issues\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev5.8.0\u003c/h2\u003e\n\u003ch2\u003e5.8.0\u003c/h2\u003e\n\u003cp\u003e(\u003ca href=\"https://github.com/jupyter/jupyter_core/compare/v5.7.2...23150c018f00101d5459d3fa228498bea9be7279\"\u003eFull Changelog\u003c/a\u003e)\u003c/p\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eFixes CVE-2025-30167 / GHSA-33p9-3p43-82vq on Windows (advisory to be published 2025-06-02)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eBugs fixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix: handle RuntimeError correctly in run_sync \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/425\"\u003e#425\u003c/a\u003e (\u003ca href=\"https://github.com/hugokerstens\"\u003e\u003ccode\u003e@​hugokerstens\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMaintenance and upkeep improvements\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd security.md \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/422\"\u003e#422\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: update pre-commit hooks \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/421\"\u003e#421\u003c/a\u003e (\u003ca href=\"https://github.com/pre-commit-ci\"\u003e\u003ccode\u003e@​pre-commit-ci\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump actions/create-github-app-token from 1 to 2 in the actions group \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/420\"\u003e#420\u003c/a\u003e (\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003efix package_spec in downstream tests \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/419\"\u003e#419\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003echore: hatch run run docs:api \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/418\"\u003e#418\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003enarrow type of envset when it can't be None \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/417\"\u003e#417\u003c/a\u003e (\u003ca href=\"https://github.com/minrk\"\u003e\u003ccode\u003e@​minrk\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate pre-commit \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/416\"\u003e#416\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdate Pyproject metadata \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/414\"\u003e#414\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove donwstream check \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/413\"\u003e#413\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eA bunch of pre-commit and CI upgrade. \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/412\"\u003e#412\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAssertionErrors should not be manually raised. \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/411\"\u003e#411\u003c/a\u003e (\u003ca href=\"https://github.com/Carreau\"\u003e\u003ccode\u003e@​Carreau\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBuild docs on ubuntu \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/403\"\u003e#403\u003c/a\u003e (\u003ca href=\"https://github.com/blink1073\"\u003e\u003ccode\u003e@​blink1073\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBump the actions group with 1 update \u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/pull/395\"\u003e#395\u003c/a\u003e (\u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eDocumentation improvements\u003c/h3\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jupyter/jupyter_core/blob/main/CHANGELOG.md\"\u003ejupyter-core's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e5.8.1\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003ch2\u003e5.8.0\u003c/h2\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/ad6b4aea233a9634ffcd6ad553ecd63129ab5f6e\"\u003e\u003ccode\u003ead6b4ae\u003c/code\u003e\u003c/a\u003e Publish 5.8.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/de1fe1fdfb2aeba5a492d047c9e800ce79158d40\"\u003e\u003ccode\u003ede1fe1f\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;breaking: require Python 3.9 (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/428\"\u003e#428\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/432\"\u003e#432\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/0d225fda61f0edff01d1dfa826764482070dd8c3\"\u003e\u003ccode\u003e0d225fd\u003c/code\u003e\u003c/a\u003e use env config path for system config path when no system config path (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/430\"\u003e#430\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/2a2807b08381c6a1c84f1624889ccced03f8d93f\"\u003e\u003ccode\u003e2a2807b\u003c/code\u003e\u003c/a\u003e Convert license settings into PEP-639 format (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/431\"\u003e#431\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/a009e438e9ae0ed8d65fbade46c9b97b2321676c\"\u003e\u003ccode\u003ea009e43\u003c/code\u003e\u003c/a\u003e breaking: require Python 3.9 (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/428\"\u003e#428\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/ff5270b8a688af5494940b12dc347e9d563e8d91\"\u003e\u003ccode\u003eff5270b\u003c/code\u003e\u003c/a\u003e Publish 5.8.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/5e8965600adda6b416692ce7e85ecb2bd814bd52\"\u003e\u003ccode\u003e5e89656\u003c/code\u003e\u003c/a\u003e Merge commit from fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/23150c018f00101d5459d3fa228498bea9be7279\"\u003e\u003ccode\u003e23150c0\u003c/code\u003e\u003c/a\u003e chore: update pre-commit hooks (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/421\"\u003e#421\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/cb20468e7c634a54d5b36c30e0cc71ea411656c0\"\u003e\u003ccode\u003ecb20468\u003c/code\u003e\u003c/a\u003e Revert \u0026quot;breaking: require Python 3.9 (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/426\"\u003e#426\u003c/a\u003e)\u0026quot; (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/427\"\u003e#427\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jupyter/jupyter_core/commit/25dc203a9f46eb16b64b1e8257d570aa9534f5a9\"\u003e\u003ccode\u003e25dc203\u003c/code\u003e\u003c/a\u003e breaking: require Python 3.9 (\u003ca href=\"https://redirect.github.com/jupyter/jupyter_core/issues/426\"\u003e#426\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jupyter/jupyter_core/compare/v5.7.2...v5.8.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `mypy-extensions` from 1.0.0 to 1.1.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/70d9435779df27a522b146f2c5dee06ccacae373\"\u003e\u003ccode\u003e70d9435\u003c/code\u003e\u003c/a\u003e remove dev from version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/8d272bb1264a6114610a3df9b43f87247c856d92\"\u003e\u003ccode\u003e8d272bb\u003c/code\u003e\u003c/a\u003e Switch build-backend to flit_core + use License-Expression for project metada...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/1b461029c25d2e677792e1483734f352bd589aa8\"\u003e\u003ccode\u003e1b46102\u003c/code\u003e\u003c/a\u003e Bump dev version to 1.1.0-dev (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/400534fb50c683ff1c00051ca101741ced69330b\"\u003e\u003ccode\u003e400534f\u003c/code\u003e\u003c/a\u003e Deprecate mypy_extensions.NoReturn (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/56\"\u003e#56\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/23fbfa5674aca52517564628e12c228812ac2bf0\"\u003e\u003ccode\u003e23fbfa5\u003c/code\u003e\u003c/a\u003e Update flake8 to 7.1.1 (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/9ddbb08b20cfba7efe18f5fbf926131e583c0b22\"\u003e\u003ccode\u003e9ddbb08\u003c/code\u003e\u003c/a\u003e Cleanup tests (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/6d9c7b756486a654e795095d393bf8206cd11dea\"\u003e\u003ccode\u003e6d9c7b7\u003c/code\u003e\u003c/a\u003e Move metadata to pyproject + drop Python 3.7 (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/812066c7a88e78572332e6e0f428bf3e0c248193\"\u003e\u003ccode\u003e812066c\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/49\"\u003e#49\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/9dd6d98da338a3924b0ed7440b843988cd5805df\"\u003e\u003ccode\u003e9dd6d98\u003c/code\u003e\u003c/a\u003e Add support for Python 3.12 (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/48\"\u003e#48\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python/mypy_extensions/commit/e0c6670e05a87507d59b7d3a0aa2eec88e9813b0\"\u003e\u003ccode\u003ee0c6670\u003c/code\u003e\u003c/a\u003e Deprecate \u003ccode\u003emypy_extensions.TypedDict\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/python/mypy_extensions/issues/47\"\u003e#47\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python/mypy_extensions/compare/1.0.0...1.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `parso` from 0.8.4 to 0.8.5\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/davidhalter/parso/blob/master/CHANGELOG.rst\"\u003eparso's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e0.8.5 (2025-08-23)\n++++++++++++++++++\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a fallback grammar for Python 3.14+\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/be9f5a401feaa1a7eda935bc68b2d3baed9a30ab\"\u003e\u003ccode\u003ebe9f5a4\u003c/code\u003e\u003c/a\u003e Prepare release 0.8.5\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/7e4777b775206038a1aa87282c79ed04f5f1c3fd\"\u003e\u003ccode\u003e7e4777b\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/davidhalter/parso/issues/234\"\u003e#234\u003c/a\u003e from A5rocks/future-compatibility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/e99dbdd536da741d4935c427a6231f4d5eb6ea79\"\u003e\u003ccode\u003ee99dbdd\u003c/code\u003e\u003c/a\u003e Remove redundant warnings import\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/e22dc67aa10b53bbf069f825a0d40eefc727f0cb\"\u003e\u003ccode\u003ee22dc67\u003c/code\u003e\u003c/a\u003e Avoid warning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/baa3c90d85a10f6abb8307246a89fc683981cee7\"\u003e\u003ccode\u003ebaa3c90\u003c/code\u003e\u003c/a\u003e Load newest grammar in face of a future grammar\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/davidhalter/parso/commit/23b1cdf73d95ae20f23e2fd198cafcd8fef529ad\"\u003e\u003ccode\u003e23b1cdf...\n\n_Description has been truncated_","html_url":"https://github.com/hermetoproject/pybuild-deps/pull/343","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/hermetoproject%2Fpybuild-deps/issues/343","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/343/packages"}},{"old_version":"27.0.0","new_version":"27.1.0","update_type":"minor","path":null,"pr_created_at":"2025-11-17T13:28:41.000Z","version_change":"27.0.0 → 27.1.0","issue":{"uuid":"3633347426","node_id":"PR_kwDOMHVffc6z23Pp","number":72,"state":"closed","title":"Bump the python-packages group across 1 directory with 67 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-11-24T13:46:51.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-17T13:28:41.000Z","updated_at":"2025-11-24T13:46:53.000Z","time_to_close":605890,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"python-packages","update_count":67,"packages":[{"name":"anyio","old_version":"4.9.0","new_version":"4.11.0","repository_url":"https://github.com/agronholm/anyio"},{"name":"argon2-cffi-bindings","old_version":"21.2.0","new_version":"25.1.0","repository_url":"https://github.com/hynek/argon2-cffi-bindings"},{"name":"arrow","old_version":"1.3.0","new_version":"1.4.0","repository_url":"https://github.com/arrow-py/arrow"},{"name":"asttokens","old_version":"3.0.0","new_version":"3.0.1","repository_url":"https://github.com/gristlabs/asttokens"},{"name":"attrs","old_version":"25.3.0","new_version":"25.4.0","repository_url":"https://github.com/sponsors/hynek"},{"name":"beautifulsoup4","old_version":"4.13.4","new_version":"4.14.2"},{"name":"bleach","old_version":"6.2.0","new_version":"6.3.0","repository_url":"https://github.com/mozilla/bleach"},{"name":"certifi","old_version":"2025.6.15","new_version":"2025.11.12","repository_url":"https://github.com/certifi/python-certifi"},{"name":"cffi","old_version":"1.17.1","new_version":"2.0.0","repository_url":"https://github.com/python-cffi/cffi"},{"name":"charset-normalizer","old_version":"3.4.2","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.1","repository_url":"https://github.com/pallets/click"},{"name":"comm","old_version":"0.2.2","new_version":"0.2.3","repository_url":"https://github.com/ipython/comm"},{"name":"contourpy","old_version":"1.3.1","new_version":"1.3.3","repository_url":"https://github.com/contourpy/contourpy"},{"name":"debugpy","old_version":"1.8.14","new_version":"1.8.17","repository_url":"https://github.com/microsoft/debugpy"},{"name":"executing","old_version":"2.2.0","new_version":"2.2.1","repository_url":"https://github.com/alexmojaki/executing"},{"name":"fastjsonschema","old_version":"2.21.1","new_version":"2.21.2","repository_url":"https://github.com/horejsek/python-fastjsonschema"},{"name":"flask","old_version":"3.1.1","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"fonttools","old_version":"4.58.4","new_version":"4.60.1","repository_url":"https://github.com/fonttools/fonttools"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"imbalanced-learn","old_version":"0.13.0","new_version":"0.14.0","repository_url":"https://github.com/scikit-learn-contrib/imbalanced-learn"},{"name":"ipykernel","old_version":"6.29.5","new_version":"7.1.0","repository_url":"https://github.com/ipython/ipykernel"},{"name":"ipython","old_version":"9.0.2","new_version":"9.7.0","repository_url":"https://github.com/ipython/ipython"},{"name":"ipywidgets","old_version":"8.1.7","new_version":"8.1.8","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"joblib","old_version":"1.5.1","new_version":"1.5.2","repository_url":"https://github.com/joblib/joblib"},{"name":"json5","old_version":"0.12.0","new_version":"0.12.1","repository_url":"https://github.com/dpranke/pyjson5"},{"name":"jsonschema","old_version":"4.24.0","new_version":"4.25.1","repository_url":"https://github.com/python-jsonschema/jsonschema"},{"name":"jsonschema-specifications","old_version":"2025.4.1","new_version":"2025.9.1","repository_url":"https://github.com/python-jsonschema/jsonschema-specifications"},{"name":"jupyter-lsp","old_version":"2.2.5","new_version":"2.3.0","repository_url":"https://github.com/jupyter-lsp/jupyterlab-lsp"},{"name":"jupyter-core","old_version":"5.8.1","new_version":"5.9.1","repository_url":"https://github.com/jupyter/jupyter_core"},{"name":"jupyter-server","old_version":"2.16.0","new_version":"2.17.0","repository_url":"https://github.com/jupyter-server/jupyter_server"},{"name":"jupyterlab","old_version":"4.4.4","new_version":"4.4.10","repository_url":"https://github.com/jupyterlab/jupyterlab"},{"name":"jupyterlab-server","old_version":"2.27.3","new_version":"2.28.0","repository_url":"https://github.com/jupyterlab/jupyterlab_server"},{"name":"jupyterlab-widgets","old_version":"3.0.15","new_version":"3.0.16","repository_url":"https://github.com/jupyter-widgets/ipywidgets"},{"name":"kiwisolver","old_version":"1.4.8","new_version":"1.4.9","repository_url":"https://github.com/nucleic/kiwi"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"matplotlib","old_version":"3.10.1","new_version":"3.10.7","repository_url":"https://github.com/matplotlib/matplotlib"},{"name":"matplotlib-inline","old_version":"0.1.7","new_version":"0.2.1","repository_url":"https://github.com/ipython/matplotlib-inline"},{"name":"mistune","old_version":"3.1.3","new_version":"3.1.4","repository_url":"https://github.com/lepture/mistune"},{"name":"nltk","old_version":"3.9.1","new_version":"3.9.2","repository_url":"https://github.com/nltk/nltk"},{"name":"notebook","old_version":"7.4.4","new_version":"7.4.7","repository_url":"https://github.com/jupyter/notebook"},{"name":"numpy","old_version":"2.2.4","new_version":"2.3.5","repository_url":"https://github.com/numpy/numpy"},{"name":"pandas","old_version":"2.3.0","new_version":"2.3.3","repository_url":"https://github.com/pandas-dev/pandas"},{"name":"parso","old_version":"0.8.4","new_version":"0.8.5","repository_url":"https://github.com/davidhalter/parso"},{"name":"pillow","old_version":"11.2.1","new_version":"12.0.0","repository_url":"https://github.com/python-pillow/Pillow"},{"name":"platformdirs","old_version":"4.3.8","new_version":"4.5.0","repository_url":"https://github.com/tox-dev/platformdirs"},{"name":"prometheus-client","old_version":"0.22.1","new_version":"0.23.1","repository_url":"https://github.com/prometheus/client_python"},{"name":"prompt-toolkit","old_version":"3.0.51","new_version":"3.0.52","repository_url":"https://github.com/prompt-toolkit/python-prompt-toolkit"},{"name":"psutil","old_version":"7.0.0","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"pycparser","old_version":"2.22","new_version":"2.23","repository_url":"https://github.com/eliben/pycparser"},{"name":"pyparsing","old_version":"3.2.3","new_version":"3.2.5","repository_url":"https://github.com/pyparsing/pyparsing"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"pyyaml","old_version":"6.0.2","new_version":"6.0.3","repository_url":"https://github.com/yaml/pyyaml"},{"name":"pyzmq","old_version":"27.0.0","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"qtconsole","old_version":"5.6.1","new_version":"5.7.0","repository_url":"https://github.com/jupyter/qtconsole"},{"name":"referencing","old_version":"0.36.2","new_version":"0.37.0","repository_url":"https://github.com/python-jsonschema/referencing"},{"name":"regex","old_version":"2024.11.6","new_version":"2025.11.3","repository_url":"https://github.com/mrabarnett/mrab-regex"},{"name":"requests","old_version":"2.32.4","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"rpds-py","old_version":"0.25.1","new_version":"0.29.0","repository_url":"https://github.com/crate-py/rpds"},{"name":"scikit-learn","old_version":"1.6.1","new_version":"1.7.2","repository_url":"https://github.com/scikit-learn/scikit-learn"},{"name":"scipy","old_version":"1.15.2","new_version":"1.16.3","repository_url":"https://github.com/scipy/scipy"},{"name":"soupsieve","old_version":"2.7","new_version":"2.8","repository_url":"https://github.com/facelessuser/soupsieve"},{"name":"tornado","old_version":"6.5.1","new_version":"6.5.2","repository_url":"https://github.com/tornadoweb/tornado"},{"name":"types-python-dateutil","old_version":"2.9.0.20250516","new_version":"2.9.0.20251115","repository_url":"https://github.com/typeshed-internal/stub_uploader"},{"name":"wcwidth","old_version":"0.2.13","new_version":"0.2.14","repository_url":"https://github.com/jquast/wcwidth"},{"name":"webcolors","old_version":"24.11.1","new_version":"25.10.0","repository_url":"https://github.com/ubernostrum/webcolors"},{"name":"websocket-client","old_version":"1.8.0","new_version":"1.9.0","repository_url":"https://github.com/websocket-client/websocket-client"},{"name":"widgetsnbextension","old_version":"4.0.14","new_version":"4.0.15"}],"path":null,"ecosystem":"pip"},"body":"Bumps the python-packages group with 67 updates in the / directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [anyio](https://github.com/agronholm/anyio) | `4.9.0` | `4.11.0` |\n| [argon2-cffi-bindings](https://github.com/hynek/argon2-cffi-bindings) | `21.2.0` | `25.1.0` |\n| [arrow](https://github.com/arrow-py/arrow) | `1.3.0` | `1.4.0` |\n| [asttokens](https://github.com/gristlabs/asttokens) | `3.0.0` | `3.0.1` |\n| [attrs](https://github.com/sponsors/hynek) | `25.3.0` | `25.4.0` |\n| [beautifulsoup4](https://www.crummy.com/software/BeautifulSoup/bs4/) | `4.13.4` | `4.14.2` |\n| [bleach](https://github.com/mozilla/bleach) | `6.2.0` | `6.3.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.6.15` | `2025.11.12` |\n| [cffi](https://github.com/python-cffi/cffi) | `1.17.1` | `2.0.0` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.2` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.1` |\n| [comm](https://github.com/ipython/comm) | `0.2.2` | `0.2.3` |\n| [contourpy](https://github.com/contourpy/contourpy) | `1.3.1` | `1.3.3` |\n| [debugpy](https://github.com/microsoft/debugpy) | `1.8.14` | `1.8.17` |\n| [executing](https://github.com/alexmojaki/executing) | `2.2.0` | `2.2.1` |\n| [fastjsonschema](https://github.com/horejsek/python-fastjsonschema) | `2.21.1` | `2.21.2` |\n| [flask](https://github.com/pallets/flask) | `3.1.1` | `3.1.2` |\n| [fonttools](https://github.com/fonttools/fonttools) | `4.58.4` | `4.60.1` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [imbalanced-learn](https://github.com/scikit-learn-contrib/imbalanced-learn) | `0.13.0` | `0.14.0` |\n| [ipykernel](https://github.com/ipython/ipykernel) | `6.29.5` | `7.1.0` |\n| [ipython](https://github.com/ipython/ipython) | `9.0.2` | `9.7.0` |\n| [ipywidgets](https://github.com/jupyter-widgets/ipywidgets) | `8.1.7` | `8.1.8` |\n| [joblib](https://github.com/joblib/joblib) | `1.5.1` | `1.5.2` |\n| [json5](https://github.com/dpranke/pyjson5) | `0.12.0` | `0.12.1` |\n| [jsonschema](https://github.com/python-jsonschema/jsonschema) | `4.24.0` | `4.25.1` |\n| [jsonschema-specifications](https://github.com/python-jsonschema/jsonschema-specifications) | `2025.4.1` | `2025.9.1` |\n| [jupyter-lsp](https://github.com/jupyter-lsp/jupyterlab-lsp) | `2.2.5` | `2.3.0` |\n| [jupyter-core](https://github.com/jupyter/jupyter_core) | `5.8.1` | `5.9.1` |\n| [jupyter-server](https://github.com/jupyter-server/jupyter_server) | `2.16.0` | `2.17.0` |\n| [jupyterlab](https://github.com/jupyterlab/jupyterlab) | `4.4.4` | `4.4.10` |\n| [jupyterlab-server](https://github.com/jupyterlab/jupyterlab_server) | `2.27.3` | `2.28.0` |\n| [jupyterlab-widgets](https://github.com/jupyter-widgets/ipywidgets) | `3.0.15` | `3.0.16` |\n| [kiwisolver](https://github.com/nucleic/kiwi) | `1.4.8` | `1.4.9` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [matplotlib](https://github.com/matplotlib/matplotlib) | `3.10.1` | `3.10.7` |\n| [matplotlib-inline](https://github.com/ipython/matplotlib-inline) | `0.1.7` | `0.2.1` |\n| [mistune](https://github.com/lepture/mistune) | `3.1.3` | `3.1.4` |\n| [nltk](https://github.com/nltk/nltk) | `3.9.1` | `3.9.2` |\n| [notebook](https://github.com/jupyter/notebook) | `7.4.4` | `7.4.7` |\n| [numpy](https://github.com/numpy/numpy) | `2.2.4` | `2.3.5` |\n| [pandas](https://github.com/pandas-dev/pandas) | `2.3.0` | `2.3.3` |\n| [parso](https://github.com/davidhalter/parso) | `0.8.4` | `0.8.5` |\n| [pillow](https://github.com/python-pillow/Pillow) | `11.2.1` | `12.0.0` |\n| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.3.8` | `4.5.0` |\n| [prometheus-client](https://github.com/prometheus/client_python) | `0.22.1` | `0.23.1` |\n| [prompt-toolkit](https://github.com/prompt-toolkit/python-prompt-toolkit) | `3.0.51` | `3.0.52` |\n| [psutil](https://github.com/giampaolo/psutil) | `7.0.0` | `7.1.3` |\n| [pycparser](https://github.com/eliben/pycparser) | `2.22` | `2.23` |\n| [pyparsing](https://github.com/pyparsing/pyparsing) | `3.2.3` | `3.2.5` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [pyyaml](https://github.com/yaml/pyyaml) | `6.0.2` | `6.0.3` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `27.0.0` | `27.1.0` |\n| [qtconsole](https://github.com/jupyter/qtconsole) | `5.6.1` | `5.7.0` |\n| [referencing](https://github.com/python-jsonschema/referencing) | `0.36.2` | `0.37.0` |\n| [regex](https://github.com/mrabarnett/mrab-regex) | `2024.11.6` | `2025.11.3` |\n| [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` |\n| [rpds-py](https://github.com/crate-py/rpds) | `0.25.1` | `0.29.0` |\n| [scikit-learn](https://github.com/scikit-learn/scikit-learn) | `1.6.1` | `1.7.2` |\n| [scipy](https://github.com/scipy/scipy) | `1.15.2` | `1.16.3` |\n| [soupsieve](https://github.com/facelessuser/soupsieve) | `2.7` | `2.8` |\n| [tornado](https://github.com/tornadoweb/tornado) | `6.5.1` | `6.5.2` |\n| [types-python-dateutil](https://github.com/typeshed-internal/stub_uploader) | `2.9.0.20250516` | `2.9.0.20251115` |\n| [wcwidth](https://github.com/jquast/wcwidth) | `0.2.13` | `0.2.14` |\n| [webcolors](https://github.com/ubernostrum/webcolors) | `24.11.1` | `25.10.0` |\n| [websocket-client](https://github.com/websocket-client/websocket-client) | `1.8.0` | `1.9.0` |\n| [widgetsnbextension](http://jupyter.org) | `4.0.14` | `4.0.15` |\n\n\nUpdates `anyio` from 4.9.0 to 4.11.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/agronholm/anyio/releases\"\u003eanyio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e4.11.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to \u003ccode\u003eCancelScope.cancel()\u003c/code\u003e) (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/975\"\u003e#975\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by passing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to \u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e keyword argument (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/256\"\u003e#256\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically handle all async tests (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/971\"\u003e#971\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/974\"\u003e#974\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChanged the default type argument of \u003ccode\u003eanyio.abc.TaskStatus\u003c/code\u003e from \u003ccode\u003eAny\u003c/code\u003e to \u003ccode\u003eNone\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/964\"\u003e#964\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed TCP listener behavior to guarantee the same ephemeral port is used for all socket listeners when \u003ccode\u003elocal_port=0\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/857\"\u003e#857\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed inconsistency between Trio and asyncio where a TCP stream that previously raised a \u003ccode\u003eBrokenResourceError\u003c/code\u003e on \u003ccode\u003esend()\u003c/code\u003e would still raise \u003ccode\u003eBrokenResourceError\u003c/code\u003e after the stream was closed on asyncio, but \u003ccode\u003eClosedResourceError\u003c/code\u003e on Trio. They now both raise a \u003ccode\u003eClosedResourceError\u003c/code\u003e in this scenario. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/671\"\u003e#671\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e4.10.0\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded the \u003ccode\u003efeed_data()\u003c/code\u003e method to the \u003ccode\u003eBufferedByteReceiveStream\u003c/code\u003e class, allowing users to inject data directly into the buffer\u003c/li\u003e\n\u003cli\u003eAdded various class methods to wrap existing sockets as listeners or socket streams:\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eSocketListener.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXSocketStream.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUDPSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eConnectedUNIXDatagramSocket.from_socket()\u003c/code\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003eAdded a hierarchy of connectable stream classes for transparently connecting to various remote or local endpoints for exchanging bytes or objects\u003c/li\u003e\n\u003cli\u003eAdded context manager mix-in classes (\u003ccode\u003eanyio.ContextManagerMixin\u003c/code\u003e and \u003ccode\u003eanyio.AsyncContextManagerMixin\u003c/code\u003e) to help write classes that embed other context managers, particularly cancel scopes or task groups (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/905\"\u003e#905\u003c/a\u003e; PR by \u003ca href=\"https://github.com/agronholm\"\u003e\u003ccode\u003e@​agronholm\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/tapetersen\"\u003e\u003ccode\u003e@​tapetersen\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded the ability to specify the thread name in \u003ccode\u003estart_blocking_portal()\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/818\"\u003e#818\u003c/a\u003e; PR by \u003ca href=\"https://github.com/davidbrochart\"\u003e\u003ccode\u003e@​davidbrochart\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eanyio.notify_closing\u003c/code\u003e to allow waking \u003ccode\u003eanyio.wait_readable\u003c/code\u003e and \u003ccode\u003eanyio.wait_writable\u003c/code\u003e before closing a socket. Among other things, this prevents an OSError on the \u003ccode\u003eProactorEventLoop\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/896\"\u003e#896\u003c/a\u003e; PR by \u003ca href=\"https://github.com/graingert\"\u003e\u003ccode\u003e@​graingert\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIncorporated several documentation improvements from the EuroPython 2025 sprint (special thanks to the sprinters: Emmanuel Okedele, Jan Murre, Euxenia Miruna Goia and Christoffer Fjord)\u003c/li\u003e\n\u003cli\u003eAdded a documentation page explaining why one might want to use AnyIO's APIs instead of asyncio's\u003c/li\u003e\n\u003cli\u003eUpdated the \u003ccode\u003eto_interpreters\u003c/code\u003e module to use the public \u003ccode\u003econcurrent.interpreters\u003c/code\u003e API on Python 3.14 or later\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eanyio.Path.copy()\u003c/code\u003e and \u003ccode\u003eanyio.Path.copy_into()\u003c/code\u003e failing on Python 3.14.0a7\u003c/li\u003e\n\u003cli\u003eFixed return annotation of \u003ccode\u003e__aexit__\u003c/code\u003e on async context managers. CMs which can suppress exceptions should return \u003ccode\u003ebool\u003c/code\u003e, or \u003ccode\u003eNone\u003c/code\u003e otherwise. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/913\"\u003e#913\u003c/a\u003e; PR by \u003ca href=\"https://github.com/Enegg\"\u003e\u003ccode\u003e@​Enegg\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed rollover boundary check in \u003ccode\u003eSpooledTemporaryFile\u003c/code\u003e so that rollover only occurs when the buffer size exceeds \u003ccode\u003emax_size\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/915\"\u003e#915\u003c/a\u003e; PR by \u003ca href=\"https://github.com/11kkw\"\u003e\u003ccode\u003e@​11kkw\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMigrated testing and documentation dependencies from extras to dependency groups\u003c/li\u003e\n\u003cli\u003eFixed compatibility of \u003ccode\u003eanyio.to_interpreter\u003c/code\u003e with Python 3.14.0b2 (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/926\"\u003e#926\u003c/a\u003e; PR by \u003ca href=\"https://github.com/hroncok\"\u003e\u003ccode\u003e@​hroncok\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eSyntaxWarning\u003c/code\u003e on Python 3.14 about \u003ccode\u003ereturn\u003c/code\u003e in \u003ccode\u003efinally\u003c/code\u003e (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/816\"\u003e#816\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed RunVar name conflicts. RunVar instances with the same name should not share storage (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/880\"\u003e#880\u003c/a\u003e; PR by \u003ca href=\"https://github.com/vimfu\"\u003e\u003ccode\u003e@​vimfu\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eRenamed the \u003ccode\u003eBrokenWorkerIntepreter\u003c/code\u003e exception to \u003ccode\u003eBrokenWorkerInterpreter\u003c/code\u003e. The old name is available as a deprecated alias. (\u003ca href=\"https://redirect.github.com/agronholm/anyio/pull/938\"\u003e#938\u003c/a\u003e; PR by \u003ca href=\"https://github.com/ayussh-verma\"\u003e\u003ccode\u003e@​ayussh-verma\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed an edge case in \u003ccode\u003eCapacityLimiter\u003c/code\u003e on asyncio where a task, waiting to acquire a limiter gets cancelled and is subsequently granted a token from the limiter, but before the cancellation is delivered, and then fails to notify the next waiting task (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/947\"\u003e#947\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/agronholm/anyio/blob/master/docs/versionhistory.rst\"\u003eanyio's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch1\u003eVersion history\u003c/h1\u003e\n\u003cp\u003eThis library adheres to \u003ccode\u003eSemantic Versioning 2.0 \u0026lt;http://semver.org/\u0026gt;\u003c/code\u003e_.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eUNRELEASED\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for asyncio's \u003ccode\u003etask call graphs\u003c/code\u003e_ on Python 3.14 and later when using\nAnyIO's task groups\n(\u003ccode\u003e[#1025](https://github.com/agronholm/anyio/issues/1025) \u0026lt;https://github.com/agronholm/anyio/pull/1025\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded an asynchronous implementation of the \u003ccode\u003efunctools\u003c/code\u003e module\n(\u003ccode\u003e[#1001](https://github.com/agronholm/anyio/issues/1001) \u0026lt;https://github.com/agronholm/anyio/pull/1001\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded support for \u003ccode\u003euvloop=True\u003c/code\u003e on Windows via the winloop_ implementation\n(\u003ccode\u003e[#960](https://github.com/agronholm/anyio/issues/960) \u0026lt;https://github.com/agronholm/anyio/pull/960\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/Vizonex\"\u003e\u003ccode\u003e@​Vizonex\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded support for use as a context manager to \u003ccode\u003eanyio.lowlevel.RunVar\u003c/code\u003e\n(\u003ccode\u003e[#1003](https://github.com/agronholm/anyio/issues/1003) \u0026lt;https://github.com/agronholm/anyio/pull/1003\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003e__all__\u003c/code\u003e declarations to public submodules (\u003ccode\u003eanyio.lowlevel\u003c/code\u003e etc.)\n(\u003ccode\u003e[#1009](https://github.com/agronholm/anyio/issues/1009) \u0026lt;https://github.com/agronholm/anyio/pull/1009\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the ability to set the token count of a \u003ccode\u003eCapacityLimiter\u003c/code\u003e to zero\n(\u003ccode\u003e[#1019](https://github.com/agronholm/anyio/issues/1019) \u0026lt;https://github.com/agronholm/anyio/pull/1019\u0026gt;\u003c/code\u003e_; requires Python 3.10 or\nlater when using Trio)\u003c/li\u003e\n\u003cli\u003eDropped \u003ccode\u003esniffio\u003c/code\u003e as a direct dependency and added the \u003ccode\u003eget_available_backends()\u003c/code\u003e\nfunction (\u003ccode\u003e[#1021](https://github.com/agronholm/anyio/issues/1021) \u0026lt;https://github.com/agronholm/anyio/pull/1021\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not raising \u003ccode\u003eClosedResourceError\u003c/code\u003e and\n\u003ccode\u003eBrokenResourceError\u003c/code\u003e on asyncio. Previously, a non-AnyIO exception was raised in\nsuch cases (\u003ccode\u003e[#671](https://github.com/agronholm/anyio/issues/671) \u0026lt;https://github.com/agronholm/anyio/issues/671\u0026gt;\u003c/code\u003e_; PR by\n\u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed \u003ccode\u003eProcess.stdin.send()\u003c/code\u003e not checkpointing before writing data on asyncio\n(\u003ccode\u003e[#1002](https://github.com/agronholm/anyio/issues/1002) \u0026lt;https://github.com/agronholm/anyio/issues/1002\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed a race condition where cancelling a \u003ccode\u003eFuture\u003c/code\u003e from\n\u003ccode\u003eBlockingPortal.start_task_soon()\u003c/code\u003e would sometimes not cancel the async function\n(\u003ccode\u003e[#1011](https://github.com/agronholm/anyio/issues/1011) \u0026lt;https://github.com/agronholm/anyio/issues/1011\u0026gt;\u003c/code\u003e_; PR by \u003ca href=\"https://github.com/gschaffner\"\u003e\u003ccode\u003e@​gschaffner\u003c/code\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e.. _task call graphs: \u003ca href=\"https://docs.python.org/3/library/asyncio-graph.html\"\u003ehttps://docs.python.org/3/library/asyncio-graph.html\u003c/a\u003e\n.. _winloop: \u003ca href=\"https://github.com/Vizonex/Winloop\"\u003ehttps://github.com/Vizonex/Winloop\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e4.11.0\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdded support for cancellation reasons (the \u003ccode\u003ereason\u003c/code\u003e parameter to\n\u003ccode\u003eCancelScope.cancel()\u003c/code\u003e)\n(\u003ccode\u003e[#975](https://github.com/agronholm/anyio/issues/975) \u0026lt;https://github.com/agronholm/anyio/pull/975\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eBumped the minimum version of Trio to v0.31.0\u003c/li\u003e\n\u003cli\u003eAdded the ability to enter the event loop from foreign (non-worker) threads by\npassing the return value of \u003ccode\u003eanyio.lowlevel.current_token()\u003c/code\u003e to\n\u003ccode\u003eanyio.from_thread.run()\u003c/code\u003e and \u003ccode\u003eanyio.from_thread.run_sync()\u003c/code\u003e as the \u003ccode\u003etoken\u003c/code\u003e\nkeyword argument (\u003ccode\u003e[#256](https://github.com/agronholm/anyio/issues/256) \u0026lt;https://github.com/agronholm/anyio/issues/256\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded pytest option (\u003ccode\u003eanyio_mode = \u0026quot;auto\u0026quot;\u003c/code\u003e) to make the pytest plugin automatically\nhandle all async tests\n(\u003ccode\u003e[#971](https://github.com/agronholm/anyio/issues/971) \u0026lt;https://github.com/agronholm/anyio/pull/971\u0026gt;\u003c/code\u003e_)\u003c/li\u003e\n\u003cli\u003eAdded the \u003ccode\u003eanyio.Condition.wait_for()\u003c/code\u003e method for feature parity with asyncio\u003c/li\u003e\n\u003c/ul\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/08737af202f6610cdb8ba53fecaefd9c03269637\"\u003e\u003ccode\u003e08737af\u003c/code\u003e\u003c/a\u003e Bumped up the version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/8bb9fe04a1c0a4b6615c843d4a88bba38a386059\"\u003e\u003ccode\u003e8bb9fe0\u003c/code\u003e\u003c/a\u003e Fixed the inconsistent exception on sending to a closed TCP stream (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/980\"\u003e#980\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/963709358a05ced66986e928b593b4bd82422981\"\u003e\u003ccode\u003e9637093\u003c/code\u003e\u003c/a\u003e [pre-commit.ci] pre-commit autoupdate (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/981\"\u003e#981\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/f1bc6ee95a75007681ef9cb4eec0369838b390e9\"\u003e\u003ccode\u003ef1bc6ee\u003c/code\u003e\u003c/a\u003e Fixed changelog entry formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/0b58964a26c68ca427b711bbe8536f61ed900133\"\u003e\u003ccode\u003e0b58964\u003c/code\u003e\u003c/a\u003e Mentioned the sub-interpreter support in the README\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/1ed112c65628d3cce312e7b6875b9f914d174a71\"\u003e\u003ccode\u003e1ed112c\u003c/code\u003e\u003c/a\u003e Ensure same port is used for IPv4/IPv6 when creating TCP listener with local_...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/aceeee09868642311a96626924f2f09c088a26c0\"\u003e\u003ccode\u003eaceeee0\u003c/code\u003e\u003c/a\u003e Re-enabled coverage reporting on macOS\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/6b890dc869f54b6237caff52a74e86382c076ad2\"\u003e\u003ccode\u003e6b890dc\u003c/code\u003e\u003c/a\u003e Reworded a changelog entry and added PR links to others\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/944257d2d59e8057dd00cd5cc96d8f73028031dd\"\u003e\u003ccode\u003e944257d\u003c/code\u003e\u003c/a\u003e Updated pre-commit modules\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agronholm/anyio/commit/087975f44599471a84bea2077731143a346c276a\"\u003e\u003ccode\u003e087975f\u003c/code\u003e\u003c/a\u003e Fixed a documentation style (\u003ca href=\"https://redirect.github.com/agronholm/anyio/issues/976\"\u003e#976\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/agronholm/anyio/compare/4.9.0...4.11.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `argon2-cffi-bindings` from 21.2.0 to 25.1.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/releases\"\u003eargon2-cffi-bindings's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e25.1.0\u003c/h2\u003e\n\u003ch2\u003eHighlights\u003c/h2\u003e\n\u003cp\u003eFree-threading for Python 3.14!\u003c/p\u003e\n\u003cp\u003eCurrently, it's a bit complicated, because it requires CFFI 2.0 which is only available as a pre-release.\u003c/p\u003e\n\u003cp\u003eTherefore, when installing with \u003cem\u003euv\u003c/em\u003e, it's necessary to pass like this:\u003c/p\u003e\n\u003cpre lang=\"console\"\u003e\u003ccode\u003e$ uv pip install --prerelease=allow argon2-cffi\n\u003c/code\u003e\u003c/pre\u003e\n\u003cp\u003e\u003cem\u003eFull changelog below!\u003c/em\u003e\u003c/p\u003e\n\u003ch2\u003eSpecial Thanks\u003c/h2\u003e\n\u003cp\u003eThis release would not be possible without my generous sponsors! Thank you to all of you making sustainable maintenance possible! If \u003cem\u003eyou\u003c/em\u003e would like to join them, go to \u003ca href=\"https://github.com/sponsors/hynek\"\u003ehttps://github.com/sponsors/hynek\u003c/a\u003e and check out the sweet perks!\u003c/p\u003e\n\u003ch3\u003eAbove and Beyond\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://www.variomedia.de/\"\u003eVariomedia AG\u003c/a\u003e (@\u003ca href=\"https://github.com/variomedia\"\u003evariomedia\u003c/a\u003e), \u003ca href=\"https://www.tidelift.com/\"\u003eTidelift\u003c/a\u003e (@\u003ca href=\"https://github.com/tidelift\"\u003etidelift\u003c/a\u003e), \u003ca href=\"https://www.klaviyo.com\"\u003eKlaviyo\u003c/a\u003e (@\u003ca href=\"https://github.com/klaviyo\"\u003eklaviyo\u003c/a\u003e), \u003ca href=\"https://privacy-solutions.org\"\u003ePrivacy Solutions GmbH\u003c/a\u003e (@\u003ca href=\"https://github.com/privacy-solutions\"\u003eprivacy-solutions\u003c/a\u003e), \u003ca href=\"http://filepreviews.io/\"\u003eFilePreviews\u003c/a\u003e (@\u003ca href=\"https://github.com/filepreviews\"\u003efilepreviews\u003c/a\u003e), \u003ca href=\"https://doist.com/\"\u003eDoist\u003c/a\u003e (@\u003ca href=\"https://github.com/Doist\"\u003eDoist\u003c/a\u003e), Daniel Fortunov (@\u003ca href=\"https://github.com/asqui\"\u003easqui\u003c/a\u003e), and Kevin P. Fleming (@\u003ca href=\"https://github.com/kpfleming\"\u003ekpfleming\u003c/a\u003e).\u003c/p\u003e\n\u003ch3\u003eMaintenance Sustainers\u003c/h3\u003e\n\u003cp\u003e\u003ca href=\"https://buttondown.com\"\u003eButtondown\u003c/a\u003e (@\u003ca href=\"https://github.com/buttondown\"\u003ebuttondown\u003c/a\u003e), \u003ca href=\"https://christopher.xyz\"\u003eChristopher Dignam\u003c/a\u003e (@\u003ca href=\"https://github.com/chdsbd\"\u003echdsbd\u003c/a\u003e), Magnus Watn (@\u003ca href=\"https://github.com/magnuswatn\"\u003emagnuswatn\u003c/a\u003e), \u003ca href=\"https://cra.mr\"\u003eDavid Cramer\u003c/a\u003e (@\u003ca href=\"https://github.com/dcramer\"\u003edcramer\u003c/a\u003e), Jesse Snyder (@\u003ca href=\"https://github.com/jessesnyder\"\u003ejessesnyder\u003c/a\u003e), \u003ca href=\"https://rivolaks.com\"\u003eRivo Laks\u003c/a\u003e (@\u003ca href=\"https://github.com/rivol\"\u003erivol\u003c/a\u003e), \u003ca href=\"https://polar.sh\"\u003ePolar\u003c/a\u003e (@\u003ca href=\"https://github.com/polarsource\"\u003epolarsource\u003c/a\u003e), \u003ca href=\"https://www.miketheman.net\"\u003eMike Fiedler\u003c/a\u003e (@\u003ca href=\"https://github.com/miketheman\"\u003emiketheman\u003c/a\u003e), Duncan Hill (@\u003ca href=\"https://github.com/cricalix\"\u003ecricalix\u003c/a\u003e), Colin Marquardt (@\u003ca href=\"https://github.com/cmarqu\"\u003ecmarqu\u003c/a\u003e), \u003ca href=\"https://blog.journeythatcounts.nl\"\u003ePieter Swinkels\u003c/a\u003e (@\u003ca href=\"https://github.com/swinkels\"\u003eswinkels\u003c/a\u003e), Nick Libertini (@\u003ca href=\"https://github.com/libertininick\"\u003elibertininick\u003c/a\u003e), \u003ca href=\"https://mpr.crossjam.net/\"\u003eBrian M. Dennis\u003c/a\u003e (@\u003ca href=\"https://github.com/crossjam\"\u003ecrossjam\u003c/a\u003e), Ordinary Hobbit (@\u003ca href=\"https://github.com/grillazz\"\u003egrillazz\u003c/a\u003e), Moving Content AG (@\u003ca href=\"https://github.com/moving-content\"\u003emoving-content\u003c/a\u003e), \u003ca href=\"https://westervelt.com\"\u003eThe Westervelt Company\u003c/a\u003e (@\u003ca href=\"https://github.com/westerveltco\"\u003ewesterveltco\u003c/a\u003e), \u003ca href=\"https://slafs.net\"\u003eSławomir Ehlert\u003c/a\u003e (@\u003ca href=\"https://github.com/slafs\"\u003eslafs\u003c/a\u003e), Mostafa Khalil (@\u003ca href=\"https://github.com/khadrawy\"\u003ekhadrawy\u003c/a\u003e), \u003ca href=\"https://fmularczyk.pl\"\u003eFilip Mularczyk\u003c/a\u003e (@\u003ca href=\"https://github.com/mukiblejlok\"\u003emukiblejlok\u003c/a\u003e), Thomas Klinger (@\u003ca href=\"https://github.com/thmsklngr\"\u003ethmsklngr\u003c/a\u003e), \u003ca href=\"https://poehlmann.io\"\u003eAndreas Poehlmann\u003c/a\u003e (@\u003ca href=\"https://github.com/ap--\"\u003eap--\u003c/a\u003e), \u003ca href=\"https://atbigelow.com\"\u003eAugust Trapper Bigelow\u003c/a\u003e (@\u003ca href=\"https://github.com/atbigelow\"\u003eatbigelow\u003c/a\u003e), \u003ca href=\"https://noumenal.es/\"\u003eCarlton Gibson\u003c/a\u003e (@\u003ca href=\"https://github.com/carltongibson\"\u003ecarltongibson\u003c/a\u003e), and \u003ca href=\"https://roboflow.com\"\u003eRoboflow\u003c/a\u003e (@\u003ca href=\"https://github.com/roboflow\"\u003eroboflow\u003c/a\u003e).\u003c/p\u003e\n\u003ch2\u003eFull Changelog\u003c/h2\u003e\n\u003cp\u003eVendoring Argon2 @ \u003ca href=\"https://github.com/P-H-C/phc-winner-argon2/commit/f57e61e19229e23c4445b85494dbf7c07de721cb\"\u003e\u003cstrong\u003e\u003ccode\u003ef57e61e\u003c/code\u003e\u003c/strong\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOfficial Python 3.12, 3.13, and 3.14 support. No code or packaging changes were necessary.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport for free-threading (aka nogil) on Python 3.14. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/93\"\u003e#93\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels for Windows on ARM64. \u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/83\"\u003e#83\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.6, 3.7, and 3.8 support. There is very little activity on the bindings repo, so it doesn't make sense to carry around the build complexity of those ancient Python versions. The \u003ca href=\"https://pypi.org/project/argon2-cffi-bindings/21.2.0/\"\u003e21.2.0 wheels on PyPI\u003c/a\u003e include support for Python 3.6 and are based on the same Argon2 version.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr /\u003e\n\u003c!-- raw HTML omitted --\u003e\n\u003c/blockquote\u003e\n\u003cp\u003e... (truncated)\u003c/p\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/blob/main/CHANGELOG.md\"\u003eargon2-cffi-bindings's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/compare/21.2.0...25.1.0\"\u003e25.1.0\u003c/a\u003e - 2025-07-30\u003c/h2\u003e\n\u003cp\u003eVendoring Argon2 @ \u003ca href=\"https://github.com/P-H-C/phc-winner-argon2/commit/f57e61e19229e23c4445b85494dbf7c07de721cb\"\u003e\u003cstrong\u003e\u003ccode\u003ef57e61e\u003c/code\u003e\u003c/strong\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eOfficial Python 3.12, 3.13, and 3.14 support.\nNo code or packaging changes were necessary.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eSupport for free-threading (aka nogil) on Python 3.14.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/70\"\u003e#70\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/93\"\u003e#93\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eWheels for Windows on ARM64.\n\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/pull/83\"\u003e#83\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003ePython 3.6, 3.7, and 3.8 support.\nThere is very little activity on the bindings repo, so it doesn't make sense to carry around the build complexity of those ancient Python versions.\nThe \u003ca href=\"https://pypi.org/project/argon2-cffi-bindings/21.2.0/\"\u003e21.2.0 wheels on PyPI\u003c/a\u003e include support for Python 3.6 and are based on the same Argon2 version.\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/hynek/argon2-cffi-bindings/commit/66f5b2340ef25699504bcc0f08eadcbefaf219aa\"\u003e\u003ccode\u003e66f5b23\u003c/code\u003e\u003c/a\u003e Prepare 25.1.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/d2c80c05dc12079b7bce081df13a12251281a136\"\u003e\u003ccode\u003ed2c80c0\u003c/code\u003e\u003c/a\u003e Consistency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/cc7181e7de500e5acf8277c6b7abcf1946bbb6bb\"\u003e\u003ccode\u003ecc7181e\u003c/code\u003e\u003c/a\u003e Use dependency groups (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/94\"\u003e#94\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/41aecc197493d627e43ab36e8d30c52811c834d7\"\u003e\u003ccode\u003e41aecc1\u003c/code\u003e\u003c/a\u003e Update metadata\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/1276da7784ff9375842d22c66a8812e3ac51c5e2\"\u003e\u003ccode\u003e1276da7\u003c/code\u003e\u003c/a\u003e Mention new wheels\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/1aad4747f9b73b549f39894a27118037ba484c20\"\u003e\u003ccode\u003e1aad474\u003c/code\u003e\u003c/a\u003e Add support for free-threaded builds (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/70\"\u003e#70\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/3ed973484763dd8084d54cff47d5121653d9ff9b\"\u003e\u003ccode\u003e3ed9734\u003c/code\u003e\u003c/a\u003e Bump pypa/cibuildwheel from 2.23 to 3.0 (\u003ca href=\"https://redirect.github.com/hynek/argon2-cffi-bindings/issues/91\"\u003e#91\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/c2bc26268c939436d8b1584a51dfdeacefb5b6c8\"\u003e\u003ccode\u003ec2bc262\u003c/code\u003e\u003c/a\u003e update Ruff\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/e5d69b7ef5690819ae21ab6deb24a49dcf9c1aec\"\u003e\u003ccode\u003ee5d69b7\u003c/code\u003e\u003c/a\u003e Zizmor: clarify trust\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/commit/4bb1e3bad074c923a14892c754a5fa5e41d3d398\"\u003e\u003ccode\u003e4bb1e3b\u003c/code\u003e\u003c/a\u003e Update + rename Ruff\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/hynek/argon2-cffi-bindings/compare/21.2.0...25.1.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `arrow` from 1.3.0 to 1.4.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/arrow-py/arrow/releases\"\u003earrow's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.4.0\u003c/h2\u003e\n\u003ch2\u003eADDED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1222\"\u003earrow-py/arrow#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1201\"\u003e#1201\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1201\"\u003earrow-py/arrow#1201\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Macedonian in Latin locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1200\"\u003e#1200\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1200\"\u003earrow-py/arrow#1200\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian/Farsi locale support. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1190\"\u003e#1190\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1190\"\u003earrow-py/arrow#1190\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded week and weeks to Thai locale timeframes. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1218\"\u003e#1218\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1218\"\u003earrow-py/arrow#1218\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded weeks to Catalan locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1189\"\u003e#1189\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1189\"\u003earrow-py/arrow#1189\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1172\"\u003e#1172\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1172\"\u003earrow-py/arrow#1172\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eCHANGED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eMigrated Arrow to use ZoneInfo for timezones instead of pytz. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1217\"\u003e#1217\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1217\"\u003earrow-py/arrow#1217\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eFIXED\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eFixed humanize month limits. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1224\"\u003earrow-py/arrow#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1171\"\u003e#1171\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1171\"\u003earrow-py/arrow#1171\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFixed spelling and removed poorly used expressions in Korean locale. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1181\"\u003e#1181\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1181\"\u003earrow-py/arrow#1181\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1194\"\u003e#1194\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1194\"\u003earrow-py/arrow#1194\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eImproved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1184\"\u003e#1184\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1184\"\u003earrow-py/arrow#1184\u003c/a\u003e), [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1186\"\u003e#1186\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1186\"\u003earrow-py/arrow#1186\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAddressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1182\"\u003e#1182\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1182\"\u003earrow-py/arrow#1182\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eINTERNAL\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdded codecov test results. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1223\"\u003earrow-py/arrow#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003eAdded docstrings to parser.py. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1010\"\u003e#1010\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1010\"\u003earrow-py/arrow#1010\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eUpdated Python versions support and bumped CI dependencies. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1177\"\u003e#1177\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1177\"\u003earrow-py/arrow#1177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded dependabot for GitHub actions. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1193\"\u003e#1193\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1193\"\u003earrow-py/arrow#1193\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMoved dateutil types to test requirements. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1183\"\u003e#1183\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1183\"\u003earrow-py/arrow#1183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdded documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. [PR \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1180\"\u003e#1180\u003c/a\u003e](\u003ca href=\"https://redirect.github.com/arrow-py/arrow/pull/1180\"\u003earrow-py/arrow#1180\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/arrow-py/arrow/blob/master/CHANGELOG.rst\"\u003earrow's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e1.4.0 (2025-10-18)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eweek_start\u003c/code\u003e parameter to \u003ccode\u003efloor()\u003c/code\u003e and \u003ccode\u003eceil()\u003c/code\u003e methods. \u003ccode\u003ePR [#1222](https://github.com/arrow-py/arrow/issues/1222) \u0026lt;https://github.com/arrow-py/arrow/pull/1222\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added \u003ccode\u003eFORMAT_RFC3339_STRICT\u003c/code\u003e with a T separator. \u003ccode\u003ePR [#1201](https://github.com/arrow-py/arrow/issues/1201) \u0026lt;https://github.com/arrow-py/arrow/pull/1201\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Macedonian in Latin locale support. \u003ccode\u003ePR [#1200](https://github.com/arrow-py/arrow/issues/1200) \u0026lt;https://github.com/arrow-py/arrow/pull/1200\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian/Farsi locale support. \u003ccode\u003ePR [#1190](https://github.com/arrow-py/arrow/issues/1190) \u0026lt;https://github.com/arrow-py/arrow/pull/1190\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added week and weeks to Thai locale timeframes. \u003ccode\u003ePR [#1218](https://github.com/arrow-py/arrow/issues/1218) \u0026lt;https://github.com/arrow-py/arrow/pull/1218\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added weeks to Catalan locale. \u003ccode\u003ePR [#1189](https://github.com/arrow-py/arrow/issues/1189) \u0026lt;https://github.com/arrow-py/arrow/pull/1189\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[ADDED] Added Persian names of months, month-abbreviations and day-abbreviations in Gregorian calendar. \u003ccode\u003ePR [#1172](https://github.com/arrow-py/arrow/issues/1172) \u0026lt;https://github.com/arrow-py/arrow/pull/1172\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[CHANGED] Migrated Arrow to use ZoneInfo for timezones instead of pytz. \u003ccode\u003ePR [#1217](https://github.com/arrow-py/arrow/issues/1217) \u0026lt;https://github.com/arrow-py/arrow/pull/1217\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed humanize month limits. \u003ccode\u003ePR [#1224](https://github.com/arrow-py/arrow/issues/1224) \u0026lt;https://github.com/arrow-py/arrow/pull/1224\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed type hint of \u003ccode\u003eArrow.__getattr__\u003c/code\u003e. \u003ccode\u003ePR [#1171](https://github.com/arrow-py/arrow/issues/1171) \u0026lt;https://github.com/arrow-py/arrow/pull/1171\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Fixed spelling and removed poorly used expressions in Korean locale. \u003ccode\u003ePR [#1181](https://github.com/arrow-py/arrow/issues/1181) \u0026lt;https://github.com/arrow-py/arrow/pull/1181\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Updated \u003ccode\u003eshift()\u003c/code\u003e method for issue \u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1145\"\u003e#1145\u003c/a\u003e. \u003ccode\u003ePR [#1194](https://github.com/arrow-py/arrow/issues/1194) \u0026lt;https://github.com/arrow-py/arrow/pull/1194\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[FIXED] Improved Greek locale translations (seconds, days, \u0026quot;ago\u0026quot;, and month typo). \u003ccode\u003ePR [#1184](https://github.com/arrow-py/arrow/issues/1184) \u0026lt;https://github.com/arrow-py/arrow/pull/1184\u0026gt;\u003c/code\u003e\u003cem\u003e, \u003ccode\u003ePR [#1186](https://github.com/arrow-py/arrow/issues/1186) \u0026lt;https://github.com/arrow-py/arrow/pull/1186\u0026gt;\u003c/code\u003e\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e[FIXED] Addressed \u003ccode\u003edatetime.utcnow\u003c/code\u003e deprecation warning. \u003ccode\u003ePR [#1182](https://github.com/arrow-py/arrow/issues/1182) \u0026lt;https://github.com/arrow-py/arrow/pull/1182\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added codecov test results. \u003ccode\u003ePR [#1223](https://github.com/arrow-py/arrow/issues/1223) \u0026lt;https://github.com/arrow-py/arrow/pull/1223\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated CI dependencies (actions/setup-python, actions/checkout, codecov/codecov-action, actions/cache).\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added docstrings to parser.py. \u003ccode\u003ePR [#1010](https://github.com/arrow-py/arrow/issues/1010) \u0026lt;https://github.com/arrow-py/arrow/pull/1010\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Updated Python versions support and bumped CI dependencies. \u003ccode\u003ePR [#1177](https://github.com/arrow-py/arrow/issues/1177) \u0026lt;https://github.com/arrow-py/arrow/pull/1177\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added dependabot for GitHub actions. \u003ccode\u003ePR [#1193](https://github.com/arrow-py/arrow/issues/1193) \u0026lt;https://github.com/arrow-py/arrow/pull/1193\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Moved dateutil types to test requirements. \u003ccode\u003ePR [#1183](https://github.com/arrow-py/arrow/issues/1183) \u0026lt;https://github.com/arrow-py/arrow/pull/1183\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003cli\u003e[INTERNAL] Added documentation link for \u003ccode\u003earrow.format\u003c/code\u003e. \u003ccode\u003ePR [#1180](https://github.com/arrow-py/arrow/issues/1180) \u0026lt;https://github.com/arrow-py/arrow/pull/1180\u0026gt;\u003c/code\u003e_\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/blockquote\u003e\n\u003c/details\u003e\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2c1f5185ad66bf3b1cf8c0812f4b4fe65ac46656\"\u003e\u003ccode\u003e2c1f518\u003c/code\u003e\u003c/a\u003e Bump release CI flow to use Python 3.14\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/2483bfea4ec8a4da609036aba3ce1b32cb571875\"\u003e\u003ccode\u003e2483bfe\u003c/code\u003e\u003c/a\u003e Bump changelog date\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c61de9299733da6d4a7e8badabae43684a3f9da2\"\u003e\u003ccode\u003ec61de92\u003c/code\u003e\u003c/a\u003e Bump version and add changelog (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1228\"\u003e#1228\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/c3bb589536b283e3e3886d1d6bc01a6374c8e656\"\u003e\u003ccode\u003ec3bb589\u003c/code\u003e\u003c/a\u003e Update pypy CI version and update pre-commit dependencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/85cd905332d108303da1cbd0f2336fcae058147f\"\u003e\u003ccode\u003e85cd905\u003c/code\u003e\u003c/a\u003e Run tests on next Python release (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1227\"\u003e#1227\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/4c8c44aefc0e5504b9c3cbf0d6adbb0ec4aa4571\"\u003e\u003ccode\u003e4c8c44a\u003c/code\u003e\u003c/a\u003e Add week_start parameter to floor() and ceil() (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1222\"\u003e#1222\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/7ccbe66122ca53d90acf9c69c37aa95c81a1fe89\"\u003e\u003ccode\u003e7ccbe66\u003c/code\u003e\u003c/a\u003e add codecov test results (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1223\"\u003e#1223\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/05cd9b47d0db1c22b44cb739832f1b9701855313\"\u003e\u003ccode\u003e05cd9b4\u003c/code\u003e\u003c/a\u003e fix humanize month limits (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1224\"\u003e#1224\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/ea756ea779468b0c6a9f45439dc05cfd5e71ee1e\"\u003e\u003ccode\u003eea756ea\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5 to 6 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1220\"\u003e#1220\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/arrow-py/arrow/commit/86f7520f15b2dd46f9c49f71ce5c15bbc537ed67\"\u003e\u003ccode\u003e86f7520\u003c/code\u003e\u003c/a\u003e Bump actions/checkout from 4 to 5 (\u003ca href=\"https://redirect.github.com/arrow-py/arrow/issues/1219\"\u003e#1219\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/arrow-py/arrow/compare/1.3.0...1.4.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `asttokens` from 3.0.0 to 3.0.1\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/bdbf396fc0e006912ba82f1137dfd6b2d5aa9af2\"\u003e\u003ccode\u003ebdbf396\u003c/code\u003e\u003c/a\u003e Update mypy; add 3.14 to the CI; drop python 3.8 support (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/167\"\u003e#167\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/f859c055e8453650e1987c5aefaaec36582d3a07\"\u003e\u003ccode\u003ef859c05\u003c/code\u003e\u003c/a\u003e Add tests for astroid v2, v3, and v4 to the CI (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/166\"\u003e#166\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/84ef059ba28d08816d3d881e363b9ed42bbeae3a\"\u003e\u003ccode\u003e84ef059\u003c/code\u003e\u003c/a\u003e Adapt asttokens for astroid 4.x (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/165\"\u003e#165\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9db9335648659520c7c8453bc39550fa4f95d539\"\u003e\u003ccode\u003e9db9335\u003c/code\u003e\u003c/a\u003e Various links improvements (\u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/163\"\u003e#163\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3371ebf7f48f6a731d409fffd6ba235e6a95d85b\"\u003e\u003ccode\u003e3371ebf\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/161\"\u003e#161\u003c/a\u003e from gristlabs/dependabot/pip/docs/requests-2.32.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3a60115d3efdb01efc8a6442b59fdd0071518e70\"\u003e\u003ccode\u003e3a60115\u003c/code\u003e\u003c/a\u003e Bump requests from 2.32.2 to 2.32.4 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/584b51c6c084455ad4597886657783d1b661ddfa\"\u003e\u003ccode\u003e584b51c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/160\"\u003e#160\u003c/a\u003e from gristlabs/dependabot/pip/docs/urllib3-2.5.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/3e9d703323ce94987bf9e030bd010eae13fa15b4\"\u003e\u003ccode\u003e3e9d703\u003c/code\u003e\u003c/a\u003e Bump urllib3 from 2.2.2 to 2.5.0 in /docs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/64d3f7c3637775fef832a9a9cdb78ec02da494e6\"\u003e\u003ccode\u003e64d3f7c\u003c/code\u003e\u003c/a\u003e Merge pull request \u003ca href=\"https://redirect.github.com/gristlabs/asttokens/issues/158\"\u003e#158\u003c/a\u003e from gristlabs/dependabot/pip/docs/jinja2-3.1.6\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gristlabs/asttokens/commit/9b5fb1abfb171cfb1f01c2d996cbd31e9d1f0660\"\u003e\u003ccode\u003e9b5fb1a\u003c/code\u003e\u003c/a\u003e Bump jinja2 from 3.1.4 to 3.1.6 in /docs\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/gristlabs/asttokens/compare/v3.0.0...v3.0.1\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `attrs` from 25.3.0 to 25.4.0\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003eSee full diff in \u003ca href=\"https://github.com/sponsors/hynek/commits\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `beautifulsoup4` from 4.13.4 to 4.14.2\n\nUpdates `bleach` from 6.2.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\u003c/blockquote\u003e\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.2.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 `certifi` from 2025.6.15 to 2025.11.12\n\u003cdetails\u003e\n\u003csummary\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/37ea150bee10958559f804f128de2fdd48e1ed45\"\u003e\u003ccode\u003e37ea150\u003c/code\u003e\u003c/a\u003e 2025.11.12 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/375\"\u003e#375\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2fa50bb698145e2401e17b23f6969d3952a6f7c1\"\u003e\u003ccode\u003e2fa50bb\u003c/code\u003e\u003c/a\u003e Bump actions/upload-artifact from 4.6.2 to 5.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/374\"\u003e#374\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/6cadb5304715523e57ea425f833aa3495a4e01e4\"\u003e\u003ccode\u003e6cadb53\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 5.0.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/373\"\u003e#373\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/fb14ac49a976b1695d84b1ac1307276a20b3aac9\"\u003e\u003ccode\u003efb14ac4\u003c/code\u003e\u003c/a\u003e 2025.10.05 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/371\"\u003e#371\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/2c7c7ee6b76a118191b685a4cc028d4241f22eb7\"\u003e\u003ccode\u003e2c7c7ee\u003c/code\u003e\u003c/a\u003e Add Python 3.14 classifier in setup.py\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/1a5cb7b3771bba256755f88b3dcf3ac13f064622\"\u003e\u003ccode\u003e1a5cb7b\u003c/code\u003e\u003c/a\u003e Bump actions/setup-python from 5.6.0 to 6.0.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/367\"\u003e#367\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/dea59605ef2b266c2e0e67938e8c8535a04b1211\"\u003e\u003ccode\u003edea5960\u003c/code\u003e\u003c/a\u003e Bump pypa/gh-action-pypi-publish from 1.12.4 to 1.13.0 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/366\"\u003e#366\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/83566b7c993eef772facdaff59c7bba105675329\"\u003e\u003ccode\u003e83566b7\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/certifi/python-certifi/commit/ca2e121bdb304fd01f802d3b1ee6a65684f569f2\"\u003e\u003ccode\u003eca2e121\u003c/code\u003e\u003c/a\u003e Bump actions/download-artifact from 4.3.0 to 5.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/certifi/python-certifi/commit/a97d9ad8f87c382378dddc0b0b33b9770932404e\"\u003e\u003ccode\u003ea97d9ad\u003c/code\u003e\u003c/a\u003e 2025.08.03 (\u003ca href=\"https://redirect.github.com/certifi/python-certifi/issues/362\"\u003e#362\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/certifi/python-certifi/compare/2025.06.15...2025.11.12\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `cffi` from 1.17.1 to 2.0.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/python-cffi/cffi/releases\"\u003ecffi's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev2.0.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only) - huge thanks to the folks at Quansight Labs for all the work to get this one sorted!\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev2.0.0b1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd Python 3.14 support.\u003c/li\u003e\n\u003cli\u003eAdd CPython free-threaded support (3.14t+ only).\u003c/li\u003e\n\u003cli\u003eDrop Python \u0026lt;= 3.8 support.\u003c/li\u003e\n\u003cli\u003eFix order dependency affecting nested type size calculation (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/148\"\u003e#148\u003c/a\u003e).\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\"\u003ehttps://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0b1\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/python-cffi/cffi/commit/6366c01d84e9a78e7e85f12ebe9760ba5d19b6d3\"\u003e\u003ccode\u003e6366c01\u003c/code\u003e\u003c/a\u003e release 2.0.0 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/196\"\u003e#196\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/95c847663aec401e4003927a274e4de9b8595f4f\"\u003e\u003ccode\u003e95c8476\u003c/code\u003e\u003c/a\u003e 2.0.0 post beta backports (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/195\"\u003e#195\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/195cbda66b6be9297ef6d584644e50cfdcca4e8a\"\u003e\u003ccode\u003e195cbda\u003c/code\u003e\u003c/a\u003e Release 2.0.0b1 (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/183\"\u003e#183\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b4bbe7940d3f76027534db1aecbae9b61c35221a\"\u003e\u003ccode\u003eb4bbe79\u003c/code\u003e\u003c/a\u003e fix version test to support beta\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/7ed073de66e713cf791b6fdfa23685c81fdfd6ad\"\u003e\u003ccode\u003e7ed073d\u003c/code\u003e\u003c/a\u003e Add support for the free-threaded build (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/178\"\u003e#178\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/67a170dc7972dc9361743690b38da3d963b200ef\"\u003e\u003ccode\u003e67a170d\u003c/code\u003e\u003c/a\u003e Change the license from MIT to MIT-no-attribution, which is the same without ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/92645ec9329feb03e3fa86240b40fe0fc37469d1\"\u003e\u003ccode\u003e92645ec\u003c/code\u003e\u003c/a\u003e Add Python 3.14 support/testing (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/177\"\u003e#177\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/2b81170583a898478a6996c9705d8c38ab7f73a1\"\u003e\u003ccode\u003e2b81170\u003c/code\u003e\u003c/a\u003e doc: update test commands in Section Testing/development tips (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/158\"\u003e#158\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/25172b84cf51cf58241f074ccd1efd9c7648cb43\"\u003e\u003ccode\u003e25172b8\u003c/code\u003e\u003c/a\u003e doc: update year (\u003ca href=\"https://redirect.github.com/python-cffi/cffi/issues/153\"\u003e#153\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/python-cffi/cffi/commit/b57a92c03eb2078a99c900519a37d18b4d52324f\"\u003e\u003ccode\u003eb57a92c\u003c/code\u003e\u003c/a\u003e issue 147: force-compute nested structs before parent structs.  Occurs mainly...\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/python-cffi/cffi/compare/v1.17.1...v2.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `charset-normalizer` from 3.4.2 to 3.4.4\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/jawah/charset_normalizer/releases\"\u003echarset-normalizer's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 3.4.4\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.3...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003emultiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 3.4.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\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/jawah/charset_normalizer/blob/master/CHANGELOG.md\"\u003echarset-normalizer's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.4\"\u003e3.4.4\u003c/a\u003e (2025-10-13)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eBound \u003ccode\u003esetuptools\u003c/code\u003e to a specific constraint \u003ccode\u003esetuptools\u0026gt;=68,\u0026lt;=81\u003c/code\u003e.\u003c/li\u003e\n\u003cli\u003eRaised upper bound of mypyc for the optional pre-built extension to v1.18.2\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eRemoved\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003esetuptools-scm\u003c/code\u003e as a build dependency.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eEnforced hashes in \u003ccode\u003edev-requirements.txt\u003c/code\u003e and created \u003ccode\u003eci-requirements.txt\u003c/code\u003e for security purposes.\u003c/li\u003e\n\u003cli\u003eAdditional pre-built wheels for riscv64, s390x, and armv7l architectures.\u003c/li\u003e\n\u003cli\u003eRestore \u003ccode\u003e multiple.intoto.jsonl\u003c/code\u003e in GitHub releases in addition to individual attestation file per wheel.\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3\"\u003e3.4.3\u003c/a\u003e (2025-08-09)\u003c/h2\u003e\n\u003ch3\u003eChanged\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emypy(c) is no longer a required dependency at build time if \u003ccode\u003eCHARSET_NORMALIZER_USE_MYPYC\u003c/code\u003e isn't set to \u003ccode\u003e1\u003c/code\u003e. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/595\"\u003e#595\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/583\"\u003e#583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eautomatically lower confidence on small bytes samples that are not Unicode in \u003ccode\u003edetect\u003c/code\u003e output legacy function. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/391\"\u003e#391\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eCustom build backend to overcome inability to mark mypy as an optional dependency in the build phase.\u003c/li\u003e\n\u003cli\u003eSupport for Python 3.14\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003esdist archive contained useless directories.\u003c/li\u003e\n\u003cli\u003eautomatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/633\"\u003e#633\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eMisc\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eSBOM are automatically published to the relevant GitHub release to comply with regulatory changes.\nEach published wheel comes with its SBOM. We choose CycloneDX as the format.\u003c/li\u003e\n\u003cli\u003ePrebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel.\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/jawah/charset_normalizer/commit/b30ffdcc2f11043c0d34e60fe66d3815cd49b32b\"\u003e\u003ccode\u003eb30ffdc\u003c/code\u003e\u003c/a\u003e :wrench: fix checksum step in cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/d3fbfcfad7dfe3c640886f1a6a6351da527f6634\"\u003e\u003ccode\u003ed3fbfcf\u003c/code\u003e\u003c/a\u003e :wrench: fix cd.yml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/dafbb95f8c00d3cc8b99158caa63006ffab98749\"\u003e\u003ccode\u003edafbb95\u003c/code\u003e\u003c/a\u003e Release 3.4.4 (\u003ca href=\"https://redirect.github.com/jawah/charset_normalizer/issues/658\"\u003e#658\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/1f18ffaa69d2c84fea7abedb8840197ba9c14562\"\u003e\u003ccode\u003e1f18ffa\u003c/code\u003e\u003c/a\u003e :arrow_up: raise mypy upper bound to 1.18.2\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/ef4ac69ad203891f24e26b2422ab3a08053044fa\"\u003e\u003ccode\u003eef4ac69\u003c/code\u003e\u003c/a\u003e Merge branch 'release-3.4.4' of github.com:jawah/charset_normalizer into rele...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/4b35dda053db5e2e60a247e80a116e4ef04f439b\"\u003e\u003ccode\u003e4b35dda\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/0ec6452f1a34cbc77a55b237c4118807b44c2a33\"\u003e\u003ccode\u003e0ec6452\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/f341edec8a828dda394abfa011b1ded8b4b102e2\"\u003e\u003ccode\u003ef341ede\u003c/code\u003e\u003c/a\u003e :arrow_up: upgrade dependencies (dev, ci)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/a308841e660a4d61ea6c448e7b8bf97415ecdc4a\"\u003e\u003ccode\u003ea308841\u003c/code\u003e\u003c/a\u003e :pencil: write changelog for 3.4.4\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jawah/charset_normalizer/commit/9c906da611d5ca5ef076d6bf7f60e629f661d0b0\"\u003e\u003ccode\u003e9c906da\u003c/code\u003e\u003c/a\u003e :wrench: update cd.yml workflow (add riscv64, s390x and armv7l)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/jawah/charset_normalizer/compare/3.4.2...3.4.4\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `click` from 8.1.8 to 8.3.1\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/pallets/click/releases\"\u003eclick's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e8.3.1\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.1/\"\u003ehttps://pypi.org/project/click/8.3.1/\u003c/a\u003e\nChanges: \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-1\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-1\u003c/a\u003e\nMilestone: \u003ca href=\"https://github.com/pallets/click/milestone/28\"\u003ehttps://github.com/pallets/click/milestone/28\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3039\"\u003e#3039\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3055\"\u003e#3055\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through the \u003ccode\u003eContext.invoke()\u003c/code\u003e method. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3066\"\u003e#3066\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3065\"\u003e#3065\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3068\"\u003e#3068\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect behavior for multiple parameters using the same name. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3071\"\u003e#3071\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3079\"\u003e#3079\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eFix rendering when \u003ccode\u003eprompt\u003c/code\u003e and \u003ccode\u003econfirm\u003c/code\u003e parameter \u003ccode\u003eprompt_suffix\u003c/code\u003e is empty. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3019\"\u003e#3019\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3021\"\u003e#3021\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen \u003ccode\u003eSentinel.UNSET\u003c/code\u003e is found during parsing, it will skip calls to \u003ccode\u003etype_cast_value\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3069\"\u003e#3069\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3090\"\u003e#3090\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNone\u003c/code\u003e when looking up for other parameters through the context inside parameter callbacks. \u003ca href=\"https://redirect.github.com/pallets/click/issues/3136\"\u003e#3136\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3137\"\u003e#3137\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.3.0\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.3.0 feature release. A feature release may include new features, remove previously deprecated code, add new deprecation, or introduce potentially breaking changes.\u003c/p\u003e\n\u003cp\u003eWe encourage everyone to upgrade. You can read more about our \u003ca href=\"https://palletsprojects.com/versions\"\u003eVersion Support Policy\u003c/a\u003e on our website.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.3.0/\"\u003ehttps://pypi.org/project/click/8.3.0/\u003c/a\u003e\nChanges:  \u003ca href=\"https://click.palletsprojects.com/page/changes/#version-8-3-0\"\u003ehttps://click.palletsprojects.com/page/changes/#version-8-3-0\u003c/a\u003e\nMilestone \u003ca href=\"https://github.com/pallets/click/milestone/27\"\u003ehttps://github.com/pallets/click/milestone/27\u003c/a\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003e\u003cstrong\u003eImproved flag option handling\u003c/strong\u003e: Reworked the relationship between \u003ccode\u003eflag_value\u003c/code\u003e\nand \u003ccode\u003edefault\u003c/code\u003e parameters for better consistency:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter value is now preserved as-is and passed directly\nto CLI functions (no more unexpected transformations)\u003c/li\u003e\n\u003cli\u003eException: flag options with \u003ccode\u003edefault=True\u003c/code\u003e maintain backward compatibility\nby defaulting to their \u003ccode\u003eflag_value\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eThe \u003ccode\u003edefault\u003c/code\u003e parameter can now be any type (\u003ccode\u003ebool\u003c/code\u003e, \u003ccode\u003eNone\u003c/code\u003e, etc.)\u003c/li\u003e\n\u003cli\u003eFixes inconsistencies reported in: \u003ca href=\"https://redirect.github.com/pallets/click/issues/1992\"\u003e#1992\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2514\"\u003e#2514\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2610\"\u003e#2610\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3024\"\u003e#3024\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eAllow \u003ccode\u003edefault\u003c/code\u003e to be set on \u003ccode\u003eArgument\u003c/code\u003e for \u003ccode\u003enargs = -1\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2164\"\u003e#2164\u003c/a\u003e\n\u003ca href=\"https://redirect.github.com/pallets/click/issues/3030\"\u003e#3030\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for \u003ccode\u003enargs\u003c/code\u003e option in combination with flag\noption \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eShow correct auto complete value for nargs option in combination with flag option \u003ca href=\"https://redirect.github.com/pallets/click/issues/2813\"\u003e#2813\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix handling of quoted and escaped parameters in Fish autocompletion. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2995\"\u003e#2995\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/3013\"\u003e#3013\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eLazily import \u003ccode\u003eshutil\u003c/code\u003e.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3023\"\u003e#3023\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eProperly forward exception information to resources registered with\n\u003ccode\u003eclick.core.Context.with_resource()\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/pallets/click/issues/2447\"\u003e#2447\u003c/a\u003e  \u003ca href=\"https://redirect.github.com/pallets/click/issues/3058\"\u003e#3058\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eFix regression related to EOF handling in CliRunner.  \u003ca href=\"https://redirect.github.com/pallets/click/issues/2939\"\u003e#2939\u003c/a\u003e \u003ca href=\"https://redirect.github.com/pallets/click/issues/2940\"\u003e#2940\u003c/a\u003e\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e8.2.2\u003c/h2\u003e\n\u003cp\u003eThis is the Click 8.2.2 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.\u003c/p\u003e\n\u003cp\u003ePyPI: \u003ca href=\"https://pypi.org/project/click/8.2.2/\"\u003ehttps://pypi.org/project/click/8.2.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/click/blob/8.3.1/CHANGES.rst\"\u003eclick's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 8.3.1\u003c/h2\u003e\n\u003cp\u003eReleased 2025-11-15\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDon't discard pager arguments by correctly using \u003ccode\u003esubprocess.Popen\u003c/code\u003e. :issue:\u003ccode\u003e3039\u003c/code\u003e\n:pr:\u003ccode\u003e3055\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eReplace \u003ccode\u003eSentinel.UNSET\u003c/code\u003e default values by \u003ccode\u003eNone\u003c/code\u003e as they're passed through\nthe \u003ccode\u003eContext.invoke()\u003c/code\u003e method. :issue:\u003ccode\u003e3066\u003c/code\u003e :issue:\u003ccode\u003e3065\u003c/code\u003e :pr:\u003ccode\u003e3068\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eFix conversion of \u003ccode\u003eSentinel.UNSET\u003c/code\u003e happening too early, which caused incorrect\nbehavior for multiple parameters using the same name. :issue:\u003ccode\u003e3071\u003c/code\u003e :pr:\u003ccode\u003e3079\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eHide \u003ccode\u003eSentinel.UNSET\u003c/code\u003e values as \u003ccode\u003eNo...\n\n_Description has been truncated_","html_url":"https://github.com/manulthanura/ReviewClassifier/pull/72","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/manulthanura%2FReviewClassifier/issues/72","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/72/packages"}},{"old_version":"26.2.1","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-11-06T17:29:10.000Z","version_change":"26.2.1 → 27.1.0","issue":{"uuid":"3596802801","node_id":"PR_kwDOOlXPW86x89zS","number":127,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 45 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-01T20:30:17.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-06T17:29:10.000Z","updated_at":"2025-12-01T20:30:18.000Z","time_to_close":2170867,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":45,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.0","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.71.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.2","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"openfeature-provider-ofrep","old_version":"0.1.1","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.0","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.0.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 45 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.71.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.2` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.0` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.0.1` |\n\nBumps the pip-production-dependencies group with 40 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.71.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.2` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.0` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.0.1` |\n\nBumps the pip-production-dependencies group with 9 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.51b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e Fixed an issue where FastAPI reports IP instead of URL.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3670\"\u003e#3670\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.30.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/347517a7ccaf145a940fc6e2a37a8d1df621f3a3\"\u003e347517a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ff0a06e (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/498\"\u003e#498\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/c722cf0239f2b9b95a1214b99447a9316c2c73d8\"\u003ec722cf0\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-feature/python-sdk/commit/2d78d33d8a0e63c80c9ef330debd77fe80d3445f\"\u003e\u003ccode\u003e2d78d33\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e\u003ccode\u003e81a1d95\u003c/code\u003e\u003c/a\u003e chore: remove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e\u003ccode\u003e74409bf\u003c/code\u003e\u003c/a\u003e chore: add missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e\u003ccode\u003e837fef9\u003c/code\u003e\u003c/a\u003e chore: replace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003e\u003ccode\u003ede37144\u003c/code\u003e\u003c/a\u003e fix: fix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003e\u003ccode\u003eb418cb0\u003c/code\u003e\u003c/a\u003e chore: update mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/is...\n\n_Description has been truncated_","html_url":"https://github.com/Moshood88/open-telemetry-opentelemetry-demo/pull/127","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/Moshood88%2Fopen-telemetry-opentelemetry-demo/issues/127","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/127/packages"}},{"old_version":"26.2.1","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-11-06T12:34:57.000Z","version_change":"26.2.1 → 27.1.0","issue":{"uuid":"3595639846","node_id":"PR_kwDOOuxJSc6x4_Xn","number":104,"state":"closed","title":"build(deps): bump the pip-production-dependencies group across 3 directories with 45 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-01T15:23:46.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-06T12:34:57.000Z","updated_at":"2025-12-01T15:23:47.000Z","time_to_close":2170129,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"build(deps): bump","group_name":"pip-production-dependencies","update_count":45,"packages":[{"name":"grpcio-health-checking","old_version":"1.71.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.71.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.3.0","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.2.0","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.1","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.69.1","new_version":"1.71.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"locust","old_version":"2.33.0","new_version":"2.42.2","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.6.0","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"openfeature-provider-ofrep","old_version":"0.1.1","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.0","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.0.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 45 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.71.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.2` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.0` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.0.1` |\n\nBumps the pip-production-dependencies group with 40 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.1` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.69.1` | `1.71.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [locust](https://github.com/locustio/locust) | `2.33.0` | `2.42.2` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.6.0` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [openfeature-provider-ofrep](https://github.com/open-feature/python-sdk-contrib) | `0.1.1` | `0.2.0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.0` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.0.1` |\n\nBumps the pip-production-dependencies group with 9 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.71.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.71.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.3.0` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.2.0` | `0.2.6` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.71.0 to 1.76.0\n\nUpdates `grpcio` from 1.71.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.71.0...v1.76.0\"\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.51b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e Fixed an issue where FastAPI reports IP instead of URL.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3670\"\u003e#3670\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.30.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.0.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.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).\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\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/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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.3.0...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/347517a7ccaf145a940fc6e2a37a8d1df621f3a3\"\u003e347517a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ff0a06e (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/498\"\u003e#498\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/c722cf0239f2b9b95a1214b99447a9316c2c73d8\"\u003ec722cf0\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-feature/python-sdk/commit/2d78d33d8a0e63c80c9ef330debd77fe80d3445f\"\u003e\u003ccode\u003e2d78d33\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e\u003ccode\u003e81a1d95\u003c/code\u003e\u003c/a\u003e chore: remove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e\u003ccode\u003e74409bf\u003c/code\u003e\u003c/a\u003e chore: add missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e\u003ccode\u003e837fef9\u003c/code\u003e\u003c/a\u003e chore: replace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003e\u003ccode\u003ede37144\u003c/code\u003e\u003c/a\u003e fix: fix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003e\u003ccode\u003eb418cb0\u003c/code\u003e\u003c/a\u003e chore: update mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/is...\n\n_Description has been truncated_","html_url":"https://github.com/KiranRepos/My_Telementry_Demo/pull/104","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/KiranRepos%2FMy_Telementry_Demo/issues/104","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/104/packages"}},{"old_version":"26.2.1","new_version":"27.1.0","update_type":"major","path":null,"pr_created_at":"2025-11-06T09:40:27.000Z","version_change":"26.2.1 → 27.1.0","issue":{"uuid":"3594944274","node_id":"PR_kwDOPEUJ286x2qbV","number":59,"state":"closed","title":"Bump the pip-production-dependencies group across 3 directories with 46 updates","user":"dependabot[bot]","labels":["dependencies","python"],"assignees":[],"locked":false,"comments_count":1,"pull_request":true,"closed_at":"2025-12-02T09:29:26.000Z","author_association":null,"state_reason":null,"created_at":"2025-11-06T09:40:27.000Z","updated_at":"2025-12-02T09:29:26.000Z","time_to_close":2245739,"merged_at":null,"merged_by":null,"closed_by":null,"dependency_metadata":{"prefix":"Bump","group_name":"pip-production-dependencies","update_count":46,"packages":[{"name":"grpcio-health-checking","old_version":"1.70.0","new_version":"1.76.0"},{"name":"grpcio","old_version":"1.70.0","new_version":"1.76.0","repository_url":"https://github.com/grpc/grpc"},{"name":"opentelemetry-distro","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-exporter-otlp-proto-grpc","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"python-dotenv","old_version":"1.0.1","new_version":"1.2.1","repository_url":"https://github.com/theskumar/python-dotenv"},{"name":"python-json-logger","old_version":"3.2.1","new_version":"4.0.0","repository_url":"https://github.com/nhairs/python-json-logger"},{"name":"openfeature-sdk","old_version":"0.8.0","new_version":"0.8.3","repository_url":"https://github.com/open-feature/python-sdk"},{"name":"openfeature-provider-flagd","old_version":"0.1.5","new_version":"0.2.6","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"openfeature-hooks-opentelemetry","old_version":"0.1.3","new_version":"0.2.0","repository_url":"https://github.com/open-feature/python-sdk-contrib"},{"name":"psutil","old_version":"6.1.1","new_version":"7.1.3","repository_url":"https://github.com/giampaolo/psutil"},{"name":"brotli","old_version":"1.1.0","new_version":"1.2.0","repository_url":"https://github.com/google/brotli"},{"name":"certifi","old_version":"2025.1.31","new_version":"2025.10.5","repository_url":"https://github.com/certifi/python-certifi"},{"name":"charset-normalizer","old_version":"3.4.1","new_version":"3.4.4","repository_url":"https://github.com/jawah/charset_normalizer"},{"name":"click","old_version":"8.1.8","new_version":"8.3.0","repository_url":"https://github.com/pallets/click"},{"name":"configargparse","old_version":"1.7","new_version":"1.7.1","repository_url":"https://github.com/bw2/ConfigArgParse"},{"name":"deprecated","old_version":"1.2.18","new_version":"1.3.1","repository_url":"https://github.com/laurent-laporte-pro/deprecated"},{"name":"flask","old_version":"3.1.0","new_version":"3.1.2","repository_url":"https://github.com/pallets/flask"},{"name":"flask-cors","old_version":"5.0.0","new_version":"6.0.1","repository_url":"https://github.com/corydolphin/flask-cors"},{"name":"gevent","old_version":"24.11.1","new_version":"25.9.1","repository_url":"https://github.com/gevent/gevent"},{"name":"geventhttpclient","old_version":"2.3.3","new_version":"2.3.5","repository_url":"https://github.com/geventhttpclient/geventhttpclient"},{"name":"googleapis-common-protos","old_version":"1.67.0","new_version":"1.71.0","repository_url":"https://github.com/googleapis/google-cloud-python"},{"name":"greenlet","old_version":"3.1.1","new_version":"3.2.4","repository_url":"https://github.com/python-greenlet/greenlet"},{"name":"idna","old_version":"3.10","new_version":"3.11","repository_url":"https://github.com/kjd/idna"},{"name":"jinja2","old_version":"3.1.5","new_version":"3.1.6","repository_url":"https://github.com/pallets/jinja"},{"name":"locust","old_version":"2.32.9","new_version":"2.42.1","repository_url":"https://github.com/locustio/locust"},{"name":"locust-plugins","old_version":"4.5.3","new_version":"5.0.0"},{"name":"markupsafe","old_version":"3.0.2","new_version":"3.0.3","repository_url":"https://github.com/pallets/markupsafe"},{"name":"msgpack","old_version":"1.1.0","new_version":"1.1.2","repository_url":"https://github.com/msgpack/msgpack-python"},{"name":"opentelemetry-api","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-instrumentation","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-jinja2","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-requests","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-system-metrics","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-instrumentation-urllib3","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"opentelemetry-proto","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-sdk","old_version":"1.30.0","new_version":"1.38.0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-semantic-conventions","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python"},{"name":"opentelemetry-util-http","old_version":"0.51b0","new_version":"0.59b0","repository_url":"https://github.com/open-telemetry/opentelemetry-python-contrib"},{"name":"protobuf","old_version":"5.29.3","new_version":"6.33.0","repository_url":"https://github.com/protocolbuffers/protobuf"},{"name":"pyzmq","old_version":"26.2.1","new_version":"27.1.0","repository_url":"https://github.com/zeromq/pyzmq"},{"name":"requests","old_version":"2.32.3","new_version":"2.32.5","repository_url":"https://github.com/psf/requests"},{"name":"typing-extensions","old_version":"4.12.2","new_version":"4.15.0","repository_url":"https://github.com/python/typing_extensions"},{"name":"urllib3","old_version":"2.3.0","new_version":"2.5.0","repository_url":"https://github.com/urllib3/urllib3"},{"name":"wrapt","old_version":"1.17.2","new_version":"2.0.0","repository_url":"https://github.com/GrahamDumpleton/wrapt"},{"name":"zope-event","old_version":"5.0","new_version":"6.0","repository_url":"https://github.com/zopefoundation/zope.event"},{"name":"zope-interface","old_version":"7.2","new_version":"8.0.1","repository_url":"https://github.com/zopefoundation/zope.interface"}],"path":null,"ecosystem":"pip"},"body":"Bumps the pip-production-dependencies group with 46 updates in the /src directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.67.0` | `1.71.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.32.9` | `2.42.1` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.0` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.0.1` |\n\nBumps the pip-production-dependencies group with 42 updates in the /src/load-generator directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n| [brotli](https://github.com/google/brotli) | `1.1.0` | `1.2.0` |\n| [certifi](https://github.com/certifi/python-certifi) | `2025.1.31` | `2025.10.5` |\n| [charset-normalizer](https://github.com/jawah/charset_normalizer) | `3.4.1` | `3.4.4` |\n| [click](https://github.com/pallets/click) | `8.1.8` | `8.3.0` |\n| [configargparse](https://github.com/bw2/ConfigArgParse) | `1.7` | `1.7.1` |\n| [deprecated](https://github.com/laurent-laporte-pro/deprecated) | `1.2.18` | `1.3.1` |\n| [flask](https://github.com/pallets/flask) | `3.1.0` | `3.1.2` |\n| [flask-cors](https://github.com/corydolphin/flask-cors) | `5.0.0` | `6.0.1` |\n| [gevent](https://github.com/gevent/gevent) | `24.11.1` | `25.9.1` |\n| [geventhttpclient](https://github.com/geventhttpclient/geventhttpclient) | `2.3.3` | `2.3.5` |\n| [googleapis-common-protos](https://github.com/googleapis/google-cloud-python) | `1.67.0` | `1.71.0` |\n| [greenlet](https://github.com/python-greenlet/greenlet) | `3.1.1` | `3.2.4` |\n| [idna](https://github.com/kjd/idna) | `3.10` | `3.11` |\n| [jinja2](https://github.com/pallets/jinja) | `3.1.5` | `3.1.6` |\n| [locust](https://github.com/locustio/locust) | `2.32.9` | `2.42.1` |\n| [locust-plugins[playwright]](https://github.com/SvenskaSpel/locust-plugins) | `4.5.3` | `5.0.0` |\n| [markupsafe](https://github.com/pallets/markupsafe) | `3.0.2` | `3.0.3` |\n| [msgpack](https://github.com/msgpack/msgpack-python) | `1.1.0` | `1.1.2` |\n| [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-instrumentation](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-jinja2](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-requests](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-system-metrics](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-instrumentation-urllib3](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-proto](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [opentelemetry-semantic-conventions](https://github.com/open-telemetry/opentelemetry-python) | `0.51b0` | `0.59b0` |\n| [opentelemetry-util-http](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [protobuf](https://github.com/protocolbuffers/protobuf) | `5.29.3` | `6.33.0` |\n| [pyzmq](https://github.com/zeromq/pyzmq) | `26.2.1` | `27.1.0` |\n| [requests](https://github.com/psf/requests) | `2.32.3` | `2.32.5` |\n| [typing-extensions](https://github.com/python/typing_extensions) | `4.12.2` | `4.15.0` |\n| [urllib3](https://github.com/urllib3/urllib3) | `2.3.0` | `2.5.0` |\n| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `2.0.0` |\n| [zope-event](https://github.com/zopefoundation/zope.event) | `5.0` | `6.0` |\n| [zope-interface](https://github.com/zopefoundation/zope.interface) | `7.2` | `8.0.1` |\n\nBumps the pip-production-dependencies group with 10 updates in the /src/recommendation directory:\n\n| Package | From | To |\n| --- | --- | --- |\n| [grpcio-health-checking](https://grpc.io) | `1.70.0` | `1.76.0` |\n| [grpcio](https://github.com/grpc/grpc) | `1.70.0` | `1.76.0` |\n| [opentelemetry-distro](https://github.com/open-telemetry/opentelemetry-python-contrib) | `0.51b0` | `0.59b0` |\n| [opentelemetry-exporter-otlp-proto-grpc](https://github.com/open-telemetry/opentelemetry-python) | `1.30.0` | `1.38.0` |\n| [python-dotenv](https://github.com/theskumar/python-dotenv) | `1.0.1` | `1.2.1` |\n| [python-json-logger](https://github.com/nhairs/python-json-logger) | `3.2.1` | `4.0.0` |\n| [openfeature-sdk](https://github.com/open-feature/python-sdk) | `0.8.0` | `0.8.3` |\n| [openfeature-provider-flagd](https://github.com/open-feature/python-sdk-contrib) | `0.1.5` | `0.2.6` |\n| [openfeature-hooks-opentelemetry](https://github.com/open-feature/python-sdk-contrib) | `0.1.3` | `0.2.0` |\n| [psutil](https://github.com/giampaolo/psutil) | `6.1.1` | `7.1.3` |\n\n\nUpdates `grpcio-health-checking` from 1.70.0 to 1.76.0\n\nUpdates `grpcio` from 1.70.0 to 1.76.0\n\u003cdetails\u003e\n\u003csummary\u003eRelease notes\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003egrpcio's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eRelease v1.76.0\u003c/h2\u003e\n\u003cp\u003eThis is release 1.76.0 (\u003ca href=\"https://github.com/grpc/grpc/blob/master/doc/g_stands_for.md\"\u003egenuine\u003c/a\u003e) of gRPC Core.\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes, with highlights listed below.\u003c/p\u003e\n\u003ch2\u003eCore\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003ePrioritize system CA over bundled CA. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40583\"\u003e#40583\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[event_engine] Introduce a event_engine_poller_for_python experiment. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40243\"\u003e#40243\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e[metrics] add grpc.lb.backend_service label. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40486\"\u003e#40486\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eC#\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[csharp tools] \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/39374\"\u003e#39374\u003c/a\u003e Grpc.Tools can't process file Suffix name with Upper character. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/40072\"\u003e#40072\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ePython\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e[Python] gRPC AsyncIO: Improve CompletionQueue polling performance. (\u003ca href=\"https://redirect.github.com/grpc/grpc/pull/39993\"\u003e#39993\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eRelease v1.76.0-pre1\u003c/h2\u003e\n\u003cp\u003eThis is a prerelease of gRPC Core 1.76.0 (genuine).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis prerelease contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eRelease v1.75.1\u003c/h2\u003e\n\u003cp\u003eThis is release gRPC Core 1.75.1 (gemini).\u003c/p\u003e\n\u003cp\u003eFor gRPC documentation, see \u003ca href=\"https://grpc.io/\"\u003egrpc.io\u003c/a\u003e. For previous releases, see \u003ca href=\"https://github.com/grpc/grpc/releases\"\u003eReleases\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eThis release contains refinements, improvements, and bug fixes.\u003c/p\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003ch3\u003ePython\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRelease grpcio wheels with Python 3.14 support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40403\"\u003e#40403\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAsyncio: fixes grpc shutdown race condition occurring during python interpreter finalizations. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40447\"\u003e#40447\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eThis also addresses previously reported issues with empty error message on Python interpreter exit (\u003ccode\u003eError in sys.excepthook:\u003c/code\u003e/\u003ccode\u003eOriginal exception was:\u003c/code\u003e empty): \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/36655\"\u003e#36655\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/38679\"\u003e#38679\u003c/a\u003e, \u003ca href=\"https://redirect.github.com/grpc/grpc/issues/33342\"\u003e#33342\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003ePython 3.14: preserve current behavior when using grpc.aio async methods outside of a running event loop. (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40750\"\u003e#40750\u003c/a\u003e)\n\u003cul\u003e\n\u003cli\u003eNote: using async methods outside of a running event loop is \u003ca href=\"https://docs.python.org/3.14/library/asyncio-policy.html#asyncio-policies\"\u003ediscouraged\u003c/a\u003e by Python, and \u003cstrong\u003ewill be deprecated in future gRPC releases\u003c/strong\u003e. Please use the \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.run\"\u003easyncio.run()\u003c/a\u003e function (or \u003ca href=\"https://docs.python.org/3.14/library/asyncio-runner.html#asyncio.Runner\"\u003easyncio.Runner\u003c/a\u003e for custom loop factories). For interactive mode, use dedicated \u003ca href=\"https://docs.python.org/3/library/asyncio.html#asyncio-cli\"\u003easyncio REPL\u003c/a\u003e: \u003ccode\u003epython -m asyncio\u003c/code\u003e.\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFull Changelog\u003c/strong\u003e: \u003ca href=\"https://github.com/grpc/grpc/compare/v1.75.0...v1.75.1\"\u003ehttps://github.com/grpc/grpc/compare/v1.75.0...v1.75.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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f5ffb68d8a2fd603dff16287e90a4ac571e1fec6\"\u003e\u003ccode\u003ef5ffb68\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40925\"\u003e#40925\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/ffd83794b3804739c0789096155833e302ac1270\"\u003e\u003ccode\u003effd8379\u003c/code\u003e\u003c/a\u003e [Release] Bump version to 1.76.0-pre1 (on v1.76.x branch) (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40798\"\u003e#40798\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/835d394034060002262ab4e404e552ac0393a1a1\"\u003e\u003ccode\u003e835d394\u003c/code\u003e\u003c/a\u003e [Release] Bump core version to 51.0.0 for upcoming release (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40784\"\u003e#40784\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/de6ce7f32b1bf254d2b4c04e8872b63284632fd3\"\u003e\u003ccode\u003ede6ce7f\u003c/code\u003e\u003c/a\u003e [PH2] Add files for goaway support (\u003ca href=\"https://redirect.github.com/grpc/grpc/issues/40786\"\u003e#40786\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/f7dd7f4b4186049d104aa2c88ad4432f58c19ede\"\u003e\u003ccode\u003ef7dd7f4\u003c/code\u003e\u003c/a\u003e [PH2][Trivial][CleanUp]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/2d40a376c7ea72602fa7bc62606324b1ff14c44f\"\u003e\u003ccode\u003e2d40a37\u003c/code\u003e\u003c/a\u003e [PH2][ChannelZ][ZTrace][Skeleton]\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/83acb278bef565d8d46d6e19582eaacc86f737a3\"\u003e\u003ccode\u003e83acb27\u003c/code\u003e\u003c/a\u003e [build] Add Missing Dependencies for reflection_proto in Preparation for Enab...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/abfe8a29d31a8ab9ff6cdda11cdfa2813cb59632\"\u003e\u003ccode\u003eabfe8a2\u003c/code\u003e\u003c/a\u003e [PH2] Stream list represents streams open for reads.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/c65d8de800aaa907b45cee54ebcd29d5b556d3ca\"\u003e\u003ccode\u003ec65d8de\u003c/code\u003e\u003c/a\u003e [PH2][Expt] Fix the experiment expiry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grpc/grpc/commit/755d025f16d20641155e89ecc46777e94e9e172d\"\u003e\u003ccode\u003e755d025\u003c/code\u003e\u003c/a\u003e Fix latent_see_test flakiness\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/grpc/grpc/compare/v1.70.0...v1.76.0\"\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.51b0 to 0.59b0\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\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-flask\u003c/code\u003e: Do not record \u003ccode\u003ehttp.server.duration\u003c/code\u003e metrics for excluded URLs.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3794\"\u003e#3794\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: migrate off the deprecated events API to use the logs API\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3624\"\u003e#3624\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: fix crash retrieving libpq version when enabling commenter with psycopg\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3796\"\u003e#3796\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix handling of APIRoute subclasses\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3681\"\u003e#3681\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-botocore\u003c/code\u003e: Add support for AWS Secrets Manager semantic convention attribute\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3765\"\u003e#3765\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Add support for \u003ccode\u003ecommenter_options\u003c/code\u003e in \u003ccode\u003etrace_integration\u003c/code\u003e function to control SQLCommenter behavior\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3743\"\u003e#3743\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3777\"\u003e#3777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-exporter-credential-provider-gcp\u003c/code\u003e: create this package which provides support for supplying your machine's Application Default\nCredentials (\u003ca href=\"https://cloud.google.com/docs/authentication/application-default-credentials\"\u003ehttps://cloud.google.com/docs/authentication/application-default-credentials\u003c/a\u003e) to the OTLP Exporters created automatically by OpenTelemetry Python's auto instrumentation. These credentials authorize OTLP traces to be sent to \u003ccode\u003etelemetry.googleapis.com\u003c/code\u003e. \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3766\"\u003e#3766\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-psycopg\u003c/code\u003e: Add missing parameter \u003ccode\u003ecapture_parameters\u003c/code\u003e to instrumentor.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3676\"\u003e#3676\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-dbapi\u003c/code\u003e: Adds sqlcommenter to documentation.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3720\"\u003e#3720\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003ch3\u003eFixed\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix middleware ordering to cover all exception handling use cases.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e: Make all user hooks failsafe and record exceptions in hooks.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3664\"\u003e#3664\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fix memory leak in \u003ccode\u003euninstrument_app()\u003c/code\u003e by properly removing apps from the tracking set\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3688\"\u003e#3688\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e Fix server (request) duration metric calculation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3679\"\u003e#3679\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-tornado\u003c/code\u003e: Fix to properly skip all server telemetry when URL excluded.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3680\"\u003e#3680\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation\u003c/code\u003e: Avoid calls to \u003ccode\u003econtext.detach\u003c/code\u003e with \u003ccode\u003eNone\u003c/code\u003e token.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3673\"\u003e#3673\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-starlette\u003c/code\u003e/\u003ccode\u003eopentelemetry-instrumentation-fastapi\u003c/code\u003e: Fixes a crash when host-based routing is used\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3507\"\u003e#3507\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eFix documentation order of sections and headers for Django, Flask, MySQL, mysqlclient, psycopg, psycopg2, pymysql, sqlalchemy instrumentations.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3719\"\u003e#3719\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ccode\u003eopentelemetry-instrumentation-asgi\u003c/code\u003e Fixed an issue where FastAPI reports IP instead of URL.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python-contrib/pull/3670\"\u003e#3670\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.30.0 to 1.38.0\n\u003cdetails\u003e\n\u003csummary\u003eChangelog\u003c/summary\u003e\n\u003cp\u003e\u003cem\u003eSourced from \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/blob/main/CHANGELOG.md\"\u003eopentelemetry-exporter-otlp-proto-grpc's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003eVersion 1.38.0/0.59b0 (2025-10-16)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd \u003ccode\u003erstcheck\u003c/code\u003e to pre-commit to stop introducing invalid RST\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: extend Logger.emit to accept separated keyword arguments\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003elogs: add warnings for classes that would be deprecated and renamed in 1.39.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.37.0/0.58b0 (2025-09-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd experimental composite samplers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4714\"\u003e#4714\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdd new environment variables to the SDK \u003ccode\u003eOTEL_PYTHON_EXPORTER_OTLP_{HTTP/GRPC}_{METRICS/TRACES/LOGS}_CREDENTIAL_PROVIDER\u003c/code\u003e that can be used to\ninject a \u003ccode\u003erequests.Session\u003c/code\u003e or \u003ccode\u003egrpc.ChannelCredentials\u003c/code\u003e object into OTLP exporters created during auto instrumentation \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4689\"\u003e#4689\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eFilter duplicate logs out of some internal \u003ccode\u003elogger\u003c/code\u003e's logs on the export logs path that might otherwise endlessly log or cause a recursion depth exceeded issue in cases where logging itself results in an exception.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4695\"\u003e#4695\u003c/a\u003e).\u003c/li\u003e\n\u003cli\u003edocs: linked the examples with their github source code location and added Prometheus example\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4728\"\u003e#4728\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePermit to override default HTTP OTLP exporters headers\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4634\"\u003e#4634\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esemantic-conventions: Bump to 1.37.0\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4731\"\u003e#4731\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix handling of OTEL_ATTRIBUTE_COUNT_LIMIT in logs\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4677\"\u003e#4677\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ePerformance: Cache \u003ccode\u003eimportlib_metadata.entry_points\u003c/code\u003e\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4735\"\u003e#4735\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eopentelemetry-sdk: fix calling Logger.emit with an API LogRecord instance\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4741\"\u003e#4741\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.36.0/0.57b0 (2025-07-29)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\n\u003cp\u003eAdd missing Prometheus exporter documentation\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4485\"\u003e#4485\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eOverwrite logging.config.fileConfig and logging.config.dictConfig to ensure\nthe OTLP \u003ccode\u003eLogHandler\u003c/code\u003e remains attached to the root logger. Fix a bug that\ncan cause a deadlock to occur over \u003ccode\u003elogging._lock\u003c/code\u003e in some cases (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4636\"\u003e#4636\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eotlp-http-exporter: set default value for param \u003ccode\u003etimeout_sec\u003c/code\u003e in \u003ccode\u003e_export\u003c/code\u003e method\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4691\"\u003e#4691\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\n\u003cp\u003eUpdate OTLP gRPC/HTTP exporters: calling shutdown will now interrupt exporters that are sleeping\nbefore a retry attempt, and cause them to return failure immediately.\nUpdate BatchSpan/LogRecordProcessors: shutdown will now complete after 30 seconds of trying to finish\nexporting any buffered telemetry, instead of continuing to export until all telemetry was exported.\n(\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4638\"\u003e#4638\u003c/a\u003e).\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003eVersion 1.35.0/0.56b0 (2025-07-11)\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpdate OTLP proto to v1.7 \u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/pull/4645\"\u003e#4645\u003c/a\u003e.\u003c/li\u003e\n\u003cli\u003eAdd \u003ccode\u003eevent_name\u003c/code\u003e as a top level field in the \u003ccode\u003eLogRecord\u003c/code\u003e. Events are now simply logs with 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\u003eCommits\u003c/summary\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1f68134481c46e476a127b61a36dc69889275d15\"\u003e\u003ccode\u003e1f68134\u003c/code\u003e\u003c/a\u003e Prepare release 1.38.0/0.59b0 (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4777\"\u003e#4777\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/f1de47ff906f4b449f8c2c83b54957e657f1a962\"\u003e\u003ccode\u003ef1de47f\u003c/code\u003e\u003c/a\u003e Warnings before removals (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4771\"\u003e#4771\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/1797c1df54983617e4690674f3a588bfaf676874\"\u003e\u003ccode\u003e1797c1d\u003c/code\u003e\u003c/a\u003e docs (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4774\"\u003e#4774\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/daae23bc7f5514003d1e262730c409875d12d77d\"\u003e\u003ccode\u003edaae23b\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: be less picky about deprecated LogRecord interface (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4762\"\u003e#4762\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/da155941bf1d459e7a3049c7e3ea7f1139650a49\"\u003e\u003ccode\u003eda15594\u003c/code\u003e\u003c/a\u003e Fixup LogRecord.emit signature (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4737\"\u003e#4737\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/b63f643a4ae530b69ee8031076da14dc3d36344c\"\u003e\u003ccode\u003eb63f643\u003c/code\u003e\u003c/a\u003e Add \u003ccode\u003eexporter/opentelemetry-exporter-otlp-proto-grpc\u003c/code\u003e to the pyright include ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/6f97ed8482610f70ad6c295d1c14a21af7bc3417\"\u003e\u003ccode\u003e6f97ed8\u003c/code\u003e\u003c/a\u003e Add rstcheck to pre-commit (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4755\"\u003e#4755\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/5c8269c2d33617cca26c63e8627aec89e0d79b17\"\u003e\u003ccode\u003e5c8269c\u003c/code\u003e\u003c/a\u003e removed references to batch processor (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4751\"\u003e#4751\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/e75b0ab749020b5c58502b08026b2825641b8c05\"\u003e\u003ccode\u003ee75b0ab\u003c/code\u003e\u003c/a\u003e Update version to 1.38.0.dev/0.59b0.dev (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4744\"\u003e#4744\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/commit/359f4368f1df832cfb5f7853ae721d4748d06cad\"\u003e\u003ccode\u003e359f436\u003c/code\u003e\u003c/a\u003e opentelemetry-sdk: fix formatting (\u003ca href=\"https://redirect.github.com/open-telemetry/opentelemetry-python/issues/4746\"\u003e#4746\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/open-telemetry/opentelemetry-python/compare/v1.30.0...v1.38.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.0.1 to 1.2.1\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.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eSupport reading .env 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/pull/586\"\u003etheskumar/python-dotenv#586\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUpdate CI to use trusted publishing on PyPI\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/sidharth-sudhir\"\u003e\u003ccode\u003e@​sidharth-sudhir\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/586\"\u003etheskumar/python-dotenv#586\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.0...v1.2.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.2.0...v1.2.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.2.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003estyle: upgrade to use ruff 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/567\"\u003etheskumar/python-dotenv#567\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eUse sys.exit() instead of exit() 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/568\"\u003etheskumar/python-dotenv#568\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efeat:  add \u003ccode\u003ePYTHON_DOTENV_DISABLED\u003c/code\u003e flag to disable load_dotenv (fixes \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/510\"\u003e#510\u003c/a\u003e) 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/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdded Python@3.14: Github CI \u0026amp; tox.ini 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/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eocs: clarify what load_dotenv() does in README by \u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group across 1 directory with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e[bot] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/577\"\u003etheskumar/python-dotenv#577\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eMove project metadata and config to pyproject.toml 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/pull/583\"\u003etheskumar/python-dotenv#583\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/matthewfranglen\"\u003e\u003ccode\u003e@​matthewfranglen\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/569\"\u003etheskumar/python-dotenv#569\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/23f3001135\"\u003e\u003ccode\u003e@​23f3001135\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/579\"\u003etheskumar/python-dotenv#579\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cybercoded\"\u003e\u003ccode\u003e@​cybercoded\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/575\"\u003etheskumar/python-dotenv#575\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EpicWink\"\u003e\u003ccode\u003e@​EpicWink\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/583\"\u003etheskumar/python-dotenv#583\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.1.1...v1.2.0\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.1...v1.2.0\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.1\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003efix: ensure find_dotenv 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/pull/563\"\u003etheskumar/python-dotenv#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003efix(cli): issue with execvpe on Windows by \u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e made their first contribution in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003etheskumar/python-dotenv#566\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.1.0...v1.1.1\"\u003ehttps://github.com/theskumar/python-dotenv/compare/v1.1.0...v1.1.1\u003c/a\u003e\u003c/p\u003e\n\u003ch2\u003ev1.1.0\u003c/h2\u003e\n\u003ch2\u003eWhat's Changed\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eAdd a security policy 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/512\"\u003etheskumar/python-dotenv#512\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eKeep GitHub Actions up to date with GitHub's Dependabot by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/506\"\u003etheskumar/python-dotenv#506\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: fix multiline string in test.yml \u0026amp; use fail-fast strategy by \u003ca href=\"https://github.com/cclauss\"\u003e\u003ccode\u003e@​cclauss\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/514\"\u003etheskumar/python-dotenv#514\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eEnhance dotenv run: Switch to execvpe for better resource management and signal handling by \u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/523\"\u003etheskumar/python-dotenv#523\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eci: add py3.13 to test.yml by \u003ca href=\"https://github.com/waketzheng\"\u003e\u003ccode\u003e@​waketzheng\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/527\"\u003etheskumar/python-dotenv#527\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd Python 3.13 trove classifier by \u003ca href=\"https://github.com/edgarrmondragon\"\u003e\u003ccode\u003e@​edgarrmondragon\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/535\"\u003etheskumar/python-dotenv#535\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eBump the github-actions group with 2 updates by \u003ca href=\"https://github.com/dependabot\"\u003e\u003ccode\u003e@​dependabot\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/529\"\u003etheskumar/python-dotenv#529\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eAdd support for python 3.13 and drop 3.8 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/551\"\u003etheskumar/python-dotenv#551\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003edocs: Update README.md by \u003ca href=\"https://github.com/chapeupreto\"\u003e\u003ccode\u003e@​chapeupreto\u003c/code\u003e\u003c/a\u003e in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/516\"\u003etheskumar/python-dotenv#516\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eSome more s/Python-dotenv/python-dotenv/ 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/552\"\u003etheskumar/python-dotenv#552\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/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.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/pull/563\"\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/pull/563\"\u003e#563\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCLI: revert the use of execvpe on Windows by [\u003ca href=\"https://github.com/wrongontheinternet\"\u003e\u003ccode\u003e@​wrongontheinternet\u003c/code\u003e\u003c/a\u003e] in \u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/pull/566\"\u003e#566\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e[1.1.0] - 2025-03-25\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eFeature\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eAdd support for python 3.13\u003c/li\u003e\n\u003cli\u003eEnhance \u003ccode\u003edotenv run\u003c/code\u003e, switch to \u003ccode\u003eexecvpe\u003c/code\u003e for better resource management and signal handling (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/523\"\u003e#523\u003c/a\u003e) by [\u003ca href=\"https://github.com/eekstunt\"\u003e\u003ccode\u003e@​eekstunt\u003c/code\u003e\u003c/a\u003e]\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eFixed\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003efind_dotenv\u003c/code\u003e and \u003ccode\u003eload_dotenv\u003c/code\u003e now correctly looks up at the current directory when running in debugger or pdb (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/553\"\u003e#553\u003c/a\u003e by [\u003ca href=\"https://github.com/randomseed42\"\u003e\u003ccode\u003e@​randomseed42\u003c/code\u003e\u003c/a\u003e])\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003e\u003cstrong\u003eMisc\u003c/strong\u003e\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eDrop support for Python 3.8\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/eaf2a9129ccec6febda0f741eb3bb852c3f947bd\"\u003e\u003ccode\u003eeaf2a91\u003c/code\u003e\u003c/a\u003e Do not remove .coverage file\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8716196891532eeb67d24a513e8d975437f5e8b7\"\u003e\u003ccode\u003e8716196\u003c/code\u003e\u003c/a\u003e Bump version: 1.2.0 → 1.2.1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/b87807fcad6e74332c3c63a75c92ce5814fa7a55\"\u003e\u003ccode\u003eb87807f\u003c/code\u003e\u003c/a\u003e Update changelog\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/3af77d3029eb717aeec0a3c25f751b6a614a6d3c\"\u003e\u003ccode\u003e3af77d3\u003c/code\u003e\u003c/a\u003e Support reading .env from FIFOs (Unix) (\u003ca href=\"https://redirect.github.com/theskumar/python-dotenv/issues/586\"\u003e#586\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/467ee22fccb2fb7ccda71a0d9e37c6ea3cb8d993\"\u003e\u003ccode\u003e467ee22\u003c/code\u003e\u003c/a\u003e Fix test failures after moving config to pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/76999e741d87e958ebd74e3ae9834c0514e77a59\"\u003e\u003ccode\u003e76999e7\u003c/code\u003e\u003c/a\u003e Move more config pyproject.toml\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/222ce2cc58ebc82ba78da8781269267b9f585932\"\u003e\u003ccode\u003e222ce2c\u003c/code\u003e\u003c/a\u003e Update to use trusted publisher on pypi\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/8ed4f79d202eba582b44bdf1f5deb726dd68783d\"\u003e\u003ccode\u003e8ed4f79\u003c/code\u003e\u003c/a\u003e Update docs requirements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/5bf882241c607445bf02cf5b241535d62e2b99c1\"\u003e\u003ccode\u003e5bf8822\u003c/code\u003e\u003c/a\u003e Bump version: 1.1.1 → 1.2.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/theskumar/python-dotenv/commit/1fe11cc737ee4399e9c51d1b69b0dd858f6b4669\"\u003e\u003ccode\u003e1fe11cc\u003c/code\u003e\u003c/a\u003e upadate changelog\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/theskumar/python-dotenv/compare/v1.0.1...v1.2.1\"\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.2.1 to 4.0.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.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).\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\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/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\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v3.3.0\"\u003e3.3.0\u003c/a\u003e - 2025-03-06\u003c/h2\u003e\n\u003ch3\u003eAdded\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003ccode\u003eexc_info_as_array\u003c/code\u003e and \u003ccode\u003estack_info_as_array\u003c/code\u003e options are added to \u003ccode\u003epythonjsonlogger.core.BaseJsonFormatter\u003c/code\u003e allowing both to be encoded as list of lines instead of a single multi-line string. \u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/35\"\u003e#35\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003eSecurity\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eRemove \u003ccode\u003emsgspec-python313-pre\u003c/code\u003e from \u003ccode\u003edev\u003c/code\u003e dependencies preventing potential RCE. Details: \u003ca href=\"https://github.com/nhairs/python-json-logger/security/advisories/GHSA-wmxh-pxcx-9w24#advisory-comment-121307\"\u003eGHSA-wmxh-pxcx-9w24\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eThanks \u003ca href=\"https://github.com/1hakusai1\"\u003e\u003ccode\u003e@​1hakusai1\u003c/code\u003e\u003c/a\u003e and \u003ca href=\"https://github.com/omnigodz\"\u003e\u003ccode\u003e@​omnigodz\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/defed00ecccfdf60a3ca37b01c71d07ce1780b4f\"\u003e\u003ccode\u003edefed00\u003c/code\u003e\u003c/a\u003e Release 4.0.0\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/c10f1c219f3ad7ef84381c818313c0b0eb4d52a3\"\u003e\u003ccode\u003ec10f1c2\u003c/code\u003e\u003c/a\u003e [docs] Fix changelog formatting\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ce8268cc1c417c717f68081c68c2eec65bd87454\"\u003e\u003ccode\u003ece8268c\u003c/code\u003e\u003c/a\u003e Release version 4.0.0.rc1\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/a8eca471900aaf520f004d89c32db68dd9d8c16f\"\u003e\u003ccode\u003ea8eca47\u003c/code\u003e\u003c/a\u003e [core] Support sequence of strings for Formatter fmt (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/55\"\u003e#55\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/b53b9303fa5fa7d43d3b3cff4c5937fcbb012ef4\"\u003e\u003ccode\u003eb53b930\u003c/code\u003e\u003c/a\u003e [core] Add support for comma format (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/54\"\u003e#54\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0428e2b2e06013ac0c2213411815194a2b9338aa\"\u003e\u003ccode\u003e0428e2b\u003c/code\u003e\u003c/a\u003e [core] Rename LogRecord/log_record to LogData/log_data  (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/53\"\u003e#53\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/ac108d9eb09942a9914f17f45b61bad95d697de8\"\u003e\u003ccode\u003eac108d9\u003c/code\u003e\u003c/a\u003e [core,json,orjson,msgspec] Remove use of str_to_object (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/52\"\u003e#52\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/0843f5294373153864694a8299e5a8cc639bba42\"\u003e\u003ccode\u003e0843f52\u003c/code\u003e\u003c/a\u003e [docs] Update version added for exc_info_as_array, stack_info_as_array (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/60\"\u003e#60\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/f36b8b59590b098e7e1a0998931e1576412722c6\"\u003e\u003ccode\u003ef36b8b5\u003c/code\u003e\u003c/a\u003e [docs] Add style guide (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/58\"\u003e#58\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nhairs/python-json-logger/commit/03ad4d1b15c2355e559e73e30bc37ccf5cd776ca\"\u003e\u003ccode\u003e03ad4d1\u003c/code\u003e\u003c/a\u003e [docs] Update documentation (\u003ca href=\"https://redirect.github.com/nhairs/python-json-logger/issues/57\"\u003e#57\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAdditional commits viewable in \u003ca href=\"https://github.com/nhairs/python-json-logger/compare/v3.2.1...v4.0.0\"\u003ecompare view\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/details\u003e\n\u003cbr /\u003e\n\nUpdates `openfeature-sdk` from 0.8.0 to 0.8.3\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/releases\"\u003eopenfeature-sdk's releases\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003ev0.8.3\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003ev0.8.2\u003c/h2\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\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/open-feature/python-sdk/blob/main/CHANGELOG.md\"\u003eopenfeature-sdk's changelog\u003c/a\u003e.\u003c/em\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.2...v0.8.3\"\u003e0.8.3\u003c/a\u003e (2025-09-21)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003efix type hints of EvaluationContext and HookHints (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/535\"\u003e#535\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/de371444b33b66ad0e6eb5c09224554c14aa5731\"\u003ede37144\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003einvalid type alias for EvaluationContextAttributes (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/534\"\u003e#534\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/0e0f018272bdf987b1e50a9190cd3b4585d3f9b1\"\u003e0e0f018\u003c/a\u003e), closes \u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/532\"\u003e#532\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd hook data (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/533\"\u003e#533\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/92f5da492ebc75d28a353316d0f151f62bcd59b7\"\u003e92f5da4\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003eadd missing stateless provider tests (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/531\"\u003e#531\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/74409bf06ced4a218ebc01fd83ea20e480b34a09\"\u003e74409bf\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update pre-commit hook pre-commit/mirrors-mypy to v1.17.1 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/528\"\u003e#528\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/9d0cbe8d4af95218f41d4e2dcb8e419b9639c825\"\u003e9d0cbe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eremove shell flag usage in project scripts (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/538\"\u003e#538\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/81a1d95e682f20d23ec03418fb8f5464cc747fdf\"\u003e81a1d95\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003ereplace deprecated typing aliases (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/537\"\u003e#537\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/837fef943e9585640975258ccf0d095faacf740b\"\u003e837fef9\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003esupport Python 3.14 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/530\"\u003e#530\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/32fdec178122d0838e8e776ba30f2dd722b21233\"\u003e32fdec1\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eupdate mypy and ruff (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/536\"\u003e#536\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/b418cb0e331fb1ce453eb29191cc899bd347a6dd\"\u003eb418cb0\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2\u003e\u003ca href=\"https://github.com/open-feature/python-sdk/compare/v0.8.1...v0.8.2\"\u003e0.8.2\u003c/a\u003e (2025-07-30)\u003c/h2\u003e\n\u003ch3\u003e🐛 Bug Fixes\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003emerge transaction context into hook context evaluation context (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/521\"\u003e#521\u003c/a\u003e) (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/523\"\u003e#523\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a5b3aa9c5213dda311068695f9209282f5faaff5\"\u003ea5b3aa9\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e✨ New Features\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003estarting migration to uv (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/512\"\u003e#512\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/fb47cbb2a51da9154adf977aad0b16575d227c33\"\u003efb47cbb\u003c/a\u003e)\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch3\u003e🧹 Chore\u003c/h3\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e pin astral-sh/setup-uv action to bd01e18 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/514\"\u003e#514\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/6da7890ac6488bccf640f74bdc530fa9ce8bbec3\"\u003e6da7890\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update actions/setup-python digest to a26af69 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/489\"\u003e#489\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/ad69f2c55f3c8170a8a53981238130eb106207ba\"\u003ead69f2c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update astral-sh/setup-uv digest to 7edac99 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/524\"\u003e#524\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/5652c0c457cc5a524e91405f3b229cf245ae4531\"\u003e5652c0c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.2 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/486\"\u003e#486\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/798ac8ded00b8509068003367f36e6c04c574cbc\"\u003e798ac8d\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update codecov/codecov-action action to v5.4.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/497\"\u003e#497\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/7bb0f5e499ff8e0985b24696d0680251c90af32b\"\u003e7bb0f5e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 181d5ee (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/517\"\u003e#517\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/a04e52c0224a6c1c269218df050ce7a56076211d\"\u003ea04e52c\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 28deaed (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/488\"\u003e#488\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/e0de4b2faa109454a8079b934320f1c2b2b2b06e\"\u003ee0de4b2\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 39edc49 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/515\"\u003e#515\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/21ef53a156b17ce24db79c75b5bbfeaf2bd77f01\"\u003e21ef53a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to 60168ef (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/492\"\u003e#492\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/8aedfe81ef67af3210ea9921e6b364fdd21ef8ac\"\u003e8aedfe8\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ce28f5b (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/508\"\u003e#508\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/4628c24f5c94821aecb06388703173bd5a8efc30\"\u003e4628c24\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to fca7ace (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/505\"\u003e#505\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/347517a7ccaf145a940fc6e2a37a8d1df621f3a3\"\u003e347517a\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003edeps:\u003c/strong\u003e update github/codeql-action digest to ff0a06e (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/498\"\u003e#498\u003c/a\u003e) (\u003ca href=\"https://github.com/open-feature/python-sdk/commit/c722cf0239f2b9b95a1214b99447a9316c2c73d8\"\u003ec722cf0\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-feature/python-sdk/commit/2d78d33d8a0e63c80c9ef330debd77fe80d3445f\"\u003e\u003ccode\u003e2d78d33\u003c/code\u003e\u003c/a\u003e chore(main): release 0.8.3 (\u003ca href=\"https://redirect.github.com/open-feature/python-sdk/issues/529\"\u003e#529\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.c...\n\n_Description has been truncated_","html_url":"https://github.com/martinmclarnon/opentelemetry-demo-slo-improvement/pull/59","url":"https://dependabot.ecosyste.ms/api/v1/hosts/GitHub/repositories/martinmclarnon%2Fopentelemetry-demo-slo-improvement/issues/59","packages_url":"https://dependabot.ecosyste.ms/api/v1/issues/59/packages"}}]}