Skip to content

Update all non-major dependencies - #1219

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/all-nonmajor
Open

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/all-nonmajor

Conversation

@renovate

@renovate renovate Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Type Update Change Age Confidence
astral-sh/setup-uv action patch v10.3.2 → v10.3.3 age confidence
astral-sh/uv uses-with patch 0.13.5 → 0.13.7 age confidence
boto3 project.optional-dependencies patch ==1.43.118 → ==1.43.124 age confidence
boto3 dependency-groups patch ==1.43.118 → ==1.43.124 age confidence
mypy (changelog) dependency-groups patch ==2.4.0,<3 → ==2.4.1,<3 age confidence
pytest (changelog) dependency-groups minor >=9.1.1,<9.2.0 → >=9.2.0,<9.3.0 age confidence
pytest-asyncio (changelog) dependency-groups patch ==1.4.1 → ==1.4.1.post1 age confidence

Release Notes

astral-sh/setup-uv

v10.3.3: 🌈 Use Astral mirror for version manifests with GitHub fallback

Compare Source

Changes

This release contains something that should have been included a very long time ago. Sorry for sleeping on that.

This action now retrieves the release manifest that contains the available versions, their download links and checksums from the Astral mirror, rather than trying GitHub first. This should present much more stable.
(Known checksums are still checked, so the security impact does not change)

Also a big thank you to @​soujasK for a set of bugfixes 👏

🐛 Bug fixes
🧰 Maintenance
📚 Documentation
astral-sh/uv

v0.13.7

Compare Source

Released on 2026-11-03.

Preview features
  • Add --output-version to uv workspace metadata for requesting a specific schema version (#​22958)
  • Report aliased OSV records as a single vulnerability in uv audit (#​22990)
Bug fixes
  • Treat workspace member paths added by uv init or uv add as literals instead of glob patterns (#​23008)
  • Prevent uv's Windows trampolines from closing handles they did not inherit (#​22977)
  • Allow uvx to run tools with CPython builds whose versions contain local identifiers (#​23013)
  • Generate valid module names when uv init creates packaged projects whose names start with a digit (#​23022)
  • Preserve comments around existing inline dependency groups when uv add updates a group (#​23017)
  • Allow uv remove with an empty inline tool.uv.sources table (#​23012)
Documentation
  • Correct the cache-keys inline table example (#​22984)

v0.13.6

Compare Source

Released on 2026-10-26.

Enhancements
  • Accept an empty UV_RUN_RECURSION_DEPTH as zero and report invalid values consistently (#​22814)
  • Explain how to add project metadata when uv init finds a pyproject.toml without a [project] table (#​22916)
Python
  • Add CPython 3.11.18, 3.12.16, 3.13.18, 3.14.10, and 3.15.2 (#​22938)
Preview features
  • Detect NVIDIA GPU capabilities when selecting compatible wheel variants with wheel-variants (#​22690)
  • Nest each module's owners in an object in uv workspace metadata output (#​22638)
  • Report the unsupported properties required by an incompatible wheel variant (#​22719)
Performance
Bug fixes
  • Prevent uv run --active --script and uv sync --active --script from deleting non-virtual-environment directories (#​21464)
  • Use AMD64 for platform_machine when resolving for x86-64 Windows (#​22935)
  • Preserve free-threaded and other non-default variants in uv python upgrade (#​22836)
  • Allow uv init --no-package and uv init --script when UV_INIT_BUILD_BACKEND is set (#​22907)
  • Prevent panics when rendering containment markers with local versions (#​22815)
Documentation
  • Update the Docker guide and reproduction examples to use uv 0.13.5 (#​22867)
boto/boto3 (boto3)

v1.43.124

========

  • api-change:connect: [botocore] Adds support for retrieving associated cases in contact responses. The Contact object now includes a Cases field containing case IDs and reference numbers linked to the contact.
  • api-change:connect-contact-lens: [botocore] Rules TBAC GA (Contact Lens V1) - Adds an optional ListFilter (CategoriesAttributeFilter with OrConditions, AndCondition and TagCondition) to ListRealtimeContactAnalysisSegments. This filters matched categories by rule tags. It also adds an optional RuleId to CategoryDetails in the response.
  • api-change:dynamodb: [botocore] Adds StartBulkPutItems, DescribeBulkOperation, ListBulkOperations, and CancelBulkOperation for asynchronously loading Amazon S3 datasets into existing DynamoDB tables.
  • api-change:ec2: [botocore] Add the Unsupported SupportabilityScore to GetCapacityManagerSupportabilityScores.
  • api-change:ecs: [botocore] Amazon ECS Managed Instances now supports the json-file log driver in task definitions. Daemon task definition volumes also support logDriverVolumeConfiguration, letting managed daemons read those logs.
  • api-change:elasticbeanstalk: [botocore] Adds DefaultAmiList to DescribePlatformVersion to return the default AMI for each processor architecture that a platform version supports.
  • api-change:emr: [botocore] Added StepAdditionalInfo on DescribeStep and ListSteps to surface YARN application IDs for steps.
  • api-change:iotsitewise: [botocore] Adds support for an optional jobName on CreateDatasetExportJob. The jobName is returned by DescribeDatasetExportJob and ListDatasetExportJobs, making dataset export jobs easier to identify and track. If jobName is omitted, a default name is generated automatically.
  • api-change:lookoutequipment: [botocore] Amazon Lookout for Equipment reached end of support on October 7, 2026. All Lookout for Equipment APIs are now marked as deprecated.
  • api-change:marketplace-discovery: [botocore] GetListing and SearchListings APIs now return G2 and PeerSpot review sources in review summaries.
  • api-change:mgn: [botocore] This release adds Migration Planning artifacts as a source environment for network migration definitions, and an optional clientToken on CreateNetworkMigrationDefinition so that retried requests don't create duplicate definitions.
  • api-change:mwaa-serverless: [botocore] Adding support to Environment Variables in MWAA Serverless
  • api-change:polly: [botocore] Amazon Polly now supports tagging lexicons. Use the new TagResource, UntagResource and ListTagsForResource APIs, or add tags when creating a lexicon with PutLexicon, to organize lexicons and control access with tag-based (ABAC) IAM policies.
  • api-change:rds: [botocore] Adding support for copying and tagging option groups with cross-Region DB snapshot copies, in the same account or across accounts.
  • api-change:rolesanywhere: [botocore] Adds the crlDpRevocationEnabled field to enable automatic revocation checking using CRL distribution points in X.509 certificates.
  • api-change:s3tables: [botocore] Amazon S3 Tables now supports migrating AWS Glue Data Catalog tables into S3 Table buckets. This release adds the StartTableMigration, SyncTableMigration, UpdateTableMigration, CompleteTableMigration, GetTableMigration, and ListTableMigrations APIs.
  • api-change:securityhub: [botocore] Release Software APIs- GetSoftwareV2, GetSoftwareStatisticsV2 and GetSoftwareResourcesV2 to list software packages with aggregated resource count, get aggregated software statistics, and find the resources that contain a specific software package.
  • api-change:taxsettings: [botocore] Adds Colombia additional information (responsibility codes, taxpayer type code, and RUT issue date) and a rejection reason (statusReason) to tax registration responses, and adds Argentina and Uruguay tax registration types.
  • api-change:workspaces: [botocore] Add Ubuntu 24.04, Ubuntu 26.04, RHEL 9, RHEL10, Rocky 9 and Rocky 10 to OperatingSystemName and documentation update for WorkspaceProperties Protocols.

v1.43.123

Compare Source

========

  • api-change:amp: [botocore] Managed Prometheus collectors now support Amazon MSK consumer-group metrics for Amazon Managed Service for Prometheus and CloudWatch.
  • api-change:bedrock-agent-runtime: [botocore] Adds the CodeExecution step and codeExecution action to AgenticRetrieveStream trace events, showing when the agent runs code and which documents it reads.
  • api-change:connect: [botocore] Amazon Connect adds tag-based access control for Contact Lens rules. ListRealtimeContactAnalysisSegmentsV2 adds a ListFilter to return only category segments whose rules match given tags. PreEvaluationFilter now supports contact evaluation resources for OnContactEvaluationSubmit rules.
  • api-change:customer-profiles: [botocore] Adds support for template ingestion controls in the GetProfileObjectTypeTemplate API response.
  • api-change:docdb: [botocore] Amazon DocumentDB now returns ServerlessV2PlatformVersion in DBCluster API responses and adds the DescribeServerlessV2PlatformVersions API to discover available platform versions and their capabilities.
  • api-change:lambda: [botocore] Adds ConsumptionMode to SelfManagedKafkaEventSourceConfig, letting Lambda event source mappings consume self-managed Apache Kafka topics as a queue. Set ConsumptionMode to Queue when creating an event source mapping.
  • api-change:logs: [botocore] Adds support for account-level retention policies in Amazon CloudWatch Logs. Customers can now use PutAccountPolicy with the new RETENTION POLICY type to set default log retention across all log groups in an account. Includes dry-run mode to preview the impact of policy changes before applying them.
  • api-change:omics: [botocore] Adds the outputUriPrefixMode parameter to StartRun and GetRun. You can now write run outputs directly under outputUri, without the prefixes the service adds by default. When you opt in, outputs overwrite existing objects at the same keys.
  • api-change:sagemaker: [botocore] Create endpoints with AcceleratorPartitionLayouts on ProductionVariant and deploy inference components with AcceleratorPartitionType in ComputeResourceRequirements to divide accelerators into hardware-isolated NVIDIA MIG partitions, running multiple models per GPU. P4d, P5, G7, G7e.
  • api-change:timestream-influxdb: [botocore] Add DeploymentConfiguration field to CreateDbCluster and UpdateDbCluster APIs to support creation of heterogenous InfluxDB v3 Enterprise clusters.

v1.43.122

Compare Source

========

  • api-change:bedrock-agentcore: [botocore] Adds AgentCore Runtime session endpoint support, including sessionEndpointUrl on the InvokeAgentRuntime response
  • api-change:bedrock-agentcore-control: [botocore] Adds Session Endpoint Feature on AgentCore Runtime
  • api-change:cleanrooms: [botocore] Adds support for the PySpark 2.0 analysis template format and for choosing the file format (CSV or Parquet) of protected job results written to Amazon S3, including in a membership's default job result configuration.
  • api-change:imagebuilder: [botocore] This release adds support for on-demand AMI scanning with Amazon Inspector.
  • api-change:lightsail: [botocore] This release adds support for instance health status checks and system status checks.
  • api-change:wafv2: [botocore] AWS WAF customers using Targeted Bot Control, ATP, or ACFP managed rule groups can now enable automatic Challenge JavaScript SDK injection. When enabled, Amazon CloudFront injects the script tag into HTML responses on your behalf, removing the need for manual integration.
  • bugfix:s3: [botocore] Prevent generate_presigned_post from mutating the caller's Conditions list.
  • enhancement:AWSCRT: [botocore] Update awscrt version to 0.38.0

v1.43.121

Compare Source

========

  • api-change:acm: [botocore] AWS Certificate Manager now supports the Automatic Certificate Management Environment (ACME) protocol in the AWS GovCloud (US-East) and AWS GovCloud (US-West) Regions.
  • api-change:artifact: [botocore] Update support mode for Assurance Assistance
  • api-change:connect: [botocore] Amazon Connect APIs - CreateTaskTemplate and UpdateTaskTemplate accept a new ContactHooks parameter called WrapUpFlowId to identify the flow module that runs when an agent attempts to disconnect from a task created with the template. Use this to verify an agent's work or update external case repos.
  • api-change:connectparticipant: [botocore] Amazon Connect Participant Service now supports the optional UrlContentDisposition parameter on GetAttachment, which returns a pre-signed URL that renders a chat attachment inline in the browser instead of forcing a download.
  • api-change:ec2: [botocore] Amazon EC2 Capacity Manager adds supportability checks and capacity fulfillment metrics. Use GetCapacityManagerSupportabilityScores to score how well instance types and Availability Zones can support a capacity request, and GetCapacityManagerMetricData to retrieve fulfillment metrics.
  • api-change:endpoint-rules: [botocore] Update endpoint-rules client to latest version
  • api-change:ivs: [botocore] InsertAdBreak now allows setting a customized adBreakId on a request and also adds a new field targetStartAt for a delayed ad insertion
  • api-change:kafkaconnect: [botocore] Amazon MSK Connect now supports updating a connector's custom plugin and worker configuration via the UpdateConnector API. MSK Connect checks connector and task health after the update and rolls back on failure. Each call returns an operation ARN to track with DescribeConnectorOperation.
  • api-change:medialive: [botocore] AWS Elemental MediaLive now supports SMPTE 2022-7 seamless protection switching for multicast inputs on MediaLive Anywhere. Support for MulticastSettings sources to add a redundant copy of the stream received on a second network interface.
  • api-change:neptunedata: [botocore] Get Storage API analyzes storage usage to identify database bloat and your storage footprint. Index Rebuild API triggers on-demand index reconstruction to eliminate bloat and restore query performance.
  • api-change:opensearch: [botocore] This release adds APIs to simplify setting up a replication relationship between OpenSearch clusters. The APIs include new Switchover and Failover actions for planned switchovers and unplanned failovers to ensure high availability for OpenSearch in the event of disaster in a single region.
  • api-change:securityagent: [botocore] Adds support for attaching client certificates for mutual TLS (mTLS) authentication to penetration test target endpoints via the new ClientCertificates field on Assets, enabling pentesting of endpoints that require client certificate authentication.

v1.43.120

Compare Source

========

  • api-change:bedrock-agentcore-control: [botocore] Adds the ResetTokenVaultKeyMaterial API, which restores a token vault whose customer managed key was deleted by moving it to an AWS owned key. The reset permanently deletes the stored OAuth 2.0 tokens, users must consent again. Adds on-behalf-of token exchange client authentication override option.
  • api-change:ec2: [botocore] EC2 AMIs can now show vulnerability data and be targeted directly for scanning.
  • api-change:ecs: [botocore] ECS now supports GPU sharing via NVIDIA Multi-Process Service (MPS) on ECS Managed Instances and ECS EC2, allowing multiple ECS tasks to share a single Nvidia GPU for improved utilization.
  • api-change:inspector2: [botocore] Adding support for Machine Image scan
  • api-change:license-manager: [botocore] AWS License Manager now supports delegate grants for read-only visibility into license distributions. CreateGrant accepts a new GrantType (BuyerGrant or DelegateGrant) and a desired status at distribution time.
  • api-change:lightsail: [botocore] Added the attributeUpdates parameter to the Lightsail StartInstance API, which allows customers to update the attributes of a stopped instance when starting it.

v1.43.119

Compare Source

========

  • api-change:appstream: [botocore] Add Windows 11 to PlatformType enum
  • api-change:billing: [botocore] Adds support for managing private pricing contracts and contractual investments including listing and associating contracts, retrieving contractual investments and their summaries, and creating, listing, and canceling contractual investment attestations
  • api-change:connect: [botocore] Amazon Connect now automatically saves agents' in-progress email drafts preserving the message, recipients, and subject during browser or network interruptions so agents can return to the mail and continue instead of starting over.
  • api-change:deadline: [botocore] fix the sdk documenation issue only
  • api-change:ecr: [botocore] Add support for ECR replication backfill
  • api-change:eks: [botocore] This release adds support for EKS management of Gateway API CRDs (Custom Resource Definitions)
  • api-change:ivs: [botocore] The release adds failover slate configurations, which show viewers a slate during temporary broadcaster network disruptions to reduce viewer drop-off and refresh storms.
  • api-change:kms: [botocore] This release adds support for ML-KEM (Module-Lattice-Based Key-Encapsulation Mechanism) keys in AWS KMS. ML-KEM, as specified in NIST FIPS 203, is a post-quantum key encapsulation mechanism that can be used to establish a shared secret between two parties.
  • api-change:lightsail: [botocore] This release adds Web Application Firewall (WAF) support for Lightsail distribution.
  • api-change:marketplace-catalog: [botocore] This release adds support for the SubsidiaryAuthorization entity type in the ListEntities operation, including entity-type filters with partial name search, sort options, and a summary returned for each subsidiary authorization.
  • api-change:mediaconnect: [botocore] This release adds support for managing and sharing endpoint across accounts in AWS Elemental MediaConnect. You can now register endpoints to represent external or service-managed sources and destinations, and share them across AWS accounts.
  • api-change:medialive: [botocore] AWS Elemental MediaLive now lets you control whether explicit weighted prediction is applied to H.264 outputs. It also introduces Perceptual Filter, a new noise reduction filter designed to improve video quality by increasing VMAF scores, now with Auto, None, and strength options.
  • api-change:odb: [botocore] Adds support for Exascale storage with Oracle Exadata Database Service on Dedicated Infrastructure
  • api-change:sagemaker: [botocore] Amazon SageMaker HyperPod adds the MultiNodeTrainingValidation deep health check for clusters orchestrated by Amazon EKS. It validates NVIDIA GPU instances by running a short multi-node training workload and flags instances that produce numerical errors or fall behind expected training time.
  • api-change:signin: [botocore] Adds support for the OAuth 2.0 Token Exchange grant (RFC 8693), enabling applications to exchange identity provider issued JSON Web Tokens (JWTs) for short-lived OAuth access tokens to access supported AWS services without managing separate AWS credentials.
  • api-change:sso-admin: [botocore] Added support for the RegionScope parameter on ListInstances, allowing you to list IAM Identity Center instances in the current Region or across all Regions.
  • api-change:taxsettings: [botocore] Add Mexico Additional Info changes
python/mypy (mypy)

v2.4.1

Compare Source

  • Process overloads as a whole in two-phase type checking (Ivan Levkivskyi, PR 22231)
  • Skip recursive setup for frame-private nested functions in mypyc (Piotr Sawicki, PR 22187)
pytest-dev/pytest (pytest)

v9.2.0

Compare Source

pytest 9.2.0 (2026-10-27)

Removals and backward incompatible breaking changes

  • #​14716: -c now raises a usage error for a path that does not exist, is a directory, or is in a format pytest has no loader for. Such paths were previously either ignored or reported as an unhandled FileNotFoundError.

  • #​8593: The indirect, ids and scope arguments of Metafunc.parametrize() <pytest.Metafunc.parametrize> -- and therefore of @pytest.mark.parametrize <pytest.mark.parametrize ref> -- are now keyword-only.

    Passing them positionally was a common source of confusing errors, e.g. parametrize("arg1", "arg2", [(1, 2)]) made the argvalues land in indirect and failed with indirect fixture '(1, 2)' doesn't exist; such mistakes now fail with an understandable TypeError. The type annotations have always declared these arguments as keyword-only.

  • #​993: Plugin import failures at startup are now reported and classified instead of escaping as a raw traceback with the accidental exit code 1:

    • a plugin that cannot be found -- via -p, pytest_plugins or PYTEST_PLUGINS -- exits with pytest.ExitCode USAGE_ERROR (4), like a conftest.py that fails to import;
    • a plugin that is found but raises while importing -- including a broken pytest11 entry point or a missing plugin dependency -- exits with pytest.ExitCode INTERNAL_ERROR (3), with the traceback preserved.

    pytest.main now returns these codes instead of raising ImportError. Also fixed an IndexError from pytest's own internals when the plugin raised an exception with no arguments.

Deprecations (removal in next major release)

  • #​14742: The private _pytest.python.CallSpec2 name has been renamed to CallSpec.
    The old CallSpec2 alias remains available for now and will be removed in pytest 10 or 11.

  • #​14755: Schedule yield_fixture decorator for removal in pytest 10 or 11.

  • #​14774: Similarly to the deprecation of class-scoped fixtures defined as instance methods in pytest 9.1,
    all higher-scoped fixtures (module, package, and session) defined
    as instance methods are now deprecated.

    They suffer from the same issue the original deprecation only fixed for
    class-scoped fixtures, see 10819 and 14011.

  • #​14808: Passing a non-string value to a string-typed ini option now emits a pytest.PytestRemovedIn10Warning. This affects [tool.pytest.ini_options] in pyproject.toml. In pytest 10 this will raise a TypeError, matching the behavior of the corresponding TOML config path.

  • #​7323: Passing bytes to TerminalReporter.write_line() is now deprecated, pass a str instead.

New features

  • #​14743: Full diff: now contains a legend explaining the + & - symbols in diff output.
  • #​2781: When strict_markers is enabled, marker names used in -m expressions are now validated against registered markers.
  • #​6881: Added the parametrize_long_str_id_strategy configuration option to control how long str/bytes parameter values are handled in auto-generated test IDs. Explicit IDs set via ids=[...] or pytest.param(..., id=...) are not affected. Available strategies: short (default, values over 100 chars fall back to argname+index), sha256 (SHA-256 hex digest), legacy (keep full value), and disallow (error requesting explicit IDs).

Improvements in existing functionality

  • #​10745: A RecursionError whose recursion origin cannot be located now shows only the
    first and last 10 stack frames, matching what pytest already did when locating
    the origin failed outright. Previously the full traceback -- often around a
    thousand near-identical frames -- was rendered, which was both slow and
    unreadable. Pass --full-trace to see every frame.

  • #​10745: The line numbers of a module's statements are now computed once per traceback
    instead of once per traceback entry, which noticeably speeds up rendering
    failures raised from large test modules.

  • #​11418: The cached rewritten modules in __pycache__ are now invalidated by a hash of
    the source instead of its modification time, using the checked-hash pyc format
    from 552.

    Timestamps make the cache useless wherever source files get fresh modification
    times, most notably in CI: a checkout gives every file a new mtime, so a
    restored cache is discarded in full and every test module is rewritten again.
    Hashing the source costs roughly 15 microseconds per file and makes the cache
    survive that.

    Existing timestamp based caches are ignored and rewritten once.

  • #​12624: The pytest_plugins variable and the PYTEST_PLUGINS environment variable now also accept entry point names of installed plugins (e.g. xdist), in addition to importable module names, matching the behavior of the -p command-line option.

    As part of this change, plugins specified by entry point name through these mechanisms are now also listed in the plugins: line of the terminal header (12615).

    Based on the original implementation by Marcel Telka in 12616.

  • #​12697: Warnings emitted while importing plugins through -p, PYTEST_PLUGINS, or entry point autoloading are now captured, filtered, and reported like other warnings.

  • #​12860: Assertion diffs for dict.items() and dict.keys() comparisons (>=, <=, >, <, ==) now show which items are missing, the same way set comparisons do.

  • #​13354: Node.get_closest_marker <_pytest.nodes.Node.get_closest_marker> now also accepts a ~pytest.MarkDecorator as its default, for example item.get_closest_marker("foo", pytest.mark.foo(1)), and returns the wrapped ~pytest.Mark.

    Previously the only way to build a default was to instantiate ~pytest.Mark directly, which is private and warns.

  • #​13369: Improved the error from pytest.RunResult.assert_outcomes when a plugin changes or removes pytest's standard terminal summary, and documented how to isolate output-changing plugins.

  • #​13431: Exposed pytest.ParameterSet as the type of the return value of pytest.param().
    This can be used in type annotations and isinstance checks.

  • #​13564: Issue a warning when fixtures are wrapped with a decorator that prevents
    correct discovery, including @classmethod above @pytest.fixture and
    @staticmethod above @pytest.fixture. Put @pytest.fixture above
    those decorators on test classes.

  • #​14164: Exposed pytest.Approx as the type of the return value of pytest.approx().
    This can be used in type annotations and isinstance checks.

  • #​14463: Assertion diffs for mappings now match up keys the way the compared mappings match them themselves.

    Key comparison goes through the mappings' key views instead of plain sets of their keys, so a mapping
    with its own notion of key equivalence, such as case-insensitive header mappings, no longer
    reports its common keys as missing on either side.

  • #​14523: Large assertion comparison diffs are now built lazily and capped to the
    truncation budget, so a huge diff is no longer formatted in full just to
    be truncated. As a consequence, the truncation footer no longer
    reports the exact number of hidden lines.

  • #​14687: The default fd-level output capturing (--capture=fd) now skips reading the capture buffer for tests which produce no output, reducing per-test overhead in large test suites.

  • #​14724: --no-summary now only applies directly to pytest's own summary.

    The flag no longer skips the pytest_terminal_summary hook, so third-party
    plugins (for example coverage) can still write their terminal summaries.

  • #​14751: parser.addini <pytest.Parser.addini> now also accepts type expressions for its type argument, in addition to the existing string tags: the plain Python types str, bool, int, float, a Literal of strings, and unions of these (for example int | str or int | Literal["auto"]).

  • #​14754: pytest.approx() now rejects infinite relative tolerances for datetime.timedelta values with a clear ValueError instead of raising OverflowError.

  • #​14791: The junit_family, junit_logging, junit_duration_report, console_output_style, empty_parameter_set_mark, assertion_text_diff_style and tmp_path_retention_policy configuration options are now registered with the set of values they accept: an invalid value now fails with a clean usage error instead of being silently ignored or crashing later, and pytest --help lists the accepted values.

    config.getini <pytest.Config.getini> now raises pytest.UsageError instead of TypeError or ValueError when the value read from the configuration file does not match the registered type, so a bad value is always reported as a short usage error message instead of an internal error traceback. Asking for an option name that was never registered still raises ValueError.

  • #​15006: pytest.approx now emits pytest.PytestApproxDecimalToleranceWarning when a rel or abs tolerance is given as a float that cannot be represented exactly for a ~decimal.Decimal comparison, since such a tolerance is widened to the float's exact binary value.

  • #​14675, #​14953, #​15153, #​15132: The truncation_limit_lines, truncation_limit_chars, max_warnings, verbosity_assertions, verbosity_test_cases, verbosity_subtests, tmp_path_retention_count, log_level, log_cli_level, log_file_level,log_auto_indent and faulthandler_timeout configuration options now accept native integer (and, for log_auto_indent, boolean) values in TOML configuration files, while still accepting strings for backward compatibility.
    log_file_mode now reports invalid values as a usage error.

  • #​15254: tmp_path and TempPathFactory.mktemp <pytest.TempPathFactory.mktemp> no longer list the whole base temporary directory on every call, which made sessions with many temporary directories quadratically slow. Numbers are now handed out from a per-prefix counter, skipping names that already exist.

  • #​4569: Node.add_marker <_pytest.nodes.Node.add_marker> now stores a ~pytest.Mark in node.keywords, matching what marks applied during collection store. Previously it stored a ~pytest.MarkDecorator.

  • #​9436: Avoided formatting tracebacks for tests marked with xfail(run=False).

Bug fixes

  • #​10128: Configured warning filters now apply to warnings emitted by pytest_configure hooks.

  • #​10210: pytest.approx now raises a TypeError for any nested container, not
    only for one of the same type as its parent. Previously approx([{"k": 1}])
    and approx({"k": [1]}) were accepted and then compared unequal to every
    value, silently ignoring the tolerance, while approx([[1]]) correctly
    reported that nesting is unsupported.

  • #​10644: monkeypatch.setattr() no longer leaves a new entry in the instance __dict__ when it patches an attribute that the instance inherits from its class.

    Previously undo() assigned the inherited value onto the instance, which shadowed the class attribute -- permanently freezing the result for descriptors that resolve dynamically.

  • #​1139: Fixed tracebacks showing ??? instead of source lines for code compiled with a filename relative to a directory other than the current working directory -- e.g. compiled Cython modules, when running pytest from a subdirectory of the project root.
    The source lookup now falls back to searching sys.path for such filenames, as the standard traceback module does.

  • #​11502: The rootdir is no longer derived from a configuration file that is not a regular file, such as --config-file=/dev/null.

  • #​11783: Plugins installed in editable mode (660) are marked for assertion rewriting again.

    Such installs do not record the package's Python files in the distribution metadata, so pytest found nothing to rewrite and assertions inside the plugin lost their introspection. The plugin's entry point is now used to locate the package in that case.

  • #​11933: pytest.warns no longer re-emits unmatched warnings with module="warnings", which caused module-based warning filters to be applied to the wrong warnings. Since warnings.WarningMessage does not record the module a warning was emitted with, re-emitted warnings now use the standard warnings.warn_explicit default of deriving the module from the warning's filename.

  • #​12175: ExceptionInfo.exconly(tryshort=True) <pytest.ExceptionInfo.exconly> now strips the AssertionError: prefix of failed assert statements for ~pytest.ExceptionInfo objects created by pytest.raises, and failures inside unittest.TestCase.subTest report the same short crash line as regular tests.

  • #​12223: The message attribute of <failure> and <error> elements in --junitxml reports is now shortened to whole lines within 500 characters. When something is dropped, it ends with a note pointing to the element text, which still holds the full report. Previously, very verbose assertion output (e.g. with -vv) produced attributes tens of thousands of characters long, which some XML parsers fail on.

  • #​12307: Fixed truncation of long collections (lists, dicts, sets, etc.) in the "message" part of failed assertions (as in assert condition, msg) when using -vv: the message now uses the same unlimited repr as the rest of the assertion output, instead of eliding collection elements with ....

  • #​12824: Custom command-line options now fail with a clear error when their implicit
    destination conflicts with an existing option, avoiding silent overrides of
    built-in options such as -k.

  • #​13292: Fixed a stale rewritten module being used when a test file is modified twice
    within the same second without changing its size -- the pyc header could only
    record whole-second timestamps. The cache is now keyed on a hash of the source.

  • #​14036: __tracebackhide__ is now respected in ExceptionGroup tracebacks, both for the group itself and for its sub-exceptions.

  • #​14189: Nested usage of caplog.filtering <pytest.LogCaptureFixture.filtering> no longer removes filters early if they were already present.

  • #​14412: Fixed incorrect timing information for subtests and parent tests when console_output_style = "times".

  • #​14445: Assertion rewriting no longer evaluates walrus operator (:=) expressions more than once, which reported results the test never computed when the expression had side effects.

    An operand evaluated before a later walrus is now reported with the value it actually saw, so assert value != identity(value := value.lower()) keeps Python's left-to-right order.

  • #​14552: Fixed stale co_filename values after a test module or directory is moved. Assertion-rewrite caches are reused when the source hash still matches, and in-memory code objects are pointed at the current path.

  • #​14586: Negative values passed to log_auto_indent now correctly fall back to no indentation, matching the documented behavior.

  • #​14619: Fixed a crash in pytest.mark.parametrize when a non-sequence value is passed for a parameter set. It now provides a clear error message during collection.

  • #​14635: Fixed fixture resolution failures when specifying multiple test paths on the command line that share common parent directories. Parametrized fixtures defined in a conftest.py could be silently dropped depending on the order of the specified paths.

  • #​14637: Pytest now correctly skips identical trailing characters in assertion text diffs even when the compared strings differ at the beginning.

  • #​14638: Top-level options in pytest.toml and .pytest.toml files now raise an error instead of being silently ignored when no [pytest] table is present.

  • #​14683: Fixed a regression in pytest 9.1 where a conftest.py located in the rootdir was no longer visible to tests and doctests collected from outside the rootdir (for example when passing a parent directory of the rootdir as a collection argument, or setting --rootdir to a subdirectory).

    As a result, fixtures defined in such a conftest -- including doctest_namespace injections -- were not available, causing errors such as NameError in doctests.

  • #​14700: Fixed an internal error on Python 3.12 when a doctest on a fixture-decorated function was skipped.

  • #​14705: TOML configuration files passed via -c now also read their configuration from the [pytest] table, the one pytest's own configuration files use. The [tool.pytest] and [tool.pytest.ini_options] tables such files were previously restricted to keep working; using both styles in one file is an error.

  • #​14828: Exception groups raised from another exception now print their cause chain only once in the traceback output.

  • #​14864: Fixed collection on Windows collecting the whole suite instead of the given path, on file systems which do not support file IDs (st_ino is 0 for every file, as seen for example on sshfs-win/WinFsp mounts).

  • #​14884: Cache.get(), Cache.set() and Cache.mkdir() now reject keys that resolve outside the cache directory, and --cache-show ignores glob matches outside it.

  • #​14909: Fixed MonkeyPatch.delattr <pytest.MonkeyPatch.delattr>, MonkeyPatch.setitem <pytest.MonkeyPatch.setitem> and MonkeyPatch.delitem <pytest.MonkeyPatch.delitem> recording a stale undo entry when the underlying mutation failed, which could cause spurious errors during teardown. The undo entry is now recorded only after the mutation succeeds, matching the behavior of MonkeyPatch.setattr <pytest.MonkeyPatch.setattr>.

  • #​14912: ~pytest.PytestWarning instances defined in _pytest.deprecated are no longer reused across warnings.warn calls, so warnings raised as errors (e.g. with -W error) no longer accumulate stale traceback frames from previous raises.

  • #​14942: Fixed a regression in 9.1.0 that made collection very slow (quadratic) when many fixtures are defined with the same name.
    This can happen particularly when many tests are defined in separate classes which inherit from a base class which defines fixtures (the fixtures are repeated per class).

  • #​15005: pytest.approx no longer treats finite ~decimal.Decimal values outside the float range (such as Decimal("1e400")) as infinite, which made in-tolerance comparisons fail.

  • #​15006: Restored the tolerance shown by pytest.approx for ~decimal.Decimal values, which since 9.0 displayed ??? for the default tolerance and reported the raw rel ratio instead of the absolute tolerance actually compared against.

  • #​15006: The failure message for pytest.approx comparisons of ~decimal.Decimal collections no longer reports Max absolute difference: -inf, or crashes for mappings, when the decimal.FloatOperation trap is set.

  • #​15006: pytest.approx no longer raises AttributeError when comparing numpy.ndarray instances with object dtype, such as arrays of ~decimal.Decimal.

  • #​15032: Help texts for command-line options and configuration options now keep their indentation
    and blank lines. Previously each line was stripped before wrapping, so a wrapped
    list item was indistinguishable from a new one and blank lines were dropped; configuration
    option help lost its line breaks entirely.

  • #​15043: Cache writes now emit pytest.PytestCacheWarning when writing or closing the cache file fails, consistent with errors opening the file.

  • #​15052: Fixed possible off-by-one line numbers in --fixtures and --fixtures-per-test output.

  • #​15145: With console_output_style set to times, durations just below a unit boundary are now shown in the next unit (e.g. 1.000ms instead of 1000.0us).

  • #​15172: Assertion diffs now pretty-print the built-in frozendict (Python 3.15+) across multiple lines, similarly to how dict is displayed.

  • #​4569: -k no longer matches attributes that end up in a test function's __dict__ without being meant as keywords, such as pytest's own pytestmark attribute and the bookkeeping left behind by functools.wraps and functools.lru_cache.

  • #​6750: Fix fixture argument discovery for custom collectors that pass bound methods to pytest.Function.

  • #​6997: XFAIL reports from teardown phases now include the phase in the short test
    summary.

  • #​7940: Fixed cleanup of temporary directories failing when subdirectories have their execute permission removed.

  • #​8321: Fixed exception chains being duplicated in the traceback output when an exception in the chain (__cause__/__context__) has no traceback of its own, and that exception is itself linked to further exceptions.

  • #​8914: Tests parametrized with higher-than-function scope are now reordered by
    parameter value rather than by parameter index, so that items using equal
    parameter values are grouped together and share a single fixture setup, even
    when they are parametrized by separate @pytest.mark.parametrize <pytest.mark.parametrize ref>
    calls. Previously, an expensive higher-scoped fixture could be set up and torn
    down repeatedly for the same parameter value.

    Unhashable parameter values (e.g. dicts) keep the previous index-based
    grouping behavior.

    As a consequence, the order in which parametrized tests run may change
    (fixture setup/teardown counts can only decrease, not increase).

  • #​9924: Fixed doctest option flags leaking between docstrings after a failure, skip, or expected failure.

Improved documentation

  • #​10721: Replaced setup.py usage with pyproject.toml in writing-plugins.
  • #​12658: Moved the fixture setup and finalizer hooks to the test running hooks section in the reference documentation.
  • #​12857: Documented how --confcutdir affects initial conftest.py discovery.
  • #​14157: Added the pytest-flakefighters plugin to the list of flaky test plugins in plugins.rst.
    Added flaky test papers published on the Test FLARE project to the list of flaky papers in plugins.rst.
  • #​15127: Added guidance on typing yield fixtures, including annotating fixture functions with their generator type and fixture consumers with the yielded value type.
  • #​15242: The installation instructions <installation> and install-package-with-pip now show how to install pytest into a virtual environment with venv and pip, uv or virtualenv, and explain the externally-managed-environment error.
  • #​4569: pytest --help, the -k reference entry and select-tests no longer describe -k as a Python expression matched against

[!IMPORTANT]
✂ PR body was truncated to here.


Configuration

📅 Schedule: (in timezone America/New_York)

  • Branch creation
    • "before 6am on monday"
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot enabled auto-merge (squash) November 2, 2026 05:03
@renovate
renovate Bot force-pushed the renovate/all-nonmajor branch from 09dd83d to c1f356e Compare November 3, 2026 06:24
@renovate
renovate Bot force-pushed the renovate/all-nonmajor branch from c1f356e to 32c1a4a Compare November 4, 2026 21:43

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants