- Notifications
You must be signed in to change notification settings - Fork 23
CLOUDP-333692: Re-design images building #303
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
MCK 1.3.0 Release NotesOther Changes
|
d7ae339 to 6649987 Compare 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
This reverts commit 426e522.
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" |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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?
scripts/release/build_images.py Outdated
| 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): |
There was a problem hiding this comment.
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}") |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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( |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
…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
# 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>
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<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&version=46486">https://jira.mongodb.org/secure/ReleaseNote.jspa?projectId=10004&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>=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="confval"} 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="func"} and <code>decimal.Decimal</code>{.interpreted-text role="class"} instances with the <code>decimal.FloatOperation</code>{.interpreted-text role="class"} 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="meth"}.</p> </li> <li> <p><a href="https://redirect.github.com/pytest-dev/pytest/issues/13563">#13563</a>: <code>pytest.approx</code>{.interpreted-text role="func"} 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="user"}.</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>=4.12 from Python<3.10 to Python<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 >= 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 < 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 > 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) <https://github.com/pytest-dev/pytest-mock/issues/529></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) <https://github.com/pytest-dev/pytest-mock/pull/524></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 "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 <https://coverage.readthedocs.io/en/latest/config.html#run-patch></code>_ added in <code>7.10 <https://coverage.readthedocs.io/en/7.10.6/changes.html#version-7-10-0-2025-07-24></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 <https://pypi.org/project/hatchling/></code>_ for building. Contributed by Ofek Lev in <code>[#551](https://github.com/pytest-dev/pytest-cov/issues/551) <https://github.com/pytest-dev/pytest-cov/pull/551></code>_ with some extras in <code>[#716](https://github.com/pytest-dev/pytest-cov/issues/716) <https://github.com/pytest-dev/pytest-cov/pull/716></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) <https://github.com/pytest-dev/pytest-cov/pull/712></code>_ and <code>[#714](https://github.com/pytest-dev/pytest-cov/issues/714) <https://github.com/pytest-dev/pytest-cov/pull/714></code>_.</li> <li>Fixed some formatting issues in docs. Anonymous contribution in <code>[#706](https://github.com/pytest-dev/pytest-cov/issues/706) <https://github.com/pytest-dev/pytest-cov/pull/706></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 <https://github.com/pytest-dev/pytest-xdist/issues/843></code><em>. Fixes <code>[#302](https://github.com/pytest-dev/pytest-rerunfailures/issues/302) <https://github.com/pytest-dev/pytest-rerunfailures/issues/302></code></em>, <code>[#303](https://github.com/pytest-dev/pytest-rerunfailures/issues/303) <https://github.com/pytest-dev/pytest-rerunfailures/issues/303></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>
Re-design images building
Note for review:
Since
atomic_pipeline.pyis largely a refactored version ofpipeline.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.pyalong 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.pywe 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 frombuild_configuration.pyandbuild_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
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.pyhas been renamedlegacy_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:
pipeline.pyFollow up ticket to this PR: https://jira.mongodb.org/browse/CLOUDP-335471
Checklist
skip-changeloglabel if not needed