Skip to content

fix(deps): update third party deps#5489

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/third-party-deps
Open

fix(deps): update third party deps#5489
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/third-party-deps

Conversation

@renovate

@renovate renovate Bot commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
json-repair ==0.60.1 β†’ ==0.61.2 age confidence
onnxruntime >=1.18,<1.24 β†’ >=1.27,<1.28 age confidence
opentelemetry-api ~=1.39.0 β†’ ~=1.43.0 age confidence
opentelemetry-exporter-otlp ~=1.39.0 β†’ ~=1.43.0 age confidence
opentelemetry-sdk ~=1.39.0 β†’ ~=1.43.0 age confidence
pytest (changelog) >=9.0.3,<9.1 β†’ >=9.1.1,<9.2 age confidence

Release Notes

open-telemetry/opentelemetry-python (opentelemetry-api)

v1.43.0

Compare Source

Added
  • opentelemetry-sdk: add add_metric_reader / remove_metric_reader public
    APIs to register / unregister metric readers at runtime.
    (#​4863)
  • opentelemetry-exporter-prometheus: add support for configuring metric scope
    labels
    (#​5123)
  • opentelemetry-exporter-otlp-proto-grpc: Add grpc error details to the log
    message that's written when the grpc call fails.
    (#​5143)
  • opentelemetry-exporter-http-transport: add
    'opentelemetry-exporter-http-transport' package for HTTP exporters
    (#​5194)
  • opentelemetry-sdk: Add composite/development samplers support to
    declarative file configuration
    (#​5201)
  • opentelemetry-exporter-otlp-json-file: Add OTLP JSON File exporter
    implementation
    (#​5207)
  • opentelemetry-sdk: add _resolve_component shared utility for declarative
    config plugin loading, reducing boilerplate in exporter factory functions
    (#​5215)
  • opentelemetry-sdk: add pull metric reader support to declarative file
    configuration, including Prometheus metric reader via the
    prometheus_development config field
    (#​5216)
  • opentelemetry-proto-json: update to use opentelemetry-proto v1.10.0
    (#​5224)
  • opentelemetry-proto: bump maximum supported protobuf version to 7.x.x
    (#​5251)
  • opentelemetry-sdk: add ServiceInstanceIdResourceDetector for populating
    service.instance.id
    (#​5259)
  • opentelemetry-sdk: declarative config loader now recursively converts
    parsed dicts into typed dataclass instances, including nested dataclasses,
    lists of dataclasses, and enum values. End-to-end YAML/JSON β†’ SDK
    configuration now works via the factory functions.
    (#​5269)
  • opentelemetry-sdk: add configure_sdk(config) to the declarative
    configuration API. Single entry point that takes a parsed
    OpenTelemetryConfiguration, builds the resource, and applies the
    tracer/meter/logger providers and propagator globally. Honors the top-level
    disabled flag.
    (#​5270)
  • opentelemetry-sdk: the SDK configurator now honors the OTEL_CONFIG_FILE
    environment variable. When set, the SDK loads and applies the referenced
    declarative configuration file (YAML or JSON) in place of the env-var-based
    init path.
    (#​5271)
  • opentelemetry-sdk: update declarative config to use
    ServiceInstanceIdResourceDetector
    (#​5299)
  • opentelemetry-exporter-otlp-proto-common,
    opentelemetry-exporter-otlp-json-common: encoders now always accept null,
    and encode it as an empty AnyValue in accordance with the spec.
    (#​5305)
  • opentelemetry-sdk: validate the declarative config file_format version β€”
    reject an unsupported major version and warn on a newer minor version, per
    the configuration spec versioning rules
    (#​5315)
  • opentelemetry-exporter-http-transport: enable entry-point loading of
    transport implementations
    (#​5320)
Changed
  • opentelemetry-sdk: introduce experimental entry points for OpAMP agent
    integration
    (#​4646)
  • opentelemetry-api: conditionally import entrypoints for
    opentelemetry_context only if the OTEL_PYTHON_CONTEXT env variable is
    defined, return ContextVarsRuntimeContext otherwise
    (#​5144)
  • opentelemetry-sdk: rename "known/unknown" to "built-in/user-defined"
    terminology in declarative config component loading code
    (#​5214)
  • opentelemetry-proto: regenerate protobuf code from opentelemetry-proto
    v1.10.0
    (#​5223)
  • opentelemetry-sdk: remove unnecessary copy in Span creation
    (#​5272)
  • opentelemetry-sdk: remove unnecessary dict in set_attribute method
    (#​5274)
  • opentelemetry-sdk: inline the method _clean_attribute_value
    (#​5275)
  • Remove typing aliases deprecated in python 3.9 and replace all usages of
    typing.Union and typing.Optional with |.
    (#​5277)
  • opentelemetry-sdk: remove generator in the accessor for links/events
    (#​5287)
  • opentelemetry-api: remove unnecessary copy in iterator
    (#​5288)
  • opentelemetry-api: update EnvironmentGetter to ignore non-normalized
    environment variable names
    (#​5289)
  • opentelemetry-sdk: update iterator for BoundedList
    (#​5297)
  • opentelemetry-sdk: reduce lock contention in attributes
    (#​5298)
  • opentelemetry-sdk: merge doesn't need a copy, dict already does this
    (#​5326)
  • opentelemetry-api: normalize empty environment propagation names to _ in
    EnvironmentSetter and EnvironmentGetter
    (#​5328)
Fixed
  • Add missing .rst files to Sphinx documentation build for SDK logs,
    propagators, and exporter submodules.
    (#​5017)
  • Preserve the random trace ID flag when creating child spans instead of always
    setting the random trace id bit depending on the available trace id
    generator.
    (#​5241)
  • opentelemetry-api: fix SelectableGroups deprecation warning
    (#​5250)
  • opentelemetry-sdk: make
    SynchronousMeasurementConsumer.consume_measurement lock free to avoid
    deadlocks
    (#​5321)

v1.42.1

Compare Source

Fixed
  • Preserve the random trace ID flag when creating child spans instead of always
    setting the random trace id bit depending on the available trace id
    generator.
    (#​5241)

v1.42.0

Compare Source

Added
  • opentelemetry-api, opentelemetry-sdk: add support for 'random-trace-id'
    flags in W3C traceparent header trace flags. Implementations of IdGenerator
    that do randomly generate the 56 least significant bits, should also
    implement a is_trace_id_random methods that returns True.
    (#​4854)
  • logs: add exception support to Logger emit and LogRecord attributes
    (#​4908)
  • opentelemetry-exporter-otlp-proto-grpc: make retryable gRPC error codes
    configurable for gRPC exporters
    (#​4917)
  • opentelemetry-sdk: Add create_logger_provider/configure_logger_provider
    to declarative file configuration, enabling LoggerProvider instantiation from
    config files without reading env vars
    (#​4990)
  • opentelemetry-exporter-otlp-json-common: add
    'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters
    (#​4996)
  • opentelemetry-sdk: Add service resource detector support to declarative
    file configuration via detection_development.detectors[].service
    (#​5003)
  • opentelemetry-docker-tests: add docker-tests coverage of
    opentelemetry-exporter-otlp-proto-grpc and
    opentelemetry-exporter-otlp-proto-http metrics export
    (#​5030)
  • Add registry keyword argument to PrometheusMetricReader to allow passing
    a custom Prometheus registry
    (#​5055)
  • Add WeaverLiveCheck test util
    (#​5088)
  • opentelemetry-sdk: add load_entry_point shared utility to declarative
    file configuration for loading plugins via entry points; refactor propagator
    loading to use it
    (#​5093)
  • opentelemetry-sdk: add sampler plugin loading to declarative file
    configuration via the opentelemetry_sampler entry point group, matching the
    spec's PluginComponentProvider mechanism
    (#​5095)
  • opentelemetry-sdk: add propagator plugin loading to declarative file
    configuration via the opentelemetry_propagator entry point group, matching
    the spec's PluginComponentProvider mechanism
    (#​5098)
  • opentelemetry-sdk: add exporter plugin loading to declarative file
    configuration for all three signals (traces, metrics, logs) via the
    opentelemetry_*_exporter entry point groups, matching the spec's
    PluginComponentProvider mechanism
    (#​5128)
  • opentelemetry-sdk: add generic resource detector plugin loading to
    declarative file configuration via the opentelemetry_resource_detector
    entry point group, matching the spec's PluginComponentProvider mechanism
    (#​5129)
  • opentelemetry-sdk: add additional_properties support to generated config
    models via custom datamodel-codegen template, enabling plugin/custom
    component names to flow through typed dataclasses
    (#​5131)
  • Add ability to selectively enable exporting of SDK internal metrics with the
    OTEL_PYTHON_SDK_INTERNAL_METRICS_ENABLED environment variable.
    (#​5151)
Changed
  • opentelemetry-semantic-conventions: use X | Y union annotation
    (#​5096)
  • opentelemetry-api: update EnvironmentGetter and EnvironmentSetter to
    use normalized environment variable names
    (#​5119)
  • Apply fixes for UP ruff rule
    (#​5133)
  • opentelemetry-sdk: only load entrypoints for resource detectors if they are
    configured via OTEL_EXPERIMENTAL_RESOURCE_DETECTORS
    (#​5145)
  • ci: wait for tracecontext server readiness instead of a fixed sleep in
    scripts/tracecontext-integration-test.sh
    (#​5149)
  • Switch to SPDX license headers and add CI enforcement
    (#​5177)
  • opentelemetry-semantic-conventions: Bump semantic conventions to 1.41.1,
    this changes the metrics name of K8S_CONTAINER_CPU_LIMIT_UTILIZATION and
    K8S_CONTAINER_CPU_REQUEST_UTILIZATION.
    (#​5200)
Removed
  • opentelemetry-api: remove third-party importlib-metadata in favor of
    standard library since Python >= 3.10 is now required
    (#​3234)
  • Drop Python 3.9 support
    (#​5076)
Fixed
  • opentelemetry-sdk: Allow declarative OTLP HTTP exporters to map
    compression: deflate instead of rejecting it as unsupported.
    (#​5075)
  • Fix incorrect code example in create_tracer() docstring
    (#​5077)
  • opentelemetry-sdk: Fix ProcessResourceDetector to use sys.orig_argv so
    that process.command, process.command_line, and process.command_args
    reflect the original invocation for python -m <module> runs (where
    sys.argv[0] is rewritten to the module path)
    (#​5083)
  • opentelemetry-sdk: fix YAML structure injection via environment variable
    substitution in declarative file configuration; values containing newlines
    are now emitted as quoted YAML scalars per spec requirement
    (#​5091)
  • opentelemetry-sdk: Fix mutable attributes reference in metrics, attributes
    passed to instrument add/record are now copied so that subsequent
    mutations do not affect recorded data points
    (#​5106)
  • opentelemetry-sdk: make resource detector ordering deterministic
    (#​5120)
  • Fix incorrect type annotation on detectors parameter of
    get_aggregated_resources
    (#​5135)
  • opentelemetry-api: Enforce W3C Baggage size limits on outbound propagation
    in W3CBaggagePropagator.inject(). Previously only inbound extraction
    enforced limits; now inject also caps entries at 180, individual pairs at
    4096 bytes, and total header at 8192 bytes per the W3C Baggage spec. The
    extract path max_pairs limit now counts all size-valid entries rather than
    only successfully parsed ones.
    (#​5163)
  • opentelemetry-sdk: fix multi-processor force_flush skipping remaining
    processors when one returns None
    (#​5179)
  • opentelemetry-test-utils: fix weaver live check hanging when weaver log
    output fills the pipe buffer
    (#​5208)

v1.41.1: Version 1.41.1/0.62b1

Compare Source

This is a patch release on the previous 1.41.0/0.62b0 release, fixing the issue(s) below.

v1.41.0

Compare Source

  • opentelemetry-sdk: Add host resource detector support to declarative file configuration via detection_development.detectors[].host
    (#​5002)
  • opentelemetry-sdk: Add container resource detector support to declarative file configuration via detection_development.detectors[].container, using entry point loading of the opentelemetry-resource-detector-containerid contrib package
    (#​5004)
  • opentelemetry-sdk: Add create_tracer_provider/configure_tracer_provider to declarative file configuration, enabling TracerProvider instantiation from config files without reading env vars
    (#​4985)
  • Enabled the flake8-tidy-import plugins rules for the ruff linter. These rules throw warnings for relative imports in the modules.
    (#​5019)
  • opentelemetry-sdk: Fix AttributeError in ExplicitBucketHistogramAggregation when applied to non-Histogram instruments without explicit boundaries
    (#​5034)
  • Fix BatchLogRecordProcessor default schedule_delay_millis from 5000ms to 1000ms to comply with the OTel specification. Note: logs may be exported 5x more frequently by default (e.g. for users who don't explicitly set the OTEL_BLRP_SCHEDULE_DELAY env var).
    (#​4998)
  • opentelemetry-sdk: Add process resource detector support to declarative file configuration via detection_development.detectors[].process
    (#​5001)
  • opentelemetry-sdk: Add shared _parse_headers helper for declarative config OTLP exporters
    (#​5021)
  • opentelemetry-api: Replace a broad exception in attribute cleaning tests to satisfy pylint in the lint-opentelemetry-api CI job
  • opentelemetry-sdk: Add create_meter_provider/configure_meter_provider to declarative file configuration, enabling MeterProvider instantiation from config files without reading env vars
    (#​4987)
  • opentelemetry-sdk: Add create_resource and create_propagator/configure_propagator to declarative file configuration, enabling Resource and propagator instantiation from config files without reading env vars
    (#​4979)
  • opentelemetry-sdk: Map Python CRITICAL log level to OTel FATAL severity text per the specification
    (#​4984)
  • opentelemetry-sdk: Add file configuration support with YAML/JSON loading, environment variable substitution, and schema validation against the vendored OTel config JSON schema
    (#​4898)
  • Fix intermittent CI failures in getting-started and tracecontext jobs caused by GitHub git CDN SHA propagation lag by installing contrib packages from the already-checked-out local copy instead of a second git clone
    (#​4958)
  • opentelemetry-sdk: fix type annotations on MetricReader and related types
    (#​4938)
  • opentelemetry-sdk: implement log creation metric
    (#​4935)
  • opentelemetry-sdk: implement metric reader metrics
    (#​4970)
  • opentelemetry-sdk: implement processor metrics
    (#​5012)
  • opentelemetry-sdk: upgrade vendored OTel configuration schema from v1.0.0-rc.3 to v1.0.0
    (#​4965)
  • opentelemetry-sdk: implement exporter metrics
    (#​4976)
  • improve check-links ci job
    (#​4978)
  • Resolve some Pyright type errors in Span/ReadableSpan and utility stubs
    (#​4973)
  • opentelemetry-exporter-prometheus: Fix metric name prefix
    (#​4895)
  • opentelemetry-api, opentelemetry-sdk: Add deepcopy support for BoundedAttributes and BoundedList
    (#​4934)
  • opentelemetry-proto-json, opentelemetry-codegen-json: Implement custom protoc plugin to generate OTLP JSON class definitions
    (#​4910)
  • Add configurable max_export_batch_size to OTLP HTTP metrics exporter
    (#​4576)
  • opentelemetry-sdk: Implement experimental Meter configurator
    (#​4966)
  • opentelemetry-exporter-otlp-proto-http: use consistent protobuf for export request
    (#​5015)
  • opentelemetry-sdk: cache TracerConfig into the tracer, this changes an internal interface. Only one Tracer with the same instrumentation scope will be created
    (#​5007)
  • Redo OTLPMetricExporter unit tests of max_export_batch_size to use real export
    (#​5036)
  • opentelemetry-sdk: Implement experimental Logger configurator
    (#​4980)

v1.40.0

Compare Source

  • opentelemetry-sdk: deprecate LoggingHandler in favor of opentelemetry-instrumentation-logging, see opentelemetry-instrumentation-logging documentation
    (#​4919)
  • opentelemetry-sdk: Clarify log processor error handling expectations in documentation
    (#​4915)
  • bump semantic-conventions to v1.40.0
    (#​4941)
  • Add stale PR GitHub Action
    (#​4926)
  • opentelemetry-sdk: Drop unused Jaeger exporter environment variables (exporter removed in 1.22.0)
    (#​4918)
  • opentelemetry-sdk: Clarify timeout units in environment variable documentation
    (#​4906)
  • opentelemetry-exporter-otlp-proto-grpc: Fix re-initialization of gRPC channel on UNAVAILABLE error
    (#​4825)
  • opentelemetry-exporter-prometheus: Fix duplicate HELP/TYPE declarations for metrics with different label sets
    (#​4868)
  • Allow loading all resource detectors by setting OTEL_EXPERIMENTAL_RESOURCE_DETECTORS to *
    (#​4819)
  • opentelemetry-sdk: Fix the type hint of the _metrics_data property to allow None
    (#​4837).
  • Regenerate opentelemetry-proto code with v1.9.0 release
    (#​4840)
  • Add python 3.14 support
    (#​4798)
  • Silence events API warnings for internal users
    (#​4847)
  • opentelemetry-sdk: make it possible to override the default processors in the SDK configurator
    (#​4806)
  • Prevent possible endless recursion from happening in SimpleLogRecordProcessor.on_emit,
    (#​4799) and (#​4867).
  • Implement span start/end metrics
    (#​4880)
  • Add environment variable carriers to API
    (#​4609)
  • Add experimental composable rule based sampler
    (#​4882)
  • Make ConcurrentMultiSpanProcessor fork safe
    (#​4862)
  • opentelemetry-exporter-otlp-proto-http: fix retry logic and error handling for connection failures in trace, metric, and log exporters
    (#​4709)
  • opentelemetry-sdk: avoid RuntimeError during iteration of view instrument match dictionary in MetricReaderStorage.collect()
    (#​4891)
  • Implement experimental TracerConfigurator
    (#​4861)
  • opentelemetry-sdk: Fix instrument creation race condition
    (#​4913)
  • bump semantic-conventions to v1.39.0
    (#​4914)
  • opentelemetry-sdk: automatically generate configuration models using OTel config JSON schema
    (#​4879)
pytest-dev/pytest (pytest)

v9.1.1

Compare Source

pytest 9.1.1 (2026-06-19)

Bug fixes

  • #​14220: Fixed a logic bug in pytest.RaisesGroup which would might cause it to display incorrect "It matches FooError() which was paired with BarError" messages.
  • #​14591: Fixed a regression in pytest 9.1.0 which caused overriding a parametrized fixture with an indirect @​pytest.mark.parametrize to fail with "duplicate parametrization of '<fixture name>'".
  • #​14606: Fixed list-item typing errors from mypy in @pytest.mark.parametrize <pytest.mark.parametrize ref> argvalues parameter.
  • #​14608: Fixed a regression in pytest 9.1.0 where conftest.py files located in <invocation dir>/test* were no longer loaded as initial conftests when invoked without arguments.
    This could cause certain hooks (like pytest_addoption) in these files to not fire.

v9.1.0

Compare Source

pytest 9.1.0 (2026-06-13)
Removals and backward incompatible breaking changes
  • #​14533: When using --doctest-modules, autouse fixtures with module, package or session scope that are defined inline in Python test modules (not plugins or conftests) will now possibly execute twice.

    If this is undesirable, move the fixture definition to a conftest.py file if possible.

    Technical explanation for those interested:
    When using --doctest-modules, pytest possibly collects Python modules twice, once as pytest.Module and once as a DoctestModule (depending on the configuration).
    Due to improvements in pytest's fixture implementation, if e.g. the DoctestModule collects a fixture, it is now visible to it only, and not to the Module.
    This means that both need to register the fixtures independently.

Deprecations (removal in next major release)
  • #​10819: Added a deprecation warning for class-scoped fixtures defined as instance methods (without @classmethod). Such fixtures set attributes on a different instance than the test methods use, leading to unexpected behavior. Use @classmethod decorator instead -- by yastcher.

    See 10819 and 14011.

  • #​12882: Calling request.getfixturevalue() <pytest.FixtureRequest.getfixturevalue> during teardown to request a fixture that was not already requested is now deprecated and will become an error in pytest 10.

    See dynamic-fixture-request-during-teardown for details.

  • #​13409: Using non-~collections.abc.Collection iterables (such as generators, iterators, or custom iterable objects) for the argvalues parameter in @pytest.mark.parametrize <pytest.mark.parametrize ref> and metafunc.parametrize <pytest.Metafunc.parametrize> is now deprecated.

    These iterables get exhausted after the first iteration,
    leading to tests getting unexpectedly skipped in cases such as running pytest.main() multiple times,
    using class-level parametrize decorators,
    or collecting tests multiple times.

    See parametrize-iterators for details and suggestions.

  • #​13946: The private config.inicfg attribute is now deprecated.
    Use config.getini() <pytest.Config.getini> to access configuration values instead.

    See config-inicfg for more details.

  • #​14004: Passing baseid to ~pytest.FixtureDef or nodeid strings to fixture registration APIs is now deprecated. These are internal pytest APIs that are used by some plugins.

    Use the node parameter instead for fixture scoping. This enables more robust node-based
    matching instead of string prefix matching.
    If you've used nodeid=None, pass node=session instead.

    This will be removed in pytest 10.

  • #​14335: The method of configuring hooks using markers, deprecated since pytest 7.2, is now scheduled to be removed in pytest 10.
    See hook-markers for more details.

  • #​14434: The --pastebin option is now deprecated.
    The same functionality is now available in an external plugin, pytest-pastebin.
    See pastebin-deprecated for more details.

  • #​14513: The private FixtureDef.has_location attribute is now deprecated and will be removed in pytest 10.
    See fixturedef-has-location-deprecated for details.

  • #​1764: pytest.console_main is now deprecated and will be removed in pytest 10.
    It was never intended for programmatic use; use pytest.main instead.

New features
  • #​12376: Added pytest.register_fixture() to register fixtures using an imperative interface.

    This is an advanced function intended for use by plugins.

    Normally, fixtures should be registered declaratively using the @pytest.fixture <pytest.fixture> decorator.
    Pytest looks for these fixture definitions during the collection phase and registers them automatically.
    For some plugin usecases the declarative interface can be cumbersome or unviable, in which case this imperative interface can be used.

  • #​14023: Added --report-chars long CLI option.

  • #​14371: Added --max-warnings command-line option and max_warnings configuration option to fail the test run when the number of warnings exceeds a given threshold -- by miketheman.

  • #​6757: Added the assertion_text_diff_style configuration option, allowing
    string equality failures to be rendered as separate Left: and Right:
    blocks instead of ndiff output.

  • #​8395: Added support for ~datetime.datetime and ~datetime.timedelta comparisons with pytest.approx. An explicit abs or rel tolerance as a ~datetime.timedelta is required and relative tolerance is not supported for datetime comparisons -- by hamza-mobeen.

Improvements in existing functionality
  • #​11225: pytest.warns now shows "Regex pattern did not match" instead of "DID NOT WARN" when warnings were emitted but the match pattern did not match.

  • #​11295: Improved output of --fixtures-per-test by excluding internal-implementation fixtures generated by @pytest.mark.parametrize and similar.

  • #​13241: pytest.raises, pytest.warns and pytest.deprecated_call now uses ParamSpec for the type hint to the (old and not recommended) callable overload, instead of Any. This allows type checkers to raise errors when passing incorrect function parameters.
    func can now also be passed as a kwarg, which the type hint previously showed as possible but didn't accept.

  • #​13862: Improved the readability of "DID NOT RAISE" error messages by using the exception type's name instead of its repr.

  • #​14026: Added test coverage for compiled regex patterns in pytest.raises match parameter.

  • #​14137: pytest.ScopeName is now public to allow using it in function signatures.

  • #​14342: Marked yield_fixture as deprecated to type checkers using the deprecated decorator. Note it
    has originally been deprecated <yield-fixture-deprecated> in pytest 6.2 already.

  • #​14373: Added type annotations for pytest.approx.

  • #​14430: When using --setup-show, a space is now printed after the test name (and possibly used fixtures), to separate it from the test result.

  • #​14441: Reduced the default number of gc.collect() passes in the unraisableexception plugin from 5 to 1 on CPython, where reference counting makes a single pass sufficient. PyPy retains 5 passes due to object resurrection via __del__. This can noticeably speed up test suites that trigger many pytester runs.

  • #​14461: Improved assertion failure explanations for equality comparisons between mapping objects that are not dict instances.

  • #​14513: The order in which fixture definitions overriding each other are resolved is now determined first by their visibility in the collection tree rather than by the order in which they are registered.

    A fixture defined for a more specific node (e.g. a module or an item) now always takes precedence over one with the same name defined for a more general node (e.g. the session), even when the more general one was registered later.
    Fixtures with non-comparable visibility or the same visibility keep the existing behavior of "last registered wins".
    This change is supposed to only affect plugins which register multiple fixtures programmatically with the same name.

  • #​14524: Add official Python 3.15 support.

  • #​1764: Improved argparse program name to show pytest, python -m pytest, or pytest.main() based on how pytest was invoked, making help and error messages clearer.

  • #​8265: Emit a PytestCollectionWarning when a module-level __getattr__ returns None for pytestmark instead of raising AttributeError.

    Previously this caused a cryptic TypeError: got None instead of Mark error.
    Now pytest issues a helpful warning and continues collecting the module normally.

Bug fixes
  • #​13192: Fixed | (pipe) not being treated as a regex meta-character that needs escaping in pytest.raises(match=...) <pytest.raises>.

  • #​13484: Fixed -W option values being duplicated in Config.known_args_namespace.

  • #​13626: Fixed function-scoped fixture values being kept alive after a test was interrupted by KeyboardInterrupt or early exit,
    allowing them to potentially be released more promptly.

  • #​13784: Fixed capteesys producing doubled output when used with --capture=no (-s).

  • #​13817: Fixed a secondary AttributeError masking the original error when an option argument fails to initialize.

  • #​13884: Fixed rare internal IndexError caused by builtins.compile being overridden in client code.

  • #​13885: Fixed autouse fixtures defined inside a unittest.TestCase class running even when the class is decorated with unittest.skip or unittest.skipIf -- regression since pytest 8.1.0.

  • #​13917: unittest.SkipTest is no longer considered an interactive exception, i.e. pytest_exception_interact is no longer called for it.

  • #​13963: Fixed subtests running with pytest-xdist when their contexts contain objects that are not JSON-serializable.

    Fixes pytest-dev/pytest-xdist#1273.

  • #​14004: Fixed conftest.py fixture scoping when testpaths points outside of the rootdir <rootdir>.

    Previously, fixtures from nested conftest.py files would incorrectly leak to sibling directories
    when using a relative testpaths like ../tests/sdk.

    Conftest fixtures are now parsed during Directory <pytest.Directory> collection, using the Directory node for proper scoping.

  • #​14050: Display dictionary differences in assertion failures using the original key insertion order instead of sorted order.

  • #​14080: fix missing type annotations on Pytester.makepyfile and Pytester.maketxtfile methods.

  • #​14114: An exception from pytest_fixture_post_finalizer no longer prevents fixtures from being torn down, causing additional errors in the following tests.

  • #​14161: Fixed monkeypatch.setattr() <pytest.MonkeyPatch.setattr> leaving a stale entry on the undo stack when the underlying setattr() call fails (e.g. on immutable targets), causing an AttributeError crash during teardown.

  • #​14214: Fixed -v hint in pytest.raises match diff not working because assertion verbosity was not propagated.

  • #​14234: Allow pytest.HIDDEN_PARAM <hidden-param> in @pytest.mark.parametrize(ids=...) <pytest.mark.parametrize ref> typing.

  • #​14248: Fixed direct parametrization causing the static fixture closure (as reflected in request.fixturenames <pytest.FixtureRequest.fixturenames>) to omit fixtures that are requested transitively from overridden fixtures.

  • #​14263: Unraisable exceptions from finalizers are now collected during pytest_unconfigure, before pytest tears down the warning filters installed for the session. Previously the collection ran from a cleanup callback whose order relative to other plugins' cleanups was not guaranteed, so an active error filter could be removed before the exception surfaced and a late resource leak would pass silently. A -W error filter, or any filter matching pytest.PytestUnraisableExceptionWarning, now promotes these exceptions to failures regardless of plugin cleanup order.

  • #​14377: Fixed crash in Config.get_terminal_writer when an assertion fails with the terminalreporter plugin disabled.

  • #​14381: Fixed -V (short form of --version) to properly display the current version.

  • #​14389: Improved pytest.raises(..., match=...) <pytest.raises> failures to suppress the mismatched exception as a cause of the resulting AssertionError.

  • #​14392: Fixed a bug in pytest.raises(match=...) <pytest.raises> "fully escaped" detection, causing the regex diff display to be shown in some instances when the raw string diff display should be shown instead.

  • #​14442: Fixed a regression in pytest 9.0 where --strict-markers and --strict-config specified through addopts were silently ignored.

    Note that when targeting pytest >= 9.0, it's nicer to use strict_markers and strict_config, or strict mode <strict mode>.

  • #​14456: Fixed pytest.approx not recognizing types with __array_interface__ as numpy-like arrays.

  • #​14474: Fixed a regression where -k and -m expressions containing both backslash characters in identifiers and string literal arguments would incorrectly raise a SyntaxError about escaping.

  • #​14483: Fixed JUnit XML report incorrectly escaping high Unicode codepoints (supplementary plane characters like emoji) in test failure messages. -- by EternalRights

  • #​14492: Fixed Code.getargs() incorrectly including local variable names in the returned argument tuple for functions with *args and/or **kwargs. The method was using co_flags bitmask values (4 and 8) directly as counts instead of converting them to 1 via bool(), and was not accounting for co_kwonlyargcount when var=True.

  • #​3697: Logging capture now works for non-propagating loggers.
    Previously only logs which reached the root logger were captured.
    This includes caplog and the "Captured log calls" test reporting.

  • #​3850: Fixed JUnit XML report: the tests attribute of the <testsuite> element now always matches the number of <testcase> elements in the file. In some cases (test passes but fails during teardown) the tests attribute would report an incorrect number of testcases in the XML file.

  • #​5848: pytest_fixture_post_finalizer is no longer called extra times for the same fixture teardown in some cases.

  • #​719: Fixed @pytest.mark.parametrize <pytest.mark.parametrize ref> not unpacking single-element tuple values when using a string argnames with a trailing comma (e.g., "arg,").

    The trailing comma form now correctly behaves like the tuple form ("arg",), treating argvalues as a list of tuples to unpack.

Improved documentation
  • #​11022: Document safer alternatives and scope guidance for monkeypatching standard library functions.
  • #​11307: Document that @pytest.hookimpl(specname=...) only works for function names starting with pytest_.
  • #​13038: Document that doctests do not support parametrized fixtures, including parametrized autouse fixtures.
  • #​13155: Clarified how the request fixture provides indirect parametrization values via request.param.
  • #​13304: Clarified in the documentation that hook implementations defined in conftest.py files are not available to other plugins during their pytest_addoption() execution, as conftest files are discovered and loaded after builtin and third-party plugins have been initialized. However, initial conftest files themselves can implement pytest_addoption() to add their own command-line options.
  • #​13902: Clarified how subtest progress markers are shown in the documentation.
  • #​14012: The ini options ref section of the API Reference now specified the type and default value of every configuration option.
  • #​14148: Documented a safe pytestconfig.cache access pattern when the
    cacheprovider plugin is disabled.
  • #​14303: The documentation is now built with Sphinx >= 9.
  • #​14465: Updated the hooks how-to page to link the newhooks.py file in pytest-xdist at tag v3.8.0 instead of an unrelated 2017-era commit under the old layout. Pointing at a tag keeps the example in sync with the version users actually install, while remaining stable when the project's main branch moves on.
Miscellaneous internal changes
  • #​14582: Improved the recursion traceback test to exercise all requested traceback styles.

Configuration

πŸ“… Schedule: (UTC)

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

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

β™» 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 commented Apr 20, 2026

Copy link
Copy Markdown
Contributor Author

⚠️ Artifact update problem

Renovate failed to update artifacts related to this branch. You probably do not want to merge this PR as-is.

β™» Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: uv.lock
Command failed: uv lock --upgrade-package json-repair --upgrade-package opentelemetry-api --upgrade-package opentelemetry-exporter-otlp --upgrade-package opentelemetry-sdk
Using CPython 3.14.6 interpreter at: /opt/containerbase/tools/python/3.14.6/bin/python3
  Γ— No solution found when resolving dependencies for split (markers:
  β”‚ python_full_version == '3.14.*' and sys_platform == 'win32'):
  ╰─▢ Because only the following versions of mistralai[realtime] are
      available:
          mistralai[realtime]<2.2.0rc1
          mistralai[realtime]>2.2.0rc3,<2.4.0rc1
          mistralai[realtime]>2.4.0rc2
      and all of:
          mistralai>=2.0.0,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]==2.0.0
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because all of:
          mistralai>=2.0.1,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61 and all of:
          mistralai>=2.0.2,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.0.2
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because all of:
          mistralai>=2.0.3,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61 and all of:
          mistralai>=2.0.4,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.0.4
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because all of:
          mistralai>=2.0.5,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61 and
      mistralai[realtime]==2.1.1 was yanked (reason: This version included a
      broken import: ChatCompletionChoice missing from client.models exports),
      we can conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.0.5
          mistralai[realtime]==2.1.1
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because all of:
          mistralai==2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61
      and mistralai>=2.1.2 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61, we can conclude that
      all of:
          mistralai[realtime]>=2.0.0,<=2.1.2
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.1.3 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.2.0
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.2.0
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.3.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.3.1
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.3.1
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.3.2 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.0
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.1 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.2
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.2 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.3 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.4
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.4 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.5 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.7
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.7 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.8 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.9
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.9 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.10 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.11
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.11 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.12 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.13
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.13 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.5.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.5.1
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.5.1 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.5.2 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.6.0
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.6.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.7.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61
      and opentelemetry-sdk==1.43.0 depends on
      opentelemetry-semantic-conventions==0.64b0, we can conclude that
      opentelemetry-sdk==1.43.0 and mistralai[realtime]>=2.0.0 are
      incompatible.
      And because livekit-plugins-mistralai depends on
      mistralai[realtime]>=2.0.0 and livekit-agents depends on
      opentelemetry-sdk>=1.43.0,<1.44.dev0, we can conclude that
      livekit-plugins-mistralai and livekit-agents[anam] are incompatible.
      And because your workspace requires livekit-agents[anam] and
      livekit-plugins-mistralai, we can conclude that your workspace's
      requirements are unsatisfiable.

hint: The resolution failed for an environment that is not the current one, consider limiting the environments with `tool.uv.environments`.
hint: `mistralai` was requested with a pre-release marker (e.g., all of:
    mistralai>=2.2.0rc1,<=2.2.0rc3
    mistralai>=2.4.0rc1,<=2.4.0rc2
), but pre-releases weren't enabled (try: `--prerelease=allow`)
File name: uv.lock
Command failed: uv lock --upgrade-package onnxruntime
Using CPython 3.14.6 interpreter at: /opt/containerbase/tools/python/3.14.6/bin/python3
  Γ— No solution found when resolving dependencies for split (markers:
  β”‚ python_full_version == '3.14.*' and sys_platform == 'win32'):
  ╰─▢ Because only the following versions of mistralai[realtime] are
      available:
          mistralai[realtime]<2.2.0rc1
          mistralai[realtime]>2.2.0rc3,<2.4.0rc1
          mistralai[realtime]>2.4.0rc2
      and all of:
          mistralai>=2.0.0,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]==2.0.0
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because all of:
          mistralai>=2.0.1,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61 and all of:
          mistralai>=2.0.2,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.0.2
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because all of:
          mistralai>=2.0.3,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61 and all of:
          mistralai>=2.0.4,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.0.4
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because all of:
          mistralai>=2.0.5,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61 and
      mistralai[realtime]==2.1.1 was yanked (reason: This version included a
      broken import: ChatCompletionChoice missing from client.models exports),
      we can conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.0.5
          mistralai[realtime]==2.1.1
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because all of:
          mistralai==2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61
      and mistralai>=2.1.2 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61, we can conclude that
      all of:
          mistralai[realtime]>=2.0.0,<=2.1.2
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.1.3 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.2.0
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.2.0
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.3.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.3.1
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.3.1
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.3.2 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.0
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.1 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.2
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.2 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.3 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.4
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.4 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.5 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.7
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.7 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.8 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.9
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.9 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.10 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.11
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.11 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.12 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.13
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.13 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.5.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.5.1
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.5.1 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.5.2 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.6.0
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.6.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.7.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61
      and opentelemetry-sdk==1.43.0 depends on
      opentelemetry-semantic-conventions==0.64b0, we can conclude that
      opentelemetry-sdk==1.43.0 and mistralai[realtime]>=2.0.0 are
      incompatible.
      And because livekit-plugins-mistralai depends on
      mistralai[realtime]>=2.0.0 and livekit-agents depends on
      opentelemetry-sdk>=1.43.0,<1.44.dev0, we can conclude that
      livekit-plugins-mistralai and livekit-agents[anam] are incompatible.
      And because your workspace requires livekit-agents[anam] and
      livekit-plugins-mistralai, we can conclude that your workspace's
      requirements are unsatisfiable.

hint: The resolution failed for an environment that is not the current one, consider limiting the environments with `tool.uv.environments`.
hint: `mistralai` was requested with a pre-release marker (e.g., all of:
    mistralai>=2.2.0rc1,<=2.2.0rc3
    mistralai>=2.4.0rc1,<=2.4.0rc2
), but pre-releases weren't enabled (try: `--prerelease=allow`)
File name: uv.lock
Command failed: uv lock --upgrade-package pytest
Using CPython 3.14.6 interpreter at: /opt/containerbase/tools/python/3.14.6/bin/python3
  Γ— No solution found when resolving dependencies for split (markers:
  β”‚ python_full_version == '3.14.*' and sys_platform == 'win32'):
  ╰─▢ Because only the following versions of mistralai[realtime] are
      available:
          mistralai[realtime]<2.2.0rc1
          mistralai[realtime]>2.2.0rc3,<2.4.0rc1
          mistralai[realtime]>2.4.0rc2
      and all of:
          mistralai>=2.0.0,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]==2.0.0
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because all of:
          mistralai>=2.0.1,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61 and all of:
          mistralai>=2.0.2,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.0.2
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because all of:
          mistralai>=2.0.3,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61 and all of:
          mistralai>=2.0.4,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.0.4
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because all of:
          mistralai>=2.0.5,<=2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61 and
      mistralai[realtime]==2.1.1 was yanked (reason: This version included a
      broken import: ChatCompletionChoice missing from client.models exports),
      we can conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.0.5
          mistralai[realtime]==2.1.1
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because all of:
          mistralai==2.1.0
          mistralai>=2.1.2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61
      and mistralai>=2.1.2 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61, we can conclude that
      all of:
          mistralai[realtime]>=2.0.0,<=2.1.2
          mistralai[realtime]>=2.2.0rc1,<=2.2.0rc3
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.1.3 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.2.0
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.2.0
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.3.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.3.1
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we can
      conclude that all of:
          mistralai[realtime]>=2.0.0,<=2.3.1
          mistralai[realtime]>=2.4.0rc1,<=2.4.0rc2
      depend on opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.3.2 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.0
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.1 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.2
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.2 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.3 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.4
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.4 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.5 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.7
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.7 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.8 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.9
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.9 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.10 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.11
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.11 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.4.12 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.4.13
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.4.13 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.5.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.5.1
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.5.1 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.5.2 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61 and mistralai>=2.6.0
      depends on opentelemetry-semantic-conventions>=0.60b1,<0.61, we
      can conclude that mistralai[realtime]>=2.0.0,<=2.6.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61.
      And because mistralai>=2.7.0 depends on
      opentelemetry-semantic-conventions>=0.60b1,<0.61
      and opentelemetry-sdk==1.43.0 depends on
      opentelemetry-semantic-conventions==0.64b0, we can conclude that
      opentelemetry-sdk==1.43.0 and mistralai[realtime]>=2.0.0 are
      incompatible.
      And because livekit-plugins-mistralai depends on
      mistralai[realtime]>=2.0.0 and livekit-agents depends on
      opentelemetry-sdk>=1.43.0,<1.44.dev0, we can conclude that
      livekit-plugins-mistralai and livekit-agents[anam] are incompatible.
      And because your workspace requires livekit-agents[anam] and
      livekit-plugins-mistralai, we can conclude that your workspace's
      requirements are unsatisfiable.

hint: The resolution failed for an environment that is not the current one, consider limiting the environments with `tool.uv.environments`.
hint: `mistralai` was requested with a pre-release marker (e.g., all of:
    mistralai>=2.2.0rc1,<=2.2.0rc3
    mistralai>=2.4.0rc1,<=2.4.0rc2
), but pre-releases weren't enabled (try: `--prerelease=allow`)

@chenghao-mou
chenghao-mou requested a review from a team April 20, 2026 00:47
devin-ai-integration[bot]

This comment was marked as resolved.

@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from a55c0ee to 15524b0 Compare April 23, 2026 14:44
@renovate renovate Bot changed the title fix(deps): update third party deps to ~=1.40.0 fix(deps): update third party deps to ~=1.41.0 Apr 23, 2026
@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from 15524b0 to 800d4e1 Compare May 8, 2026 13:37
@renovate renovate Bot changed the title fix(deps): update third party deps to ~=1.41.0 fix(deps): update third party deps to ~=1.41.1 May 8, 2026
@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from 800d4e1 to 287fa59 Compare May 18, 2026 12:39
@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from 287fa59 to 260cd4c Compare June 2, 2026 10:30
@renovate renovate Bot changed the title fix(deps): update third party deps to ~=1.41.1 fix(deps): update third party deps to ~=1.42.0 Jun 2, 2026
@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from 260cd4c to 4398d4b Compare June 4, 2026 18:29
@renovate renovate Bot changed the title fix(deps): update third party deps to ~=1.42.0 fix(deps): update third party deps to ~=1.42.1 Jun 4, 2026
@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from 4398d4b to 039f7de Compare June 11, 2026 11:09

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 0 new potential issues.

Open in Devin Review

@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from 039f7de to 2272d3d Compare June 16, 2026 18:34
@renovate renovate Bot changed the title fix(deps): update third party deps to ~=1.42.1 fix(deps): update third party deps Jun 16, 2026

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 3 new potential issues.

Open in Devin Review

@devin-ai-integration devin-ai-integration Bot Jun 16, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

πŸ” Lock file not regenerated after dependency changes

The uv.lock file was not updated as part of this PR (no diff in uv.lock). This means none of the three dependency changes (opentelemetry bump, onnxruntime constraint change, pytest bump) are reflected in the lock file. At uv.lock:3151, the turn-detector still shows specifier = ">=1.18,<1.24" and the opentelemetry entries will still reference 1.39.x versions. Running uv lock after merging is necessary, but it will fail due to the onnxruntime constraint conflict reported as BUG-0001.

Open in Devin Review

Was this helpful? React with πŸ‘ or πŸ‘Ž to provide feedback.

Comment thread livekit-plugins/livekit-plugins-turn-detector/pyproject.toml Outdated
"numpy>=1.26",
"onnxruntime>=1.18; python_version >= '3.11'",
"onnxruntime>=1.18,<1.24; python_version < '3.11'",
"onnxruntime>=1.26,<1.27; python_version < '3.11'",

@devin-ai-integration devin-ai-integration Bot Jun 16, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

πŸ”΄ Workspace dependency resolution fails on Python < 3.11 due to conflicting onnxruntime constraints

The workspace-level constraint caps onnxruntime below 1.24 for Python < 3.11 (pyproject.toml:2), but the turn-detector plugin now requires onnxruntime >=1.27 for the same Python versions (livekit-plugins/livekit-plugins-turn-detector/pyproject.toml:28), so dependency resolution is impossible on Python 3.10.

Impact: Installing or syncing the workspace on Python 3.10 will fail with an unsatisfiable dependency error.

Conflicting constraint-dependencies vs plugin requirement

Root pyproject.toml:2 declares:

constraint-dependencies = ['onnxruntime<1.24; python_version < "3.11"']

The turn-detector plugin at livekit-plugins/livekit-plugins-turn-detector/pyproject.toml:28 now requires:

"onnxruntime>=1.27,<1.28; python_version < '3.11'",

The constraint says onnxruntime must be < 1.24, but the plugin requires >= 1.27. These ranges have no overlap, making resolution impossible. The root constraint was set to match the old requirement (>=1.18,<1.24) but was not updated when the plugin bumped to >=1.27,<1.28.

The fix is to update line 2 of pyproject.toml to something like:

constraint-dependencies = ['onnxruntime<1.28; python_version < "3.11"']
Open in Devin Review

Was this helpful? React with πŸ‘ or πŸ‘Ž to provide feedback.

@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from 2272d3d to d2aeabd Compare June 17, 2026 15:40

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 0 new potential issues.

Open in Devin Review

@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from d2aeabd to bf55c9e Compare June 17, 2026 18:12

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 0 new potential issues.

Open in Devin Review

@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from bf55c9e to 7707958 Compare June 27, 2026 19:06

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 1 new potential issue.

Open in Devin Review

"numpy>=1.26",
"onnxruntime>=1.18; python_version >= '3.11'",
"onnxruntime>=1.18,<1.24; python_version < '3.11'",
"onnxruntime>=1.26,<1.27; python_version < '3.11'",

@devin-ai-integration devin-ai-integration Bot Jun 27, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🚩 onnxruntime version bump narrows the window for Python 3.10 significantly

The old constraint >=1.18,<1.24 allowed a wide range of onnxruntime versions for Python 3.10. The new constraint >=1.27,<1.28 pins to a single minor release series. If onnxruntime 1.27.x does not actually publish Python 3.10 wheels (historically onnxruntime dropped 3.10 support around 1.20), this constraint would be unsatisfiable regardless of the workspace cap fix. The PR author should verify that onnxruntime 1.27 actually ships wheels for Python 3.10 on PyPI.

Open in Devin Review

Was this helpful? React with πŸ‘ or πŸ‘Ž to provide feedback.

@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from 7707958 to c390a7d Compare June 30, 2026 02:07

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 0 new potential issues.

Open in Devin Review

@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from c390a7d to 768ad48 Compare June 30, 2026 15:33
devin-ai-integration[bot]

This comment was marked as resolved.

@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from 768ad48 to bf9e04c Compare July 1, 2026 10:34

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 0 new potential issues.

Open in Devin Review

@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from bf9e04c to 7da2a15 Compare July 1, 2026 14:15

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 0 new potential issues.

Open in Devin Review

@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from 7da2a15 to d6b9a2b Compare July 3, 2026 11:35

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 0 new potential issues.

Open in Devin Review

@renovate renovate Bot changed the title fix(deps): update third party deps Update third party deps Jul 7, 2026
@renovate renovate Bot changed the title Update third party deps fix(deps): update third party deps Jul 7, 2026
@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from d6b9a2b to 7b1ec50 Compare July 8, 2026 20:53

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Devin Review found 1 new potential issue.

Open in Devin Review

Comment on lines +48 to +50
"opentelemetry-api~=1.43.0",
"opentelemetry-sdk~=1.43.0",
"opentelemetry-exporter-otlp~=1.43.0",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

πŸ” OpenTelemetry jump spans 4 minor versions β€” verify API compatibility

The opentelemetry packages were bumped from ~=1.39.0 to ~=1.43.0 at livekit-agents/pyproject.toml:48-50. This skips versions 1.40, 1.41, and 1.42. While the ~= operator constrains to >=1.43.0,<1.44.0, a 4-minor-version jump may include breaking changes in the OpenTelemetry SDK's internal APIs (e.g., changes to exporter configuration, span processor behavior, or metric instrument signatures). The telemetry code in livekit-agents/livekit/agents/telemetry/ should be verified against the 1.43 changelog to ensure no breaking changes affect the codebase.

Open in Devin Review

Was this helpful? React with πŸ‘ or πŸ‘Ž to provide feedback.

@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from 7b1ec50 to b18fbbf Compare July 13, 2026 02:30
devin-ai-integration[bot]

This comment was marked as resolved.

@renovate
renovate Bot force-pushed the renovate/third-party-deps branch 6 times, most recently from 4f875f2 to 6e8b62e Compare July 19, 2026 13:10
Generated by renovateBot
@renovate
renovate Bot force-pushed the renovate/third-party-deps branch from 6e8b62e to 16d110b Compare July 20, 2026 14:13
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