Skip to content

Conversation

@Julien-Ben
Copy link
Collaborator

@Julien-Ben Julien-Ben commented Jul 29, 2025

Re-design images building

Note for review:

Since atomic_pipeline.py is largely a refactored version of pipeline.py, it’s much clearer to review their side-by-side diff than to wade through GitHub’s “all new lines” view.
Here's the diff:

https://gist.github.com/Julien-Ben/3698d532d17bafb380f2e4f05b5db153

You can also take a look at the related TD Section

Changes

The PR refactors our Docker image build system. Most notably by replacing pipeline.py along with other components, detailed below.

Usage of standalone Dockerfiles

Added in a previous PR, they eliminate the need for templating, and make it possible to retire Sonar once the Atomic Releases Epic is completed.

Building with docker buildx, multi-platform builds

In build_images.py we use docker buildx through a python API. It eliminates the need for building images separately for each platform (ARM/AMD), and then manually bundling them in a manifest.

Handle build environments explicitly

We’ve introduced a framework that centralizes build configuration by scenario (e.g local development, staging releases etc) so the pipeline automatically picks sensible defaults (registry, target platforms, signing flags, and more) based on where you’re running.

In pipeline_main.py (with support from build_configuration.py and build_context.py) we treat each execution context (local dev, merge to master, release etc...) as an explicit, top-level environment.
It infers defaults automatically but lets you override any value via CLI flags, ensuring all build parameters live in one single source of truth rather than scattered through pipeline scripts.

CLI usage

usage: pipeline_main.py [-h] [--parallel] [--debug] [--sign] [--scenario {BuildScenario.RELEASE,BuildScenario.PATCH,BuildScenario.STAGING,BuildScenario.DEVELOPMENT}] [--platform PLATFORM] [--version VERSION] [--registry REGISTRY] [--parallel-factor PARALLEL_FACTOR] image Build container images. positional arguments: image Image to build. options: -h, --help show this help message and exit --parallel Build images in parallel. --debug Enable debug logging. --sign Sign images. --scenario {BuildScenario.RELEASE,BuildScenario.PATCH,BuildScenario.STAGING,BuildScenario.DEVELOPMENT} Override the build scenario instead of inferring from environment. Options: release, patch, master, development --platform PLATFORM Target platforms for multi-arch builds (comma-separated). Example: linux/amd64,linux/arm64. Defaults to linux/amd64. --version VERSION Override the version/tag instead of resolving from build scenario --registry REGISTRY Override the base registry instead of resolving from build scenario --parallel-factor PARALLEL_FACTOR Number of builds to run in parallel, defaults to number of cores 

Proof of work

CI is building images with the new pipeline, and tests pass.

Note

For the duration of the Atomic Releases epic, both pipelines will be in the repository, until we are done with the staging and promotion process. This new pipeline will only be used for Evergreen patches.
This PR also heavily depends on changes that are introduced by the agent matrix removal, and the multi-platform support epic.

The existing Evergreen function, that uses pipeline.py has been renamed legacy_pipeline, and is used for release and periodic builds tasks.
A new one has been created, calling the new pipeline.

Once the Atomic Release Epic is complete, we'll be able to remove:

  • Sonar
  • Inventories
  • Periodic builds
  • pipeline.py

Follow up ticket to this PR: https://jira.mongodb.org/browse/CLOUDP-335471

Checklist

  • Have you linked a jira ticket and/or is the ticket in the title?
  • Have you checked whether your jira ticket required DOCSP changes?
  • Have you added changelog file?
@github-actions
Copy link

github-actions bot commented Jul 29, 2025

⚠️ (this preview might not be accurate if the PR is not rebased on current master branch)

MCK 1.3.0 Release Notes

Other Changes

  • Optional permissions for PersistentVolumeClaim moved to a separate role. When managing the operator with Helm it is possible to disable permissions for PersistentVolumeClaim resources by setting operator.enablePVCResize value to false (true by default). When enabled, previously these permissions were part of the primary operator role. With this change, permissions have a separate role.
  • subresourceEnabled Helm value was removed. This setting used to be true by default and made it possible to exclude subresource permissions from the operator role by specifying false as the value. We are removing this configuration option, making the operator roles always have subresource permissions. This setting was introduced as a temporary solution for this OpenShift issue. The issue has since been resolved and the setting is no longer needed.
@Julien-Ben Julien-Ben force-pushed the julienben/redesign-pipeline branch from d7ae339 to 6649987 Compare July 29, 2025 15:30
Fix build scenario Remove create and push manifests Continue improvement to main Simplify main and build_context missed Pass Build Configuration object directly Use legacy and new pipeline Fix Remove --include Rename MCO test image Multi platform builds, with buildx TODOs Implement is_release_step_executed() Fix init appdb image Import sort black formatting Some cleaning and version adjustments Adapt main to new build config Add buildscenario to buildconfig Handle build env Renaming, usage of high level config All images build pass on EVG Lint Explicit image type, support custom build_path Replace old by new pipeline in EVG Add documentation Split in multiple files, cleanup WIP, passing builds on staging temp + multi arch manifests Replace usage of sonar Remove namespace Remove pin_at and build_id Copied pipeline, removed daily builds and --exclude
@Julien-Ben Julien-Ben self-assigned this Jul 29, 2025
@Julien-Ben
Copy link
Collaborator Author

How will this be merged with Maciej's changes (the release_info file)?

Maciej answered above, but I also plan to sync with him as soon as this is merged, to properly rebase and wire everything togetger

def infer_scenario_from_environment(cls) -> "BuildScenario":
"""Infer the build scenario from environment variables."""
git_tag = os.getenv("triggered_by_git_tag")
is_patch = os.getenv("is_patch", "false").lower() == "true"
Copy link
Contributor

@lucian-tosa lucian-tosa Aug 8, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So this is true only when triggering manual patches or PR commits? Will it be false on merges to master?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I made it more explicit, and we'll make proper use of staging registry in a follow up:
2ec7587

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was referring to the is_patch variable from evergreen. This is what I found from the devprod docs

${is_patch} is "true" if the running task is in a patch build and undefined if it is not.

Does this mean that is_patch will be false in a merge to master?

@anandsyncs anandsyncs removed their request for review August 8, 2025 08:39
logger.info(f"Created new buildx builder: {builder_name}")
except DockerException as e:
# Check if this is a race condition (another process created the builder)
if hasattr(e, 'stderr') and 'existing instance for' in str(e.stderr):
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@nammn @lucian-tosa @MaciejKaras

I'd like your opinion on two solutions here
This function is sometimes failing when building multiple agents concurrently.
I tried two alternatives:

  • Catching the exception
  • Use ensure_buildx_builder at top leven, in the pipeline_main

None of them are ideal. Using exception is not the right way of handling concurrency. Making the main aware of buildx increase coupling.
My knowledge of python multiprocessing is limited. I know that for multi threading it is easy to make a lock with a global variable and threading.Lock() . From what I've seen online, for multi processing we would need to pass the lock from the agent building method all the way down to here.
I feel like it adds a lot of complexity and optional variables.

What solutions do you prefer ?
Do you see an alternative ?

Here is the alternative solution with ensuring builder in main:
1badff0


logger.info(f"Building {image_name}, dockerfile args: {build_args}")
logger.debug(f"Build args: {build_args}")
logger.debug(f"Building {image_name} for platforms={build_configuration.platforms}")
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since we have the span already setup here - can we save the span attributes as we already log them anyway?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it should really be done as a follow up, it might look like one minute but I have no idea how to properly setup spans.
The scope of this PR is getting quite large

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's listed in the follow up ticket
https://jira.mongodb.org/browse/CLOUDP-335471

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you don't have to setup anything. All you need to do is already there.
its
span.set_attribute("mck.platforms", build_configuration.platforms)
span.set_attribute("mck.registry", registry)

and the same everywhere...

return builder_name


def execute_docker_build(
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

or here - i think adding tracing costs 1 minute and saves us all the troubles later.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

especially since you are logging the exact information we need as metrics anyway

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think it should really be done as a follow up, it might look like one minute but I have no idea how to properly setup spans.
The scope of this PR is getting quite large

@Julien-Ben Julien-Ben merged commit 3e482c3 into master Aug 8, 2025
30 of 33 checks passed
@Julien-Ben Julien-Ben deleted the julienben/redesign-pipeline branch August 8, 2025 14:49
MaciejKaras added a commit that referenced this pull request Aug 11, 2025
…ros propagation (#328) # Summary Fixes issue with conflicting `Dockerfile` files on master. Sonar is creating Dockerfiles in the directory where new Dockerfile existed already. They were added here -> #289. Additionally another PR #267 made changes to how the agent images were built and especially to agent Dockerfile ARGs: https://github.com/mongodb/mongodb-kubernetes/blob/89866b79233745e27ade51dc2d9fd0e73c6124e5/docker/mongodb-agent/Dockerfile#L3-L6 This conflicted with #303 where new `atomic_pipeline.py` was still depending on the old Dockerfile structure: https://github.com/mongodb/mongodb-kubernetes/blob/774bbaca930a1752060cfe5e5bf60f24cd6c999c/docker/mongodb-agent/Dockerfile#L25-L26 ## Proof of Work Passing CI (especially agent build task) ## Checklist - [ ] Have you linked a jira ticket and/or is the ticket in the title? - [ ] Have you checked whether your jira ticket required DOCSP changes? - [x] Have you added changelog file? - use `skip-changelog` label if not needed - refer to [Changelog files and Release Notes](https://github.com/mongodb/mongodb-kubernetes/blob/master/CONTRIBUTING.md#changelog-files-and-release-notes) section in CONTRIBUTING.md for more details
MaciejKaras added a commit that referenced this pull request Aug 12, 2025
# Summary This PR focuses on using `build_info.json` information in `atomic_pipeline.py` code. The logic is mostly hidden in `image_build_config_from_args` function. It is binding the parts from: - #303 - atomic pipeline for building images - #307 - `build_info.json` with information for building images [Section in Atomic Releases TD](https://docs.google.com/document/d/1eJ8iKsI0libbpcJakGjxcPfbrTn8lmcZDbQH1UqMR_g/edit?tab=t.p76ry15gwmkk#heading=h.23xqxc1qypvb) that describes the `build_info.json` and how it is used in the image building process. - Added signing configuration in `build_info.json` - Added missing `meko-tests` and `mco-tests` images in `build_info.json` - Added configuration for `agent` and `ops-manager` images in `build_info.json` - Moved `images_signing.py` from `scripts/evergreen/release` - Simplifications in the existing code ## Proof of Work CI tests passing + updated unit tests ## Checklist - [ ] Have you linked a jira ticket and/or is the ticket in the title? - [ ] Have you checked whether your jira ticket required DOCSP changes? - [ ] Have you added changelog file? - use `skip-changelog` label if not needed - refer to [Changelog files and Release Notes](https://github.com/mongodb/mongodb-kubernetes/blob/master/CONTRIBUTING.md#changelog-files-and-release-notes) section in CONTRIBUTING.md for more details --------- Co-authored-by: Julien Benhaim <julien.benhaim@mongodb.com>
MaciejKaras pushed a commit that referenced this pull request Sep 24, 2025
Bumps the pip-deps group with 16 updates in the / directory: | Package | From | To | | --- | --- | --- | | [requests](https://github.com/psf/requests) | `2.32.4` | `2.32.5` | | ruamel-yaml | `0.18.14` | `0.18.15` | | [pymongo](https://github.com/mongodb/mongo-python-driver) | `4.14.0` | `4.15.1` | | [pytest](https://github.com/pytest-dev/pytest) | `8.4.1` | `8.4.2` | | [pytest-asyncio](https://github.com/pytest-dev/pytest-asyncio) | `1.1.0` | `1.2.0` | | [cryptography](https://github.com/pyca/cryptography) | `45.0.6` | `46.0.1` | | [black](https://github.com/psf/black) | `25.1.0` | `25.9.0` | | [pytest-mock](https://github.com/pytest-dev/pytest-mock) | `3.14.1` | `3.15.1` | | [wrapt](https://github.com/GrahamDumpleton/wrapt) | `1.17.2` | `1.17.3` | | [botocore](https://github.com/boto/botocore) | `1.40.7` | `1.40.36` | | [boto3](https://github.com/boto/boto3) | `1.40.7` | `1.40.36` | | [mypy](https://github.com/python/mypy) | `1.17.1` | `1.18.2` | | [types-pyyaml](https://github.com/typeshed-internal/stub_uploader) | `6.0.12.20250809` | `6.0.12.20250915` | | [types-python-dateutil](https://github.com/typeshed-internal/stub_uploader) | `2.9.0.20250809` | `2.9.0.20250822` | | [pytest-cov](https://github.com/pytest-dev/pytest-cov) | `6.2.1` | `7.0.0` | | [pytest-rerunfailures](https://github.com/pytest-dev/pytest-rerunfailures) | `16.0` | `16.0.1` | Updates `requests` from 2.32.4 to 2.32.5 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/psf/requests/releases">requests's releases</a>.</em></p> <blockquote> <h2>v2.32.5</h2> <h2>2.32.5 (2025-08-18)</h2> <p><strong>Bugfixes</strong></p> <ul> <li>The SSLContext caching feature originally introduced in 2.32.0 has created a new class of issues in Requests that have had negative impact across a number of use cases. The Requests team has decided to revert this feature as long term maintenance of it is proving to be unsustainable in its current iteration.</li> </ul> <p><strong>Deprecations</strong></p> <ul> <li>Added support for Python 3.14.</li> <li>Dropped support for Python 3.8 following its end of support.</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psf/requests/blob/main/HISTORY.md">requests's changelog</a>.</em></p> <blockquote> <h2>2.32.5 (2025-08-18)</h2> <p><strong>Bugfixes</strong></p> <ul> <li>The SSLContext caching feature originally introduced in 2.32.0 has created a new class of issues in Requests that have had negative impact across a number of use cases. The Requests team has decided to revert this feature as long term maintenance of it is proving to be unsustainable in its current iteration.</li> </ul> <p><strong>Deprecations</strong></p> <ul> <li>Added support for Python 3.14.</li> <li>Dropped support for Python 3.8 following its end of support.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psf/requests/commit/b25c87d7cb8d6a18a37fa12442b5f883f9e41741"><code>b25c87d</code></a> v2.32.5</li> <li><a href="https://github.com/psf/requests/commit/131e506079d97606e4214cc4d87b780ac478de7a"><code>131e506</code></a> Merge pull request <a href="https://redirect.github.com/psf/requests/issues/7010">#7010</a> from psf/dependabot/github_actions/actions/checkout-...</li> <li><a href="https://github.com/psf/requests/commit/b336cb2bc616a63a93c6470c558fc1f576b77f90"><code>b336cb2</code></a> Bump actions/checkout from 4.2.0 to 5.0.0</li> <li><a href="https://github.com/psf/requests/commit/46e939b5525d9c72b677340985582b04b128478a"><code>46e939b</code></a> Update publish workflow to use <code>artifact-id</code> instead of <code>name</code></li> <li><a href="https://github.com/psf/requests/commit/4b9c546aa3f35fca6ca24945376fe7462bb007c4"><code>4b9c546</code></a> Merge pull request <a href="https://redirect.github.com/psf/requests/issues/6999">#6999</a> from psf/dependabot/github_actions/step-security/har...</li> <li><a href="https://github.com/psf/requests/commit/7618dbef01d333f23ba4b9c4d97397b06dd89cb6"><code>7618dbe</code></a> Bump step-security/harden-runner from 2.12.0 to 2.13.0</li> <li><a href="https://github.com/psf/requests/commit/2edca11103c1c27dd8b572dab544b7f48cf3b446"><code>2edca11</code></a> Add support for Python 3.14 and drop support for Python 3.8 (<a href="https://redirect.github.com/psf/requests/issues/6993">#6993</a>)</li> <li><a href="https://github.com/psf/requests/commit/fec96cd5976ad763e45bac9a033d62cca1877a00"><code>fec96cd</code></a> Update Makefile rules (<a href="https://redirect.github.com/psf/requests/issues/6996">#6996</a>)</li> <li><a href="https://github.com/psf/requests/commit/d58d8aa2f45c3575268d6d5250745ef69f9cf8b7"><code>d58d8aa</code></a> docs: clarify timeout parameter uses seconds in Session.request (<a href="https://redirect.github.com/psf/requests/issues/6994">#6994</a>)</li> <li><a href="https://github.com/psf/requests/commit/91a3eabd3dcc4d7f36dd8249e4777a90ef9b4305"><code>91a3eab</code></a> Bump github/codeql-action from 3.28.5 to 3.29.0</li> <li>Additional commits viewable in <a href="https://github.com/psf/requests/compare/v2.32.4...v2.32.5">compare view</a></li> </ul> </details> <br /> Updates `ruamel-yaml` from 0.18.14 to 0.18.15 Updates `pymongo` from 4.14.0 to 4.15.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/mongodb/mongo-python-driver/releases">pymongo's releases</a>.</em></p> <blockquote> <h2>PyMongo 4.15.1</h2> <p>Community notes: <a href="https://www.mongodb.com/community/forums/t/pymongo-4-15-1-released/328837">https://www.mongodb.com/community/forums/t/pymongo-4-15-1-released/328837</a></p> <h2>PyMongo 4.15.0</h2> <p>Community notes: <a href="https://www.mongodb.com/community/forums/t/pymongo-4-15-released/328574">https://www.mongodb.com/community/forums/t/pymongo-4-15-released/328574</a></p> <h2>PyMongo 4.14.1</h2> <p>Community notes: <a href="https://www.mongodb.com/community/forums/t/pymongo-4-14-1-released/327511">https://www.mongodb.com/community/forums/t/pymongo-4-14-1-released/327511</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/mongodb/mongo-python-driver/blob/master/doc/changelog.rst">pymongo's changelog</a>.</em></p> <blockquote> <h2>Changes in Version 4.15.1 (2025/09/16)</h2> <p>Version 4.15.1 is a bug fix release.</p> <ul> <li> <p>Fixed a bug in :meth:<code>~pymongo.synchronous.encryption.ClientEncryption.encrypt</code> and :meth:<code>~pymongo.asynchronous.encryption.AsyncClientEncryption.encrypt</code> that would cause a <code>TypeError</code> when using <code>pymongocrypt&lt;1.16</code> by passing an unsupported <code>type_opts</code> parameter even if Queryable Encryption text queries beta was not used.</p> </li> <li> <p>Fixed a bug in <code>AsyncMongoClient</code> that caused a <code>ServerSelectionTimeoutError</code> when used with <code>uvicorn</code>, <code>FastAPI</code>, or <code>uvloop</code>.</p> </li> </ul> <p>Issues Resolved ...............</p> <p>See the <code>PyMongo 4.15.1 release notes in JIRA</code>_ for the list of resolved issues in this release.</p> <p>.. _PyMongo 4.15.1 release notes in JIRA: <a href="https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&amp;version=46486">https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&amp;version=46486</a></p> <h2>Changes in Version 4.15.0 (2025/09/10)</h2> <p>PyMongo 4.15 brings a number of changes including:</p> <ul> <li>Added :class:<code>~pymongo.encryption_options.TextOpts</code>, :attr:<code>~pymongo.encryption.Algorithm.TEXTPREVIEW</code>, :attr:<code>~pymongo.encryption.QueryType.PREFIXPREVIEW</code>, :attr:<code>~pymongo.encryption.QueryType.SUFFIXPREVIEW</code>, :attr:<code>~pymongo.encryption.QueryType.SUBSTRINGPREVIEW</code>, as part of the experimental Queryable Encryption text queries beta. <code>pymongocrypt&gt;=1.16</code> is required for text query support.</li> <li>Added :class:<code>bson.decimal128.DecimalEncoder</code> and :class:<code>bson.decimal128.DecimalDecoder</code> to support encoding and decoding of BSON Decimal128 values to decimal.Decimal values using the TypeRegistry API.</li> <li>Added support for Windows <code>arm64</code> wheels.</li> </ul> <h2>Changes in Version 4.14.1 (2025/08/19)</h2> <p>Version 4.14.1 is a bug fix release.</p> <ul> <li>Fixed a bug in <code>MongoClient.append_metadata()</code> and <code>AsyncMongoClient.append_metadata()</code> that allowed duplicate <code>DriverInfo.name</code> to be appended to the metadata.</li> </ul> <p>Issues Resolved</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/8cf65796daf32be283367b2ebc40a41dfe034b9b"><code>8cf6579</code></a> PYTHON-5542 Prepare for 4.15.1 Release (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2537">#2537</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/7a07c0281457f16fe807e4e65ef0c13f7b1deb2f"><code>7a07c02</code></a> PYTHON-5544 Revert changes to base protocol layer (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2535">#2535</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/eca38b730b8227c52cd5f0c655f617e969743ee1"><code>eca38b7</code></a> Bump mypy from 1.17.1 to 1.18.1 (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2532">#2532</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/32e183baa78c6c759a2dee7da740c647c35730f8"><code>32e183b</code></a> Bump the actions group with 3 updates (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2531">#2531</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/3da6e858d58b7b2cf6038d998d538f0ac75fefb2"><code>3da6e85</code></a> PYTHON-5543 PyMongoBaseProtocol should inherit from asyncio.BaseProtocol (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2528">#2528</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/2b148867e7f127818b8c855b72d5c2ffda2409b5"><code>2b14886</code></a> PYTHON-5540 Fix usage of text_opts for older versions of pymongocrypt (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2525">#2525</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/527cbdd18a13227c3dae7a263be46c83692cfdc4"><code>527cbdd</code></a> PYTHON-5537 Update typing dependencies (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2524">#2524</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/8879f2b9512eec909ca8df017c4755fd530bf89c"><code>8879f2b</code></a> Bump the actions group with 5 updates (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2519">#2519</a>)</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/d2653eecc69fe76599bc4c5fd7ab3835deff1da8"><code>d2653ee</code></a> BUMP 4.16.0.dev0</li> <li><a href="https://github.com/mongodb/mongo-python-driver/commit/1514e9b784ed395e7dad806c7b722fef531ecb15"><code>1514e9b</code></a> Prepare 4.15 release (<a href="https://redirect.github.com/mongodb/mongo-python-driver/issues/2523">#2523</a>)</li> <li>Additional commits viewable in <a href="https://github.com/mongodb/mongo-python-driver/compare/4.14.0...4.15.1">compare view</a></li> </ul> </details> <br /> Updates `pytest` from 8.4.1 to 8.4.2 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest/releases">pytest's releases</a>.</em></p> <blockquote> <h2>8.4.2</h2> <h1>pytest 8.4.2 (2025-09-03)</h1> <h2>Bug fixes</h2> <ul> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13478">#13478</a>: Fixed a crash when using <code>console_output_style</code>{.interpreted-text role=&quot;confval&quot;} with <code>times</code> and a module is skipped.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13530">#13530</a>: Fixed a crash when using <code>pytest.approx</code>{.interpreted-text role=&quot;func&quot;} and <code>decimal.Decimal</code>{.interpreted-text role=&quot;class&quot;} instances with the <code>decimal.FloatOperation</code>{.interpreted-text role=&quot;class&quot;} trap set.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13549">#13549</a>: No longer evaluate type annotations in Python <code>3.14</code> when inspecting function signatures.</p> <p>This prevents crashes during module collection when modules do not explicitly use <code>from __future__ import annotations</code> and import types for annotations within a <code>if TYPE_CHECKING:</code> block.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13559">#13559</a>: Added missing [int]{.title-ref} and [float]{.title-ref} variants to the [Literal]{.title-ref} type annotation of the [type]{.title-ref} parameter in <code>pytest.Parser.addini</code>{.interpreted-text role=&quot;meth&quot;}.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13563">#13563</a>: <code>pytest.approx</code>{.interpreted-text role=&quot;func&quot;} now only imports <code>numpy</code> if NumPy is already in <code>sys.modules</code>. This fixes unconditional import behavior introduced in [8.4.0]{.title-ref}.</p> </li> </ul> <h2>Improved documentation</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13577">#13577</a>: Clarify that <code>pytest_generate_tests</code> is discovered in test modules/classes; other hooks must be in <code>conftest.py</code> or plugins.</li> </ul> <h2>Contributor-facing changes</h2> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13480">#13480</a>: Self-testing: fixed a few test failures when run with <code>-Wdefault</code> or a similar override.</li> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13547">#13547</a>: Self-testing: corrected expected message for <code>test_doctest_unexpected_exception</code> in Python <code>3.14</code>.</li> <li><a href="https://redirect.github.com/pytest-dev/pytest/issues/13684">#13684</a>: Make pytest's own testsuite insensitive to the presence of the <code>CI</code> environment variable -- by <code>ogrisel</code>{.interpreted-text role=&quot;user&quot;}.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest/commit/bfae4224fd554d3d7f2c277a4cc092b6ec6af3ae"><code>bfae422</code></a> Prepare release version 8.4.2</li> <li><a href="https://github.com/pytest-dev/pytest/commit/89905381a163be30ae87d62e5f750e902d750c5f"><code>8990538</code></a> Fix passenv CI in tox ini and make tests insensitive to the presence of the C...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/ca676bfe005aebcb12f4146d1b0f1d2772e2cd5d"><code>ca676bf</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/13687">#13687</a> from pytest-dev/patchback/backports/8.4.x/e63f6e51c...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/975a60a63ce385a44655596e254c1899feaa53e4"><code>975a60a</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/13686">#13686</a> from pytest-dev/patchback/backports/8.4.x/12bde8af6...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/7723ce84b87ab08f86ddafcb342acc28ba5ec99d"><code>7723ce8</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/13683">#13683</a> from even-even/fix_Exeption_to_Exception_in_errorMe...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/b7f05680d1301e0969b30bcb3c4b27433c9ee2b7"><code>b7f0568</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/13685">#13685</a> from CoretexShadow/fix/docs-pytest-generate-tests</li> <li><a href="https://github.com/pytest-dev/pytest/commit/2c94c4a6948ba53440818389298157fa5d5f94cd"><code>2c94c4a</code></a> add missing colon (<a href="https://redirect.github.com/pytest-dev/pytest/issues/13640">#13640</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/13641">#13641</a>)</li> <li><a href="https://github.com/pytest-dev/pytest/commit/c3d7684bc01c8c48d05145a30c5211ca8656c68c"><code>c3d7684</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/13606">#13606</a> from pytest-dev/patchback/backports/8.4.x/5f9938563...</li> <li><a href="https://github.com/pytest-dev/pytest/commit/dc6e3be2ddc75a149b6d102d9b7c82ee47a00cfa"><code>dc6e3be</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest/issues/13605">#13605</a> from The-Compiler/training-update-2025-07</li> <li><a href="https://github.com/pytest-dev/pytest/commit/f87289c36c8dbe7740e3020f5546b6f8b0861ff0"><code>f87289c</code></a> Fix crash with <code>times</code> output style and skipped module (<a href="https://redirect.github.com/pytest-dev/pytest/issues/13573">#13573</a>) (<a href="https://redirect.github.com/pytest-dev/pytest/issues/13579">#13579</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest/compare/8.4.1...8.4.2">compare view</a></li> </ul> </details> <br /> Updates `pytest-asyncio` from 1.1.0 to 1.2.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-asyncio/releases">pytest-asyncio's releases</a>.</em></p> <blockquote> <h2>pytest-asyncio 1.2.0</h2> <h1><a href="https://github.com/pytest-dev/pytest-asyncio/tree/1.2.0">1.2.0</a> - 2025-09-12</h1> <h2>Added</h2> <ul> <li><code>--asyncio-debug</code> CLI option and <code>asyncio_debug</code> configuration option to enable asyncio debug mode for the default event loop. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/980">#980</a>)</li> <li>A <code>pytest.UsageError</code> for invalid configuration values of <code>asyncio_default_fixture_loop_scope</code> and <code>asyncio_default_test_loop_scope</code>. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1189">#1189</a>)</li> <li>Compatibility with the Pyright type checker (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/731">#731</a>)</li> </ul> <h2>Fixed</h2> <ul> <li><code>RuntimeError: There is no current event loop in thread 'MainThread'</code> when any test unsets the event loop (such as when using <code>asyncio.run</code> and <code>asyncio.Runner</code>). (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1177">#1177</a>)</li> <li>Deprecation warning when decorating an asynchronous fixture with <code>@pytest.fixture</code> in [strict]{.title-ref} mode. The warning message now refers to the correct package. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1198">#1198</a>)</li> </ul> <h2>Notes for Downstream Packagers</h2> <ul> <li>Bump the minimum required version of tox to v4.28. This change is only relevant if you use the <code>tox.ini</code> file provided by pytest-asyncio to run tests.</li> <li>Extend dependency on typing-extensions&gt;=4.12 from Python&lt;3.10 to Python&lt;3.13.</li> </ul> <h2>pytest-asyncio 1.1.1</h2> <h1><a href="https://github.com/pytest-dev/pytest-asyncio/tree/v1.1.1">v1.1.1</a> - 2025-09-12</h1> <h2>Notes for Downstream Packagers</h2> <p>- Addresses a build problem with setuptoos-scm &gt;= 9 caused by invalid setuptools-scm configuration in pytest-asyncio. (<a href="https://redirect.github.com/pytest-dev/pytest-asyncio/issues/1192">#1192</a>)</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/0d3988f5adc16e8b364266c9ecda42a36d5892ff"><code>0d3988f</code></a> ci: Create GitHub release before publishing to PyPI.</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/07c5a0b3e0bb99c7592ab87ed17a4bb2966fdf6a"><code>07c5a0b</code></a> docs: Include orphaned news fragment in changelog.</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/be24582b86375b761534639be6c2941d0b3f116c"><code>be24582</code></a> chore: Prepare release of v1.2.0.</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/7aeb296b9f95e57c371734dcb1d3ece3f7c81727"><code>7aeb296</code></a> docs: Streamline news fragments</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/7b8311cf1d2f67931f4fd9bbbe6d9f3b09572ebb"><code>7b8311c</code></a> ci: Fixes a bug that prevented SSH signature from being stripped from release...</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/9d4c2bd8770d4073e015213373975f217d3ac8f5"><code>9d4c2bd</code></a> docs: Add changelog entry for Pyright compatibility.</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/94f6106ea0c7ee716d7cf85377c653baa9cb7cd9"><code>94f6106</code></a> test: Added tests which assert that the event loop is reinstated if unset by ...</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/df61991f1805f45ab31ae2d2fb73a54ff25ccd0c"><code>df61991</code></a> [pre-commit.ci] pre-commit autoupdate</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/f1f7941691ff506ab553dfd6d00b09e8213eeff7"><code>f1f7941</code></a> Build(deps): Bump pytest from 8.4.1 to 8.4.2</li> <li><a href="https://github.com/pytest-dev/pytest-asyncio/commit/c77d3d38f7adb41f5f6ea7b002da4e0f480c5c24"><code>c77d3d3</code></a> Build(deps): Bump twine from 6.1.0 to 6.2.0</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-asyncio/compare/v1.1.0...v1.2.0">compare view</a></li> </ul> </details> <br /> Updates `cryptography` from 45.0.6 to 46.0.1 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst">cryptography's changelog</a>.</em></p> <blockquote> <p>46.0.1 - 2025-09-16</p> <pre><code> * Fixed an issue where users installing via ``pip`` on Python 3.14 development versions would not properly install a dependency. * Fixed an issue building the free-threaded macOS 3.14 wheels. <p>.. _v46-0-0:</p> <p>46.0.0 - 2025-09-16<br /> </code></pre></p> <ul> <li><strong>BACKWARDS INCOMPATIBLE:</strong> Support for Python 3.7 has been removed.</li> <li>Support for OpenSSL &lt; 3.0 is deprecated and will be removed in the next release.</li> <li>Support for <code>x86_64</code> macOS (including publishing wheels) is deprecated and will be removed in two releases. We will switch to publishing an <code>arm64</code> only wheel for macOS.</li> <li>Support for 32-bit Windows (including publishing wheels) is deprecated and will be removed in two releases. Users should move to a 64-bit Python installation.</li> <li>Updated Windows, macOS, and Linux wheels to be compiled with OpenSSL 3.5.3.</li> <li>We now build <code>ppc64le</code> <code>manylinux</code> wheels and publish them to PyPI.</li> <li>We now build <code>win_arm64</code> (Windows on Arm) wheels and publish them to PyPI.</li> <li>Added support for free-threaded Python 3.14.</li> <li>Removed the deprecated <code>get_attribute_for_oid</code> method on :class:<code>~cryptography.x509.CertificateSigningRequest</code>. Users should use :meth:<code>~cryptography.x509.Attributes.get_attribute_for_oid</code> instead.</li> <li>Removed the deprecated <code>CAST5</code>, <code>SEED</code>, <code>IDEA</code>, and <code>Blowfish</code> classes from the cipher module. These are still available in :doc:<code>/hazmat/decrepit/index</code>.</li> <li>In X.509, when performing a PSS signature with a SHA-3 hash, it is now encoded with the official NIST SHA3 OID.</li> </ul> <p>.. _v45-0-7:</p> <p>45.0.7 - 2025-09-01</p> <pre><code> * Added a function to support an upcoming ``pyOpenSSL`` release. <p>.. _v45-0-6:<br /> </code></pre></p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pyca/cryptography/commit/e735cfc27502320101c130335c556394a125ba52"><code>e735cfc</code></a> release 46.0.1 (<a href="https://redirect.github.com/pyca/cryptography/issues/13450">#13450</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/4e457ffba43a6d87efc63c33041e2081438dd8a4"><code>4e457ff</code></a> Explicitly specify python in mac uv build invocation (<a href="https://redirect.github.com/pyca/cryptography/issues/13447">#13447</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/2726efdb6d67f1c90cf9c6062d9fe051965586f8"><code>2726efd</code></a> Depend on CFFI 2.0.0 or newer on Python &gt; 3.8 (<a href="https://redirect.github.com/pyca/cryptography/issues/13448">#13448</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/62230623d183706632c0eb7822c96ac95e3710a8"><code>6223062</code></a> release 46.0.0 (<a href="https://redirect.github.com/pyca/cryptography/issues/13446">#13446</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/563c4915b0931455706f761a4579c26698824eae"><code>563c491</code></a> Update comment for pyopenssl-release tag (<a href="https://redirect.github.com/pyca/cryptography/issues/13445">#13445</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/d2f6f7faced35b73277bc624ff496f8af696b172"><code>d2f6f7f</code></a> Bump downstream dependencies in CI (<a href="https://redirect.github.com/pyca/cryptography/issues/13439">#13439</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/e7ab02bd679d0b4f55d93486fe27e62554ef15d4"><code>e7ab02b</code></a> we'll ship this with 3.5.3 why not (<a href="https://redirect.github.com/pyca/cryptography/issues/13442">#13442</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/0b68a4bffb61202e4d4f5074cd30c2b9d15f429e"><code>0b68a4b</code></a> Another pair of bump dependencies fix (<a href="https://redirect.github.com/pyca/cryptography/issues/13444">#13444</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/e076d08ee42da5daa432d1d145b8bee2dc0d5b44"><code>e076d08</code></a> Attempt to fix commit message for bump downstreams (<a href="https://redirect.github.com/pyca/cryptography/issues/13440">#13440</a>)</li> <li><a href="https://github.com/pyca/cryptography/commit/6835ce899e03215689964f5f28bd88b86d3e60ca"><code>6835ce8</code></a> Put correct version bounds for pyenchant in pins (<a href="https://redirect.github.com/pyca/cryptography/issues/13441">#13441</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pyca/cryptography/compare/45.0.6...46.0.1">compare view</a></li> </ul> </details> <br /> Updates `black` from 25.1.0 to 25.9.0 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/psf/black/releases">black's releases</a>.</em></p> <blockquote> <h2>25.9.0</h2> <h3>Highlights</h3> <ul> <li>Remove support for pre-python 3.7 <code>await/async</code> as soft keywords/variable names (<a href="https://redirect.github.com/psf/black/issues/4676">#4676</a>)</li> </ul> <h3>Stable style</h3> <ul> <li>Fix crash while formatting a long <code>del</code> statement containing tuples (<a href="https://redirect.github.com/psf/black/issues/4628">#4628</a>)</li> <li>Fix crash while formatting expressions using the walrus operator in complex <code>with</code> statements (<a href="https://redirect.github.com/psf/black/issues/4630">#4630</a>)</li> <li>Handle <code># fmt: skip</code> followed by a comment at the end of file (<a href="https://redirect.github.com/psf/black/issues/4635">#4635</a>)</li> <li>Fix crash when a tuple appears in the <code>as</code> clause of a <code>with</code> statement (<a href="https://redirect.github.com/psf/black/issues/4634">#4634</a>)</li> <li>Fix crash when tuple is used as a context manager inside a <code>with</code> statement (<a href="https://redirect.github.com/psf/black/issues/4646">#4646</a>)</li> <li>Fix crash when formatting a <code>\</code> followed by a <code>\r</code> followed by a comment (<a href="https://redirect.github.com/psf/black/issues/4663">#4663</a>)</li> <li>Fix crash on a <code>\\r\n</code> (<a href="https://redirect.github.com/psf/black/issues/4673">#4673</a>)</li> <li>Fix crash on <code>await ...</code> (where <code>...</code> is a literal <code>Ellipsis</code>) (<a href="https://redirect.github.com/psf/black/issues/4676">#4676</a>)</li> <li>Fix crash on parenthesized expression inside a type parameter bound (<a href="https://redirect.github.com/psf/black/issues/4684">#4684</a>)</li> <li>Fix crash when using line ranges excluding indented single line decorated items (<a href="https://redirect.github.com/psf/black/issues/4670">#4670</a>)</li> </ul> <h3>Preview style</h3> <ul> <li>Fix a bug where one-liner functions/conditionals marked with <code># fmt: skip</code> would still be formatted (<a href="https://redirect.github.com/psf/black/issues/4552">#4552</a>)</li> <li>Improve <code>multiline_string_handling</code> with ternaries and dictionaries (<a href="https://redirect.github.com/psf/black/issues/4657">#4657</a>)</li> <li>Fix a bug where <code>string_processing</code> would not split f-strings directly after expressions (<a href="https://redirect.github.com/psf/black/issues/4680">#4680</a>)</li> <li>Wrap the <code>in</code> clause of comprehensions across lines if necessary (<a href="https://redirect.github.com/psf/black/issues/4699">#4699</a>)</li> <li>Remove parentheses around multiple exception types in <code>except</code> and <code>except*</code> without <code>as</code>. (<a href="https://redirect.github.com/psf/black/issues/4720">#4720</a>)</li> <li>Add <code>\r</code> style newlines to the potential newlines to normalize file newlines both from and to (<a href="https://redirect.github.com/psf/black/issues/4710">#4710</a>)</li> </ul> <h3>Parser</h3> <ul> <li>Rewrite tokenizer to improve performance and compliance (<a href="https://redirect.github.com/psf/black/issues/4536">#4536</a>)</li> <li>Fix bug where certain unusual expressions (e.g., lambdas) were not accepted in type parameter bounds and defaults. (<a href="https://redirect.github.com/psf/black/issues/4602">#4602</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Avoid using an extra process when running with only one worker (<a href="https://redirect.github.com/psf/black/issues/4734">#4734</a>)</li> </ul> <h3>Integrations</h3> <ul> <li>Fix the version check in the vim file to reject Python 3.8 (<a href="https://redirect.github.com/psf/black/issues/4567">#4567</a>)</li> <li>Enhance GitHub Action <code>psf/black</code> to read Black version from an additional section in pyproject.toml: <code>[project.dependency-groups]</code> (<a href="https://redirect.github.com/psf/black/issues/4606">#4606</a>)</li> <li>Build gallery docker image with python3-slim and reduce image size (<a href="https://redirect.github.com/psf/black/issues/4686">#4686</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/psf/black/blob/main/CHANGES.md">black's changelog</a>.</em></p> <blockquote> <h2>25.9.0</h2> <h3>Highlights</h3> <ul> <li>Remove support for pre-python 3.7 <code>await/async</code> as soft keywords/variable names (<a href="https://redirect.github.com/psf/black/issues/4676">#4676</a>)</li> </ul> <h3>Stable style</h3> <ul> <li>Fix crash while formatting a long <code>del</code> statement containing tuples (<a href="https://redirect.github.com/psf/black/issues/4628">#4628</a>)</li> <li>Fix crash while formatting expressions using the walrus operator in complex <code>with</code> statements (<a href="https://redirect.github.com/psf/black/issues/4630">#4630</a>)</li> <li>Handle <code># fmt: skip</code> followed by a comment at the end of file (<a href="https://redirect.github.com/psf/black/issues/4635">#4635</a>)</li> <li>Fix crash when a tuple appears in the <code>as</code> clause of a <code>with</code> statement (<a href="https://redirect.github.com/psf/black/issues/4634">#4634</a>)</li> <li>Fix crash when tuple is used as a context manager inside a <code>with</code> statement (<a href="https://redirect.github.com/psf/black/issues/4646">#4646</a>)</li> <li>Fix crash when formatting a <code>\</code> followed by a <code>\r</code> followed by a comment (<a href="https://redirect.github.com/psf/black/issues/4663">#4663</a>)</li> <li>Fix crash on a <code>\\r\n</code> (<a href="https://redirect.github.com/psf/black/issues/4673">#4673</a>)</li> <li>Fix crash on <code>await ...</code> (where <code>...</code> is a literal <code>Ellipsis</code>) (<a href="https://redirect.github.com/psf/black/issues/4676">#4676</a>)</li> <li>Fix crash on parenthesized expression inside a type parameter bound (<a href="https://redirect.github.com/psf/black/issues/4684">#4684</a>)</li> <li>Fix crash when using line ranges excluding indented single line decorated items (<a href="https://redirect.github.com/psf/black/issues/4670">#4670</a>)</li> </ul> <h3>Preview style</h3> <ul> <li>Fix a bug where one-liner functions/conditionals marked with <code># fmt: skip</code> would still be formatted (<a href="https://redirect.github.com/psf/black/issues/4552">#4552</a>)</li> <li>Improve <code>multiline_string_handling</code> with ternaries and dictionaries (<a href="https://redirect.github.com/psf/black/issues/4657">#4657</a>)</li> <li>Fix a bug where <code>string_processing</code> would not split f-strings directly after expressions (<a href="https://redirect.github.com/psf/black/issues/4680">#4680</a>)</li> <li>Wrap the <code>in</code> clause of comprehensions across lines if necessary (<a href="https://redirect.github.com/psf/black/issues/4699">#4699</a>)</li> <li>Remove parentheses around multiple exception types in <code>except</code> and <code>except*</code> without <code>as</code>. (<a href="https://redirect.github.com/psf/black/issues/4720">#4720</a>)</li> <li>Add <code>\r</code> style newlines to the potential newlines to normalize file newlines both from and to (<a href="https://redirect.github.com/psf/black/issues/4710">#4710</a>)</li> </ul> <h3>Parser</h3> <ul> <li>Rewrite tokenizer to improve performance and compliance (<a href="https://redirect.github.com/psf/black/issues/4536">#4536</a>)</li> <li>Fix bug where certain unusual expressions (e.g., lambdas) were not accepted in type parameter bounds and defaults. (<a href="https://redirect.github.com/psf/black/issues/4602">#4602</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Avoid using an extra process when running with only one worker (<a href="https://redirect.github.com/psf/black/issues/4734">#4734</a>)</li> </ul> <h3>Integrations</h3> <ul> <li>Fix the version check in the vim file to reject Python 3.8 (<a href="https://redirect.github.com/psf/black/issues/4567">#4567</a>)</li> <li>Enhance GitHub Action <code>psf/black</code> to read Black version from an additional section in pyproject.toml: <code>[project.dependency-groups]</code> (<a href="https://redirect.github.com/psf/black/issues/4606">#4606</a>)</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/psf/black/commit/af0ba72a73598c76189d6dd1b21d8532255d5942"><code>af0ba72</code></a> Prepare docs for release 25.9.0 (<a href="https://redirect.github.com/psf/black/issues/4751">#4751</a>)</li> <li><a href="https://github.com/psf/black/commit/ffc01a027580d99401abb3197e83d50dc4f4c746"><code>ffc01a0</code></a> Fix schema generation error caused by new click version (<a href="https://redirect.github.com/psf/black/issues/4750">#4750</a>)</li> <li><a href="https://github.com/psf/black/commit/626b32fe2b5387656be6694da9a4b7a3148fb892"><code>626b32f</code></a> Add normalizing for <code>\r</code> style newlines (<a href="https://redirect.github.com/psf/black/issues/4710">#4710</a>)</li> <li><a href="https://github.com/psf/black/commit/57a461258f324e33bca189b2eb49d7f7a944ffe7"><code>57a4612</code></a> Fix mypy type issue (<a href="https://redirect.github.com/psf/black/issues/4745">#4745</a>)</li> <li><a href="https://github.com/psf/black/commit/4f6ad7cf8c3092e0fb4d82f54fe77ccde134468a"><code>4f6ad7c</code></a> Wrap the <code>in</code> clause of comprehensions across lines if necessary (<a href="https://redirect.github.com/psf/black/issues/4699">#4699</a>)</li> <li><a href="https://github.com/psf/black/commit/24f516961720c5578069dee30415b776359b7be5"><code>24f5169</code></a> ci: Run diff-shades on unstable instead of preview (<a href="https://redirect.github.com/psf/black/issues/4741">#4741</a>)</li> <li><a href="https://github.com/psf/black/commit/4d55e6017993ee3f0927524e8bc19ead8de9e8ed"><code>4d55e60</code></a> Bump actions/setup-python from 5 to 6 (<a href="https://redirect.github.com/psf/black/issues/4744">#4744</a>)</li> <li><a href="https://github.com/psf/black/commit/0cf39efdbc3aaea455f95d31e5b42efb6bd61478"><code>0cf39ef</code></a> Improve the performance of get_string_prefix (<a href="https://redirect.github.com/psf/black/issues/4742">#4742</a>)</li> <li><a href="https://github.com/psf/black/commit/1f779dec013db37475fa56a5c9939a09eab7e7d6"><code>1f779de</code></a> Fix line ranges decorator edge case (<a href="https://redirect.github.com/psf/black/issues/4670">#4670</a>)</li> <li><a href="https://github.com/psf/black/commit/203fd6b5cdad975178b8174394a7f7fb13d14f02"><code>203fd6b</code></a> Optimize Line string method (<a href="https://redirect.github.com/psf/black/issues/4739">#4739</a>)</li> <li>Additional commits viewable in <a href="https://github.com/psf/black/compare/25.1.0...25.9.0">compare view</a></li> </ul> </details> <br /> Updates `pytest-mock` from 3.14.1 to 3.15.1 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-mock/releases">pytest-mock's releases</a>.</em></p> <blockquote> <h2>v3.15.1</h2> <p><em>2025-09-16</em></p> <ul> <li><a href="https://redirect.github.com/pytest-dev/pytest-mock/issues/529">#529</a>: Fixed <code>itertools._tee object has no attribute error</code> -- now <code>duplicate_iterators=True</code> must be passed to <code>mocker.spy</code> to duplicate iterators.</li> </ul> <h2>v3.15.0</h2> <p><em>2025-09-04</em></p> <ul> <li>Python 3.8 (EOL) is no longer supported.</li> <li><a href="https://redirect.github.com/pytest-dev/pytest-mock/pull/524">#524</a>: Added <code>spy_return_iter</code> to <code>mocker.spy</code>, which contains a duplicate of the return value of the spied method if it is an <code>Iterator</code>.</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-mock/blob/main/CHANGELOG.rst">pytest-mock's changelog</a>.</em></p> <blockquote> <h2>3.15.1</h2> <p><em>2025-09-16</em></p> <ul> <li><code>[#529](https://github.com/pytest-dev/pytest-mock/issues/529) &lt;https://github.com/pytest-dev/pytest-mock/issues/529&gt;</code>_: Fixed <code>itertools._tee object has no attribute error</code> -- now <code>duplicate_iterators=True</code> must be passed to <code>mocker.spy</code> to duplicate iterators.</li> </ul> <h2>3.15.0</h2> <p><em>2025-09-04</em></p> <ul> <li>Python 3.8 (EOL) is no longer supported.</li> <li><code>[#524](https://github.com/pytest-dev/pytest-mock/issues/524) &lt;https://github.com/pytest-dev/pytest-mock/pull/524&gt;</code>_: Added <code>spy_return_iter</code> to <code>mocker.spy</code>, which contains a duplicate of the return value of the spied method if it is an <code>Iterator</code>.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-mock/commit/e1b5c62a38c5a05cae614aef3847f240ba50d269"><code>e1b5c62</code></a> Release 3.15.1</li> <li><a href="https://github.com/pytest-dev/pytest-mock/commit/184eb190d6be417f5f33727bcbc9704909479498"><code>184eb19</code></a> Set <code>spy_return_iter</code> only when explicitly requested (<a href="https://redirect.github.com/pytest-dev/pytest-mock/issues/537">#537</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-mock/commit/4fa0088a0aa85eefb1313bd97adf43889bf1f647"><code>4fa0088</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://redirect.github.com/pytest-dev/pytest-mock/issues/536">#536</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-mock/commit/f5aff33ce71ed4620acc43dc41cb3b198bcf4cb0"><code>f5aff33</code></a> Fix test failure with pytest 8+ and verbose mode (<a href="https://redirect.github.com/pytest-dev/pytest-mock/issues/535">#535</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-mock/commit/adc41873c9d6aa69b87e3f108c93a29c847869aa"><code>adc4187</code></a> Bump actions/setup-python from 5 to 6 in the github-actions group (<a href="https://redirect.github.com/pytest-dev/pytest-mock/issues/533">#533</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-mock/commit/95ad5700609aae73c6f767b8cc2ccfb2483e0f5c"><code>95ad570</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://redirect.github.com/pytest-dev/pytest-mock/issues/532">#532</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-mock/commit/e696bf02c199b1f7d0c48adb450f40e5a75b699a"><code>e696bf0</code></a> Fix standalone mock support (<a href="https://redirect.github.com/pytest-dev/pytest-mock/issues/531">#531</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-mock/commit/5b29b03ce9581cfcd867dd6c04a970fb2c861291"><code>5b29b03</code></a> Fix gen-release-notes script</li> <li><a href="https://github.com/pytest-dev/pytest-mock/commit/7d22ef4e560351832e60687d8bd15ebe2785ff3b"><code>7d22ef4</code></a> Merge pull request <a href="https://redirect.github.com/pytest-dev/pytest-mock/issues/528">#528</a> from pytest-dev/release-3.15.0</li> <li><a href="https://github.com/pytest-dev/pytest-mock/commit/90b29f89e2086c139a7b4fea89202faa192ee5a9"><code>90b29f8</code></a> Update CHANGELOG for 3.15.0</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-mock/compare/v3.14.1...v3.15.1">compare view</a></li> </ul> </details> <br /> Updates `wrapt` from 1.17.2 to 1.17.3 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/GrahamDumpleton/wrapt/releases">wrapt's releases</a>.</em></p> <blockquote> <h2>wrapt-1.17.3</h2> <p>See the project page on the Python Package Index at <a href="https://pypi.org/project/wrapt/1.17.3/">https://pypi.org/project/wrapt/1.17.3/</a> for more information.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/GrahamDumpleton/wrapt/blob/develop/docs/changes.rst">wrapt's changelog</a>.</em></p> <blockquote> <h2>Version 1.17.3</h2> <p><strong>Bugs Fixed</strong></p> <ul> <li>Reference count was not being incremented on type object for C implementation of the partial callable object proxy when module was initialized. If wrapt was being used in Python sub interpreters which were deleted it could lead to the process crashing.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/GrahamDumpleton/wrapt/commit/99130c02842c87001f40dbe73e21934c0615398d"><code>99130c0</code></a> Build for Windows 11 ARM.</li> <li><a href="https://github.com/GrahamDumpleton/wrapt/commit/26f5344323b6e4152587dcb86f4b5935aeda9ccf"><code>26f5344</code></a> Build for Python 3.14.</li> <li><a href="https://github.com/GrahamDumpleton/wrapt/commit/43dbbe0df1fc80a9b711af64f09b606e16c2396f"><code>43dbbe0</code></a> Modify artifact upload pattern.</li> <li><a href="https://github.com/GrahamDumpleton/wrapt/commit/e90bd88440bf38a33e5c06540d2ac889731bc9ab"><code>e90bd88</code></a> Update cibuildwheel version.</li> <li><a href="https://github.com/GrahamDumpleton/wrapt/commit/58efb76117a8ebbf78cf1b424a260b1a447d0dde"><code>58efb76</code></a> Update to ubuntu-latest.</li> <li><a href="https://github.com/GrahamDumpleton/wrapt/commit/800a2047f38ce4ad4dc3c821fc4630ea440adc11"><code>800a204</code></a> Increment release version.</li> <li><a href="https://github.com/GrahamDumpleton/wrapt/commit/33b8840d6eb06e1e40fffdb7e4136fd0e793332f"><code>33b8840</code></a> Update obsolete GitHub action.</li> <li><a href="https://github.com/GrahamDumpleton/wrapt/commit/1c755a1f6c32d5ce5015f4f7e8011d8b49648caa"><code>1c755a1</code></a> Rename GitHub workflow file so can build package.</li> <li><a href="https://github.com/GrahamDumpleton/wrapt/commit/ff4981b15cc989702c812d839438783bde885ecd"><code>ff4981b</code></a> Fix crash due to lack of reference count.</li> <li><a href="https://github.com/GrahamDumpleton/wrapt/commit/ecbaaa12072aa970bd9223a703be8a406c39b322"><code>ecbaaa1</code></a> Revert &quot;Remove the dependency on <code>pkg_resources</code> and hence <code>setuptools</code> on py...</li> <li>Additional commits viewable in <a href="https://github.com/GrahamDumpleton/wrapt/compare/1.17.2...1.17.3">compare view</a></li> </ul> </details> <br /> Updates `botocore` from 1.40.7 to 1.40.36 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/boto/botocore/commit/28c3ae23b564ff769ad4f4df79060af2e0b7d4ae"><code>28c3ae2</code></a> Merge branch 'release-1.40.36'</li> <li><a href="https://github.com/boto/botocore/commit/95bd00946f54f22447cd18a06e05704afe485d03"><code>95bd009</code></a> Bumping version to 1.40.36</li> <li><a href="https://github.com/boto/botocore/commit/674f0d11498e07afe21261113dde681187d66fcb"><code>674f0d1</code></a> Update endpoints model</li> <li><a href="https://github.com/boto/botocore/commit/0b599b51c95253204dffc4ed684e73610841ef60"><code>0b599b5</code></a> Update to latest models</li> <li><a href="https://github.com/boto/botocore/commit/331de65e7532d4641b797c35ca264b90987e3328"><code>331de65</code></a> Merge branch 'release-1.40.35'</li> <li><a href="https://github.com/boto/botocore/commit/7871b958b1ac9055ec4b993913136d96df4fbdcd"><code>7871b95</code></a> Merge branch 'release-1.40.35' into develop</li> <li><a href="https://github.com/boto/botocore/commit/4451f93aa2eb401b7b8f4aef6e24f2ccc2e09fdd"><code>4451f93</code></a> Bumping version to 1.40.35</li> <li><a href="https://github.com/boto/botocore/commit/387a2a4cfed21d8c79f60130c0edc6446e21621d"><code>387a2a4</code></a> Update endpoints model</li> <li><a href="https://github.com/boto/botocore/commit/fd4916f863a7b8737e121345118d68b99e2705be"><code>fd4916f</code></a> Update to latest models</li> <li><a href="https://github.com/boto/botocore/commit/de187f398ba981be728e3c69f23d6b634d555016"><code>de187f3</code></a> Update sms-voice models and endpoint tests to latest version. (<a href="https://redirect.github.com/boto/botocore/issues/3553">#3553</a>)</li> <li>Additional commits viewable in <a href="https://github.com/boto/botocore/compare/1.40.7...1.40.36">compare view</a></li> </ul> </details> <br /> Updates `boto3` from 1.40.7 to 1.40.36 <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/boto/boto3/commit/02ae095a9cce0714cee330ee7744e6adf5ed2557"><code>02ae095</code></a> Merge branch 'release-1.40.36'</li> <li><a href="https://github.com/boto/boto3/commit/5f59e53a3076227719131ef7a01d230df12f491a"><code>5f59e53</code></a> Bumping version to 1.40.36</li> <li><a href="https://github.com/boto/boto3/commit/5a8e92957f7815c737fcd23f6e728c1c162a7892"><code>5a8e929</code></a> Add changelog entries from botocore</li> <li><a href="https://github.com/boto/boto3/commit/22fa3d5e8445bb96e085b4663e4fc2cecaf00488"><code>22fa3d5</code></a> Merge branch 'release-1.40.35'</li> <li><a href="https://github.com/boto/boto3/commit/22e132e418a11c1c623756dab4b4db0bef08ee8b"><code>22e132e</code></a> Merge branch 'release-1.40.35' into develop</li> <li><a href="https://github.com/boto/boto3/commit/021298e47cf619b0325b9e68e648fb7278aa9f19"><code>021298e</code></a> Bumping version to 1.40.35</li> <li><a href="https://github.com/boto/boto3/commit/02961e67cc3c95e51795c08767e828bc22d50163"><code>02961e6</code></a> Add changelog entries from botocore</li> <li><a href="https://github.com/boto/boto3/commit/1564e42c44752bac70ea2cdfbb589bdcb9321cf5"><code>1564e42</code></a> Merge branch 'release-1.40.34'</li> <li><a href="https://github.com/boto/boto3/commit/b5c8399b34e1fed6a72bdfffe28b7e165f19490f"><code>b5c8399</code></a> Merge branch 'release-1.40.34' into develop</li> <li><a href="https://github.com/boto/boto3/commit/dd6d06bedacbc7022c1a186ad3168e1b60c681f4"><code>dd6d06b</code></a> Bumping version to 1.40.34</li> <li>Additional commits viewable in <a href="https://github.com/boto/boto3/compare/1.40.7...1.40.36">compare view</a></li> </ul> </details> <br /> Updates `mypy` from 1.17.1 to 1.18.2 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/python/mypy/blob/master/CHANGELOG.md">mypy's changelog</a>.</em></p> <blockquote> <h3>Mypy 1.18.2</h3> <ul> <li>Fix crash on recursive alias (Ivan Levkivskyi, PR <a href="https://redirect.github.com/python/mypy/pull/19845">19845</a>)</li> <li>Add additional guidance for stubtest errors when runtime is <code>object.__init__</code> (Stephen Morton, PR <a href="https://redirect.github.com/python/mypy/pull/19733">19733</a>)</li> <li>Fix handling of None values in f-string expressions in mypyc (BobTheBuidler, PR <a href="https://redirect.github.com/python/mypy/pull/19846">19846</a>)</li> </ul> <h3>Acknowledgements</h3> <p>Thanks to all mypy contributors who contributed to this release:</p> <ul> <li>Ali Hamdan</li> <li>Anthony Sottile</li> <li>BobTheBuidler</li> <li>Brian Schubert</li> <li>Chainfire</li> <li>Charlie Denton</li> <li>Christoph Tyralla</li> <li>CoolCat467</li> <li>Daniel Hnyk</li> <li>Emily</li> <li>Emma Smith</li> <li>Ethan Sarp</li> <li>Ivan Levkivskyi</li> <li>Jahongir Qurbonov</li> <li>Jelle Zijlstra</li> <li>Joren Hammudoglu</li> <li>Jukka Lehtosalo</li> <li>Marc Mueller</li> <li>Omer Hadari</li> <li>Piotr Sawicki</li> <li>PrinceNaroliya</li> <li>Randolf Scholz</li> <li>Robsdedude</li> <li>Saul Shanabrook</li> <li>Shantanu</li> <li>Stanislav Terliakov</li> <li>Stephen Morton</li> <li>wyattscarpenter</li> </ul> <p>I’d also like to thank my employer, Dropbox, for supporting mypy development.</p> <h2>Mypy 1.17</h2> <p>We’ve just uploaded mypy 1.17 to the Python Package Index (<a href="https://pypi.org/project/mypy/">PyPI</a>). Mypy is a static type checker for Python. This release includes new features and bug fixes. You can install it as follows:</p> <pre><code>python3 -m pip install -U mypy </code></pre> <p>You can read the full documentation for this release on <a href="http://mypy.readthedocs.io">Read the Docs</a>.</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python/mypy/commit/df05f05555ee62dbdb9960c64cad186172e92be1"><code>df05f05</code></a> remove +dev from version</li> <li><a href="https://github.com/python/mypy/commit/01a7a1285d03cb7a330359b22cb462aacb5f9720"><code>01a7a12</code></a> Update changelog for 1.18.2 (<a href="https://redirect.github.com/python/mypy/issues/19873">#19873</a>)</li> <li><a href="https://github.com/python/mypy/commit/ca5abf09f3bfc543ac9c18a364696bc5da20bc03"><code>ca5abf0</code></a> Typeshed cherry-pick: Make type of <code>unitest.mock.Any</code> a subclass of <code>Any</code> (<a href="https://redirect.github.com/python/mypy/issues/1">#1</a>...</li> <li><a href="https://github.com/python/mypy/commit/9d794b57d9c5b03d61caa3286756c05e0ae3021b"><code>9d794b5</code></a> [mypyc] fix: inappropriate <code>None</code>s in f-strings (<a href="https://redirect.github.com/python/mypy/issues/19846">#19846</a>)</li> <li><a href="https://github.com/python/mypy/commit/2c0510c84868b6bb42ef0f305b701e530a85c25f"><code>2c0510c</code></a> stubtest: additional guidance on errors when runtime is object.<strong>init</strong> (<a href="https://redirect.github.com/python/mypy/issues/19733">#19733</a>)</li> <li><a href="https://github.com/python/mypy/commit/2f3f03c3e39e68dbfa3544c01a34f99803b3e1c2"><code>2f3f03c</code></a> Bump version to 1.18.2+dev for point release</li> <li><a href="https://github.com/python/mypy/commit/76698412bc1f3ca99000d52649acd5a0e06aa71d"><code>7669841</code></a> Fix crash on recursive alias in indirection.py (<a href="https://redirect.github.com/python/mypy/issues/19845">#19845</a>)</li> <li><a href="https://github.com/python/mypy/commit/03fbaa941bccc3a9f8aea796d586603b67119bf2"><code>03fbaa9</code></a> bump version to 1.18.1 due to wheels failure</li> <li><a href="https://github.com/python/mypy/commit/b44a1fbf0cf9fd90fd29d6bcd9f64c55dd2fd4c8"><code>b44a1fb</code></a> removed +dev from version</li> <li><a href="https://github.com/python/mypy/commit/7197a99d1aebb1b7a584f82a53c44efb7dddf136"><code>7197a99</code></a> Removed Unreleased in the Changelog for Release 1.18 (<a href="https://redirect.github.com/python/mypy/issues/19827">#19827</a>)</li> <li>Additional commits viewable in <a href="https://github.com/python/mypy/compare/v1.17.1...v1.18.2">compare view</a></li> </ul> </details> <br /> Updates `types-pyyaml` from 6.0.12.20250809 to 6.0.12.20250915 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/typeshed-internal/stub_uploader/commits">compare view</a></li> </ul> </details> <br /> Updates `types-python-dateutil` from 2.9.0.20250809 to 2.9.0.20250822 <details> <summary>Commits</summary> <ul> <li>See full diff in <a href="https://github.com/typeshed-internal/stub_uploader/commits">compare view</a></li> </ul> </details> <br /> Updates `pytest-cov` from 6.2.1 to 7.0.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-cov/blob/master/CHANGELOG.rst">pytest-cov's changelog</a>.</em></p> <blockquote> <h2>7.0.0 (2025-09-09)</h2> <ul> <li> <p>Dropped support for subprocesses measurement.</p> <p>It was a feature added long time ago when coverage lacked a nice way to measure subprocesses created in tests. It relied on a <code>.pth</code> file, there was no way to opt-out and it created bad interations with <code>coverage's new patch system &lt;https://coverage.readthedocs.io/en/latest/config.html#run-patch&gt;</code>_ added in <code>7.10 &lt;https://coverage.readthedocs.io/en/7.10.6/changes.html#version-7-10-0-2025-07-24&gt;</code>_.</p> <p>To migrate to this release you might need to enable the suprocess patch, example for <code>.coveragerc</code>:</p> <p>.. code-block:: ini</p> <p>[run] patch = subprocess</p> <p>This release also requires at least coverage 7.10.6.</p> </li> <li> <p>Switched packaging to have metadata completely in <code>pyproject.toml</code> and use <code>hatchling &lt;https://pypi.org/project/hatchling/&gt;</code>_ for building. Contributed by Ofek Lev in <code>[#551](https://github.com/pytest-dev/pytest-cov/issues/551) &lt;https://github.com/pytest-dev/pytest-cov/pull/551&gt;</code>_ with some extras in <code>[#716](https://github.com/pytest-dev/pytest-cov/issues/716) &lt;https://github.com/pytest-dev/pytest-cov/pull/716&gt;</code>_.</p> </li> <li> <p>Removed some not really necessary testing deps like <code>six</code>.</p> </li> </ul> <h2>6.3.0 (2025-09-06)</h2> <ul> <li>Added support for markdown reports. Contributed by Marcos Boger in <code>[#712](https://github.com/pytest-dev/pytest-cov/issues/712) &lt;https://github.com/pytest-dev/pytest-cov/pull/712&gt;</code>_ and <code>[#714](https://github.com/pytest-dev/pytest-cov/issues/714) &lt;https://github.com/pytest-dev/pytest-cov/pull/714&gt;</code>_.</li> <li>Fixed some formatting issues in docs. Anonymous contribution in <code>[#706](https://github.com/pytest-dev/pytest-cov/issues/706) &lt;https://github.com/pytest-dev/pytest-cov/pull/706&gt;</code>_.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/224d8964caad90074a8cf6dc8720b8f70f31629b"><code>224d896</code></a> Bump version: 6.3.0 → 7.0.0</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/73424e3999f865eac72e27f09d5fe11b9703cfd6"><code>73424e3</code></a> Cleanup the docs a bit.</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/36f1cc2967831dbd4c8aa70086fc86dc495f8b9a"><code>36f1cc2</code></a> Bump pins in template.</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/f299c590a63a48e51e3ae949993dc7bb1f1d480d"><code>f299c59</code></a> Bump the github-actions group with 2 updates</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/25f0b2e0cdbc345c0d3e49170f7a328c3e0d805f"><code>25f0b2e</code></a> Update docs/config.rst</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/bb23eacc5531fb8f499213d8420407e0d72f88e3"><code>bb23eac</code></a> Improve configuration docs</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/a19531e91e1ab753ccf648a2d9bab08a6fddebb9"><code>a19531e</code></a> Switch from build/pre-commit to uv/prek - this should make this faster.</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/82f999391073f2fb8ae422af452602f310086a2a"><code>82f9993</code></a> Update changelog.</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/211b5cd41c29916bc643b4a11b00578ba4fd6fe8"><code>211b5cd</code></a> Fix links.</li> <li><a href="https://github.com/pytest-dev/pytest-cov/commit/97aadd74bcbc00a2078d240e8fe871dd62b83d80"><code>97aadd7</code></a> Update some ci config, reformat and apply some lint fixes.</li> <li>Additional commits viewable in <a href="https://github.com/pytest-dev/pytest-cov/compare/v6.2.1...v7.0.0">compare view</a></li> </ul> </details> <br /> Updates `pytest-rerunfailures` from 16.0 to 16.0.1 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pytest-dev/pytest-rerunfailures/blob/master/CHANGES.rst">pytest-rerunfailures's changelog</a>.</em></p> <blockquote> <h2>16.0.1 (2025-09-02)</h2> <ul> <li>Reverted the ability to access error attributes because of an incompatibility with <code>pytest-xdist &lt;https://github.com/pytest-dev/pytest-xdist/issues/843&gt;</code><em>. Fixes <code>[#302](https://github.com/pytest-dev/pytest-rerunfailures/issues/302) &lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/302&gt;</code></em>, <code>[#303](https://github.com/pytest-dev/pytest-rerunfailures/issues/303) &lt;https://github.com/pytest-dev/pytest-rerunfailures/issues/303&gt;</code>_.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pytest-dev/pytest-rerunfailures/commit/f97618f95c630af28bbecacc83fc8715146bfa57"><code>f97618f</code></a> Preparing release 16.0.1</li> <li><a href="https://github.com/pytest-dev/pytest-rerunfailures/commit/c60d17dee372d5ad935d6da35c6e13ba2d34018d"><code>c60d17d</code></a> Prepare release.</li> <li><a href="https://github.com/pytest-dev/pytest-rerunfailures/commit/91b0b043f3923b429dd9573536eeebc20dbe8996"><code>91b0b04</code></a> Make <code>pytest-xdist</code> happy again (<a href="https://redirect.github.com/pytest-dev/pytest-rerunfailures/issues/304">#304</a>)</li> <li><a href="https://github.com/pytest-dev/pytest-rerunfailures/commit/010a2c2904755e66a2271bc15ff268e628923ec1"><code>010a2c2</code></a> Back to development: 16.1</li> <li>See full diff in <a href="https://github.com/pytest-dev/pytest-rerunfailures/compare/16.0...16.0.1">compare view</a></li> </ul> </details> <br /> Dependabot 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`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> 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) - `@dependabot ignore <dependency name> 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) - `@dependabot ignore <dependency name>` 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) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

skip-changelog Use this label in Pull Request to not require new changelog entry file

5 participants