chore(deps): update all dependencies #27

Merged
finkregh merged 1 commit from renovate/all into main 2026-07-31 16:50:14 +00:00
Collaborator

This PR contains the following updates:

Package Type Update Change
alembic (changelog) project.dependencies patch 1.18.4 → 1.18.5
click (changelog) project.dependencies patch 8.4.0 → 8.4.2
fastapi (changelog) project.dependencies minor 0.136.1 → 0.141.1
grafana/otel-lgtm digest af7242c → 46ca028
huey (changelog) project.dependencies minor 3.0.1 → 3.3.1
nh3 project.dependencies patch 0.3.5 → 0.3.6
opentelemetry-api project.dependencies minor 1.41.1 → 1.44.0
opentelemetry-exporter-otlp project.dependencies minor 1.41.1 → 1.44.0
opentelemetry-sdk project.dependencies minor 1.41.1 → 1.44.0
pyroscope-io project.dependencies minor 1.0.8 → 1.2.1
pytest (changelog) dependency-groups minor 9.0.3 → 9.1.1
redis (changelog) project.dependencies patch 7.4.0 → 7.4.1
redis digest 8096655 → e8eb6f2
slowapi project.dependencies patch 0.1.9 → 0.1.10
sqladmin project.dependencies minor 0.25.1 → 0.30.0
sqlalchemy (changelog) project.dependencies patch 2.0.49 → 2.0.51

Release Notes

pallets/click (click)

v8.4.2

Compare Source

Released 2026-06-24

  • Fix Fish shell completion broken in 8.4.0 by {pr}3126. Newlines and
    tabs in option help text are now escaped, keeping the original completion
    format while still supporting multi-line help. {issue}3502
    {issue}3043 {pr}3504 {pr}3508
  • Deprecated commands and options with empty or missing help text no longer
    render a stray leading space before the (DEPRECATED) label. {pr}3509
  • A {class}Group with invoke_without_command=True marks its subcommand as
    optional in the usage help, showing [COMMAND] instead of COMMAND.
    {issue}3059 {pr}3507
  • echo_via_pager flushes after each write, so passing a generator streams
    output to the pager incrementally instead of staying hidden until the pipe
    buffer fills. {issue}3242 {issue}2542 {pr}3534
  • echo_via_pager and get_pager_file no longer close a borrowed stdout
    stream when no external pager runs, completing the partial
    I/O operation on closed file fix from {pr}3482. {issue}3449
    {pr}3533
  • Fix CLI usage symopsis for optional arguments producing double square brackets
    [[a|b|c]]... whose type already brackets their metavar. {pr}3578
  • {func}version_option resolves a package_name that does not match an
    installed distribution as an import (top-level module) name via
    {func}importlib.metadata.packages_distributions. Packages whose
    top-level module name differs from their distribution name (PIL vs
    Pillow, jwt vs PyJWT) no longer raise RuntimeError out of the
    box. {issue}2331 {issue}1884 {issue}3125 {pr}3582

v8.4.1

Compare Source

Released 2026-05-21

  • get_parameter_source() is available during eager callbacks and type
    conversion again. {issue}3458 {pr}3484
  • Zsh completion scripts parse correctly on Windows. {issue}3277 {pr}3466
  • Shell completion of Enum values used as Choice options produces a
    valid completion result. {issue}3015 {pr}3471
  • Fix empty byte-string handling in echo. {issue}3487 {pr}3493
  • Fix closed file error with echo_via_pager. {issue}3449 {pr}3482
  • Fix open_url on Windows when the file path contains spaces.
    {issue}2994 {pr}3478
fastapi/fastapi (fastapi)

v0.141.1

Compare Source

Fixes
  • 🐛 Fix support for background tasks and headers from dependencies in app.frontend(). PR #​16105 by @​tiangolo.
Docs

v0.141.0

Compare Source

Features
  • ✨ Add app.frontend(check_dir="auto"), to make local development more convenient with fastapi dev. PR #​16102 by @​tiangolo.

v0.140.13

Compare Source

Fixes
Docs

v0.140.12

Compare Source

Fixes

v0.140.11

Compare Source

Fixes
  • 🐛 Fix response_model_* params ignored for non-generator endpoints with Iterable[..] return type. PR #​15093 by @​YuriiMotov.

v0.140.10

Compare Source

Fixes
Internal

v0.140.9

Compare Source

Fixes
  • 🐛 Fix exclude_defaults not propagated to dict keys and values in jsonable_encoder. PR #​16043 by @​MBGrao.
Internal

v0.140.8

Compare Source

Fixes

v0.140.7

Compare Source

Refactors
Internal

v0.140.6

Compare Source

Refactors
  • ⚡️ Avoid flattening dependencies for request parameters, mainly for OpenAPI. PR #​16073 by @​tiangolo.

v0.140.5

Compare Source

Refactors

v0.140.4

Compare Source

Refactors

v0.140.3

Compare Source

Refactors

v0.140.2

Compare Source

Refactors
Internal

v0.140.1

Compare Source

Refactors
  • ♻️ Update the lru_cache limit for dependencies to account for large apps. PR #​16062 by @​tiangolo.

v0.140.0

Compare Source

Refactors
Docs
Internal

v0.139.2

Compare Source

Fixes
  • 🐛 Refactor router route building to make it thread-safe, mainly relevant for tests running in parallel threads (uncommon). PR #​16013 by @​tiangolo.

v0.139.1

Compare Source

Fixes
Docs
  • 📝 Fix topic repository list not being displayed and skip_users not being applied. PR #​15995 by @​YuriiMotov.
Translations
Internal

v0.139.0

Compare Source

Features
  • ✨ Support dependencies in app.frontend(), e.g. for automatic cookie authentication for the frontend. PR #​15908 by @​tiangolo.
Translations
Internal

v0.138.2

Compare Source

Refactors
  • ♻️ Make app.frontend() return 404 for methods other than GET or HEAD with no static file matches. PR #​15863 by @​tiangolo.
Internal

v0.138.1

Compare Source

Refactors
Internal

v0.138.0

Compare Source

Features
  • ✨ Add support for app.frontend("/", directory="dist") and router.frontend("/", directory="dist"). PR #​15800 by @​tiangolo.
Docs
Translations
Internal

v0.137.2

Compare Source

Features
  • ✨ Add iter_route_contexts() for advanced use cases that used to use router.routes (e.g. Jupyverse). PR #​15785 by @​tiangolo.
Translations
Internal

v0.137.1

Compare Source

Fixes

v0.137.0

Compare Source

Breaking Changes

Unblocks ✨ SO MANY THINGS ✨

Before this, router.include_router(other_router) would take each path operation from other_router and "clone" it, or recreate it from scratch.

This would mean that in the end there was only one top level router, part of the app.

The way it is structured here is that there are a few additional classes to handle intermediate metadata for router and route inclusion. That way the information of "router X includes Y and Y includes Z" is stored somewhere, without affecting (recreating / clonning) the final route.

Non Objectives

Dependencies for 404: previously I intended to support dependencies that would be executed even for 404, but that would conflict with the fact that a router could not find a match, but the next router did find a match. Executing dependencies in the router that did not find a match would not make sense, they could consume the request, body, etc. This original idea was discarded.

Specific Breaking Changes

Now router.routes is no longer a plain list of APIRoute objects, it can contain these intermediate objects that can contain additional routers, forming a tree.

Any logic that depended on iterating on the router.routes directly would be affected, that logic cannot expect to be able to extract data from a plain list of routes, as it's no longer a plain list but a tree.

Additionally, any logic that iterated on router.routes to modify them would now also see these new objects, and would not see all the routes in the app.

router.routes should be considered an internal implementation detail, only passed around to the FastAPI functions that need it.

Features
  • Adding routes (path operations) after a router is included now works, they are reflected as they are not copied.
  • Including subrouter in mainrouter can be done before adding routes (path operations) to subrouter, because now the the entire object is stored instead of copying the routes.
  • As routes are not copied, in some cases that might save some memory.
Alpha Features

This is not documented yet, so it's not officially supported yet and could change in the future.

But, as APIRoute and APIRouter instances are now preserved, they could be customized.

APIRouter has two new methods, .matches() and .handle(), counterpart to the existing ones in APIRoute. With this a router could customize how it matches and handles requests. For example, it could match only requests that include some specific header, for example for handling versions in headers.

Still, for now, consider this very experimental and potentially changing and breaking in the future.

Future Features Enabled
  • Custom APIRoute subclasses (undocumented, but alraedy works as desccribed above)
  • Custom APIRouter subclasses (undocumented, but already works as described above)
  • Dependencies per router
  • Exception handlers per router
  • Middleware per router
  • Other features planned
Docs
Translations
Internal

v0.136.3

Compare Source

Refactors
  • ♻️ Do not accept underscore headers when using convert_underscores=True (the default). PR #​15589 by @​tiangolo.
coleifer/huey (huey)

v3.3.1

Compare Source

  • Ensure traceback is stored properly for error results.
  • Restart the stats recorder in forked children via os.register_at_fork.
    Previously the writer thread existed only in the process that called
    enable_stats(), so a consumer w/ worker_type='process' (or a preforking
    web server that loads the app before forking) buffered task events in its
    workers but never wrote them, and the dashboard showed tasks stuck on
    "enqueued".

View commits

v3.3.0

Compare Source

  • Add retry_backoff parameter to task() and periodic_task(). The first
    retry waits retry_delay seconds and each subsequent delay is multiplied by
    retry_backoff, giving exponentially-growing waits between retries.
  • Fix create_tables=False, which crashed SqliteHuey at connect and was
    silently ignored by the peewee SqlHuey. SqlStorage also gains
    initialize_schema() so the create_huey_tables command supports it.
  • Accept float priorities in FileStorage by truncating to int. Previously
    they raised a TypeError.
  • Raise ResultTimeout from blocking Result.get() when the wait ends w/o an
    obtainable result, e.g. a dropped connection. Previously the internal
    EmptyData sentinel could be returned.
  • Preserve per-call retry_backoff when a task is rescheduled via
    Result.reschedule().
  • Clear revocations that arrive mid-execution w/ a delete, so the clear also
    works on RedisExpireHuey where destructive reads do not remove data.
  • Fix an off-by-one in the redis scheduled_items() that returned limit+1
    items.
  • Reconnect stale connections in the SqlHuey counter methods, which run in
    the consumer via chords and rate limits.
  • Return the lock from TaskLock.__enter__(), so
    with huey.lock_task('x') as lock: binds the lock instead of None.
  • Defer the redis server version check to first use. Previously every storage
    init issued an INFO round-trip.
  • Remove the undocumented Kyoto Tycoon storage backend, its tests, and the
    ukt CI dependency.
  • Remove the djhuey backend_class alias for huey_class (deprecated since
    2.0) and the Django <1.2 settings.DATABASE_NAME queue-name fallback.
  • Fire the chord callback when a pipelined member dies before its tail. A
    failed, revoked, or expired stage now contributes for the member, where
    previously the chord counter stayed short and the callback never ran.
  • Add CySqliteHuey, which drives the sqlite storage w/ cysqlite instead of
    the stdlib sqlite3 module and takes an open-ended pragmas dict in place
    of a fixed set of tuning parameters.

View commits

v3.2.1

Compare Source

  • Add a Django admin dashboard for task statistics. Adding
    huey.contrib.djhuey.stats to INSTALLED_APPS starts the
    huey.contrib.stats recorder in every process (incl. the consumer) and adds
    a Huey section to the admin: a dashboard w/ the same live stats and controls
    as the flask-peewee panel, plus a filterable event log. Stats are stored via
    peewee in the default Django database and require no migrations.

View commits

v3.2.0

Compare Source

  • Add store_intermediate_errors option (default true, preserving current
    behavior). When false, a task that fails with retries remaining no longer
    writes its exception to the result store or runs its on_error handler until
    the retries are exhausted, so a blocking Result.get() waits for the final
    outcome instead of raising on the first failed attempt.
  • Add create_tables option to the SQL storage backends (default true). Pass
    create_tables=False to skip the automatic create table if not exists at
    init, e.g. to manage huey's schema via Django migrations rather than have
    every web worker attempt DDL on import.
  • Add a create_huey_tables Django management command to create the tables when
    create_tables=False.
  • Fix on_error handlers accumulating one exception argument per failed attempt
    across retries. Handlers now receives only the current attempt's exception.
  • Add huey.contrib.stats, a task-statistics engine: enable_stats(huey, db)
    records task signals into two peewee tables (huey_event, huey_inflight)
    and exposes a HueyStats query API for throughput, per-task timing,
    error-rates, in-flight and recent-event views. Depends only on peewee, so it
    can back a custom dashboard or exporter. Enable it in the consumer to capture
    task execution.
  • Add a Flask-Peewee admin panel, huey.contrib.flask_admin.HueyPanel,
    registered w/ admin.register_panel('Huey', HueyPanel, huey). It renders the
    recorded stats as a dashboard card plus a standalone page with live queue
    depths, throughput, per-task stats, running tasks and recent events. Has
    controls to revoke/restore tasks and flush the queue, schedule, results or
    locks. Requires flask-peewee 4.0.1+.

View commits

v3.1.1

Compare Source

  • Ensure we use a safe name for long postgres queue names. PG has a 63 byte
    limit on the channel name.
  • Ensure recycled worker threads no longer leak their LISTEN connections
    w/Postgres.

View commits

v3.1.0

Compare Source

  • Add first-class Postgres support: PostgresHuey. Workers use LISTEN/NOTIFY
    when a task is enqueued, giving Redis-like dequeue latency without polling,
    and dequeues use select ... for update skip locked so any number of
    consumers can share one database (requires psycopg 3.2+).
  • The django.tasks backend is now also compatible with the django-tasks
    backport package, extending support to pre-6.0 Django.
  • Use an explicit fork multiprocessing context for process workers, rather
    than setting the global start-method from the consumer entry-points. Fixes
    -k process on MacOS 3.8+ / Linux 3.14+ when the consumer is started via
    the huey_consumer console-script or a programmatic
    create_consumer().run().

View commits

v3.0.3

Compare Source

  • Add a Django 6.0 task backend - pretty much works the same way the normal
    Django integration works (manage.py run_huey), but using Django's canonical
    APIs and decorator. Docs here.

View commits

v3.0.2

Compare Source

  • Redis blocking dequeue no longer swallows ConnectionError: the error
    propagates to the worker, which logs it and applies exponential backoff.
    Previously a downed redis server caused workers to busy-loop silently.
  • Chord callbacks now fire when a member task is revoked, expired or cancelled
    by a pre-execute hook. The skipped member contributes a None placeholder
    result. Previously the callback was silently lost.
  • Scheduler skips missed periodic checks after a stall (e.g. suspend/resume)
    instead of running them back-to-back, which enqueued duplicate periodic
    tasks for the current minute.
  • Fix inverted timeout clamp in wait_result() when using notify_result
    with redis < 6 (or an unknown server version): timeouts over one second were
    cut to 1s, and sub-second timeouts blocked indefinitely.
  • put_if_empty() is now atomic for the memory and file storage backends,
    restoring lock_task() mutual exclusion on those backends.
  • FileLock no longer unlinks an existing lock file at construction time,
    which broke mutual exclusion for any process already holding the lock.
  • Process-worker task timeouts use signal.setitimer(), so float / sub-second
    timeouts work. Previously a timeout less than 1 second was silently ignored
    (alarm(0) cancels the timer) and fractional seconds were truncated.
  • Consumer signal handlers only set flags. Logging and greenlet cleanup now
    happen in the main loop, avoiding re-entrant I/O from signal context.
  • A user-supplied task kwarg named task is no longer dropped during
    serialization. Context tasks (context=True) inject the task instance into
    a copy of the kwargs rather than mutating the task's data.
  • MemoryStorage.dequeue() and add_to_schedule() acquire the storage lock,
    like the other mutating methods.
  • normalize_time() treats delay=0 as "now" rather than ignoring it, so
    e.g. expires=0 means "expires immediately" instead of "never expires".
  • Redis enqueued_items(limit) returned limit + 1 items from the producer
    end of the queue. It now returns the next-limit items to be dequeued,
    matching the other storage backends.
  • Redis-dependent tests are skipped when no local redis server is reachable,
    instead of failing at import time.

View commits

messense/nh3 (nh3)

v0.3.6

Compare Source

What's Changed

Full Changelog: https://github.com/messense/nh3/compare/v0.3.5...v0.3.6

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

v1.44.0

Compare Source

Added
  • opentelemetry-docker-tests: Refactor Docker tests to properly validate
    contents of exported telemetry
    (#​5220)
  • opentelemetry-exporter-otlp-common: add shared package for common OTLP
    utilities
    (#​5252)
  • opentelemetry-sdk: add MissingDependencyError exception for declarative
    configuration and use it for missing optional dependency errors
    (#​5265)
  • opentelemetry-sdk: Add ability to refresh process dependent Resource
    attributes
    (#​5280)
  • opentelemetry-sdk: add force_flush method to LogRecordExporter ABC
    (#​5294)
  • opentelemetry-sdk: Make it possible to limit the size of stored spans in
    InMemorySpanExporter
    (#​5296)
  • opentelemetry-sdk: add log record limits environment variables
    OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT and
    OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT
    (#​5300)
  • opentelemetry-sdk: add support for file exporter with declarative config
    (#​5311)
  • opentelemetry-sdk: expose SynchronousMultiLogRecordProcessor and
    ConcurrentMultiLogRecordProcessor publicly
    (#​5327)
  • opentelemetry-sdk: point the declarative configuration package README at
    the shared language support status
    matrix

    in the opentelemetry-configuration repo, so Python conformance status lives
    alongside the other languages instead of being duplicated per language SDK.
    (#​5347)
  • opentelemetry-sdk: document that Python-implementation extensions
    (OTEL_PYTHON_* variables) are bypassed when OTEL_CONFIG_FILE is set. The
    env-var initialisation path is skipped entirely in favour of the declarative
    file; honouring these alongside a config file is tracked as a follow-up.
    (#​5353)
  • opentelemetry-sdk: wire id_generator from declarative configuration to
    TracerProvider
    (#​5363)
  • opentelemetry-sdk: Add support for activating instrumentors from a
    declarative configuration file via the instrumentation/development.python
    section. Instrumentors can declare a configuration attribute to have their
    options validated through the same type-coercion pipeline used for SDK
    component configuration.
    (#​5372)
  • opentelemetry-sdk: add record_min_max option to
    ExponentialBucketHistogramAggregation, matching the option already
    available on ExplicitBucketHistogramAggregation and required by the
    specification
    (#​5377)
Changed
  • opentelemetry-sdk: revert BoundedAttributes RLock back to Lock
    (#​5329)
  • docs: update logs example to use opentelemetry-instrumentation-logging
    (#​5344)
  • opentelemetry-sdk: bump declarative configuration schema to v1.1.0
    (#​5345)
  • opentelemetry-configuration: declarative configuration moves from
    opentelemetry.sdk._configuration into the new public
    opentelemetry-configuration package (opentelemetry.configuration
    namespace), published experimentally. opentelemetry-sdk[file-configuration]
    continues to work as an alias that installs opentelemetry-configuration
    alongside the SDK.
    (#​5356)
  • opentelemetry-api: remove env carrier environment snapshot caching, you now
    have to pass explicitly the mapping where to get the environment variables
    from as the EnvironmentGetter.get first argument.
    (#​5366)
  • opentelemetry-semantic-conventions: bump to 1.42.0
    (#​5410)
  • opentelemetry-semantic-conventions: bump to 1.43.0
    (#​5413)
Removed
  • opentelemetry-api, opentelemetry-sdk: Removed deprecated Events API/SDK.
    Use LogRecord with the event_name field set instead.
    (#​5293)
Fixed
  • opentelemetry-sdk: Optimize LogRecord memory in BatchLogRecordProcessor
    by clearing the Context object before buffering. This is a potentially
    breaking change for custom log exporters that access context from the
    exported ReadableLogRecord, as the context will now be an empty Context()
    instead of the original.
    (#​4977)
  • opentelemetry-sdk: drop non-finite measurements (NaN and Inf) at the
    instrument level to prevent permanent aggregation poisoning
    (#​5336)
  • opentelemetry-sdk: raise ValueError when
    ExplicitBucketHistogramAggregation boundaries are not strictly increasing
    or finite
    (#​5340)
  • opentelemetry-sdk: ProcessResourceDetector no longer collects or emits
    process.command_args and process.command_line by default since the values
    are not sanitized and may contain sensitive information. Users who depend
    on these resource attributes must pass include_command_args=True.
    (#​5364)
  • opentelemetry-exporter-otlp-proto-http: fix the OTLP HTTP metric exporter
    self-observability metrics over-counting data points when
    max_export_batch_size splits a batch; each split now reports its own
    data-point count instead of the whole-batch count.
    (#​5370)
  • opentelemetry-api: Prevent in-place mutation of Context via inherited
    dict methods
    (#​5399)

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)
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.
redis/redis-py (redis)

v7.4.1: 7.4.1

Compare Source

Changes

🐛 Bug Fixes

  • Preserve explicit None for client metadata config (#​4081)

🧰 Maintenance

  • Updating PyJWT dependency. (#​4100)
  • Addressing dependency vulnerabilities and flaky test fixes (source diff)

We'd like to thank all the contributors who worked on this release!
@​elena-kolevska @​vladvildanov @​petyaslavova

laurents/slowapi (slowapi)

v0.1.10

Compare Source

Changed
  • Added: allow usage of the request object in the except_when function (thanks @​colin99d)
  • Added more test exemption logic (thanks @​colin99)
  • Fix logger warning for Python 3.11 deprecation (thanks @​kevin868)
smithyhq/sqladmin (sqladmin)

v0.30.0

Compare Source

Added
Changed
Fixed
New Contributors

Full Changelog: 0.29.0...0.30.0

v0.29.0

Compare Source

Added
Changed
Fixed
New Contributors

Full Changelog: 0.29.0...0.30.0

v0.28.0

Compare Source

DEPRECATIONS
  • Using an empty string filter value for "All" is deprecated; use "__all" instead.
Added
Changed
Fixed
New Contributors

Full Changelog: 0.28.0...0.29.0

v0.27.2

Compare Source

Added
Changed
Fixed
Upgrade notes
  • URL helpers: _build_url_for and _url_for_delete use self.identity when the target object is an instance of the view's model (including polymorphic subclasses), and the object's class identity otherwise. Overrides of either helper apply to built-in templates.
  • Column formatters: Existing two-argument formatters continue to work; pass a third request argument to opt in.
  • Front-end deps: jQuery 4 and Select2 4.1 may affect custom admin JavaScript that relies on older APIs.
New Contributors

Full Changelog: 0.27.2...0.28.0

v0.27.1

Compare Source

Changed
  • build(deps): update to tabler v1.4.0, tabler-icons css v3.44.0 and migrate to Bootstrap v5 by @​CHC383 in #​1058
Fixed
New Contributors

Full Changelog: 0.27.1...0.27.2

v0.27.0

Compare Source

Security
  • Fix advisory GHSA-ccg5-9c8w-xh6v: restrict ModelView.sort_query() to the configured column_sortable_list allow-list (self._sort_fields) and reject invalid sortBy values with HTTP 400, preventing attacker-controlled ordering across arbitrary model and related-model columns and avoiding uncaught AttributeError (HTTP 500) by @​aminalaee.

Full Changelog: 0.27.0...0.27.1

v0.26.0

Compare Source

Added
Fixed
Docs
New Contributors

Full Changelog: 0.26.0...0.27.0


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • 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 has been generated by Mend Renovate.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [alembic](https://github.com/sqlalchemy/alembic) ([changelog](https://alembic.sqlalchemy.org/en/latest/changelog.html)) | project.dependencies | patch | `1.18.4` → `1.18.5` | | [click](https://github.com/pallets/click) ([changelog](https://click.palletsprojects.com/page/changes/)) | project.dependencies | patch | `8.4.0` → `8.4.2` | | [fastapi](https://github.com/fastapi/fastapi) ([changelog](https://fastapi.tiangolo.com/release-notes/)) | project.dependencies | minor | `0.136.1` → `0.141.1` | | grafana/otel-lgtm | | digest | `af7242c` → `46ca028` | | [huey](https://github.com/coleifer/huey) ([changelog](https://github.com/coleifer/huey/blob/master/CHANGELOG.md)) | project.dependencies | minor | `3.0.1` → `3.3.1` | | [nh3](https://github.com/messense/nh3) | project.dependencies | patch | `0.3.5` → `0.3.6` | | [opentelemetry-api](https://github.com/open-telemetry/opentelemetry-python) | project.dependencies | minor | `1.41.1` → `1.44.0` | | [opentelemetry-exporter-otlp](https://github.com/open-telemetry/opentelemetry-python) | project.dependencies | minor | `1.41.1` → `1.44.0` | | [opentelemetry-sdk](https://github.com/open-telemetry/opentelemetry-python) | project.dependencies | minor | `1.41.1` → `1.44.0` | | pyroscope-io | project.dependencies | minor | `1.0.8` → `1.2.1` | | [pytest](https://github.com/pytest-dev/pytest) ([changelog](https://docs.pytest.org/en/stable/changelog.html)) | dependency-groups | minor | `9.0.3` → `9.1.1` | | [redis](https://github.com/redis/redis-py) ([changelog](https://github.com/redis/redis-py/releases)) | project.dependencies | patch | `7.4.0` → `7.4.1` | | redis | | digest | `8096655` → `e8eb6f2` | | [slowapi](https://github.com/laurents/slowapi) | project.dependencies | patch | `0.1.9` → `0.1.10` | | [sqladmin](https://github.com/smithyhq/sqladmin) | project.dependencies | minor | `0.25.1` → `0.30.0` | | [sqlalchemy](https://www.sqlalchemy.org) ([changelog](https://docs.sqlalchemy.org/en/latest/changelog/)) | project.dependencies | patch | `2.0.49` → `2.0.51` | --- ### Release Notes <details> <summary>pallets/click (click)</summary> ### [`v8.4.2`](https://github.com/pallets/click/blob/HEAD/CHANGES.md#Version-842) [Compare Source](https://github.com/pallets/click/compare/8.4.1...8.4.2) Released 2026-06-24 - Fix Fish shell completion broken in `8.4.0` by {pr}`3126`. Newlines and tabs in option help text are now escaped, keeping the original completion format while still supporting multi-line help. {issue}`3502` {issue}`3043` {pr}`3504` {pr}`3508` - Deprecated commands and options with empty or missing help text no longer render a stray leading space before the `(DEPRECATED)` label. {pr}`3509` - A {class}`Group` with `invoke_without_command=True` marks its subcommand as optional in the usage help, showing `[COMMAND]` instead of `COMMAND`. {issue}`3059` {pr}`3507` - `echo_via_pager` flushes after each write, so passing a generator streams output to the pager incrementally instead of staying hidden until the pipe buffer fills. {issue}`3242` {issue}`2542` {pr}`3534` - `echo_via_pager` and `get_pager_file` no longer close a borrowed stdout stream when no external pager runs, completing the partial `I/O operation on closed file` fix from {pr}`3482`. {issue}`3449` {pr}`3533` - Fix CLI usage symopsis for optional arguments producing double square brackets `[[a|b|c]]...` whose type already brackets their metavar. {pr}`3578` - {func}`version_option` resolves a `package_name` that does not match an installed distribution as an import (top-level module) name via {func}`importlib.metadata.packages_distributions`. Packages whose top-level module name differs from their distribution name (`PIL` vs `Pillow`, `jwt` vs `PyJWT`) no longer raise `RuntimeError` out of the box. {issue}`2331` {issue}`1884` {issue}`3125` {pr}`3582` ### [`v8.4.1`](https://github.com/pallets/click/blob/HEAD/CHANGES.md#Version-841) [Compare Source](https://github.com/pallets/click/compare/8.4.0...8.4.1) Released 2026-05-21 - `get_parameter_source()` is available during eager callbacks and type conversion again. {issue}`3458` {pr}`3484` - Zsh completion scripts parse correctly on Windows. {issue}`3277` {pr}`3466` - Shell completion of `Enum` values used as `Choice` options produces a valid completion result. {issue}`3015` {pr}`3471` - Fix empty byte-string handling in echo. {issue}`3487` {pr}`3493` - Fix closed file error with `echo_via_pager`. {issue}`3449` {pr}`3482` - Fix `open_url` on Windows when the file path contains spaces. {issue}`2994` {pr}`3478` </details> <details> <summary>fastapi/fastapi (fastapi)</summary> ### [`v0.141.1`](https://github.com/fastapi/fastapi/releases/tag/0.141.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.141.0...0.141.1) ##### Fixes - 🐛 Fix support for background tasks and headers from dependencies in `app.frontend()`. PR [#&#8203;16105](https://github.com/fastapi/fastapi/pull/16105) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Docs - 📝 Document `FASTAPI_ENV` in FastAPI CLI guide. PR [#&#8203;16104](https://github.com/fastapi/fastapi/pull/16104) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.141.0`](https://github.com/fastapi/fastapi/releases/tag/0.141.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.13...0.141.0) ##### Features - ✨ Add `app.frontend(check_dir="auto")`, to make local development more convenient with `fastapi dev`. PR [#&#8203;16102](https://github.com/fastapi/fastapi/pull/16102) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.13`](https://github.com/fastapi/fastapi/releases/tag/0.140.13) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.12...0.140.13) ##### Fixes - 🐛 Fix `status_code` being ignored for SSE and JSONL streaming endpoints. PR [#&#8203;15937](https://github.com/fastapi/fastapi/pull/15937) by [@&#8203;SAURABHSALVE](https://github.com/SAURABHSALVE). ##### Docs - 📝 Fix `format_sse_event` docstring rendering of `\n\n` terminator. PR [#&#8203;15613](https://github.com/fastapi/fastapi/pull/15613) by [@&#8203;AshNicolus](https://github.com/AshNicolus). - 📝 Add API reference page for fastapi.sse. PR [#&#8203;15930](https://github.com/fastapi/fastapi/pull/15930) by [@&#8203;SAURABHSALVE](https://github.com/SAURABHSALVE). ### [`v0.140.12`](https://github.com/fastapi/fastapi/releases/tag/0.140.12) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.11...0.140.12) ##### Fixes - 🐛 Fix line splitting in `format_sse_event` to comply with SSE spec. PR [#&#8203;15515](https://github.com/fastapi/fastapi/pull/15515) by [@&#8203;Zawwarsami16](https://github.com/Zawwarsami16). ### [`v0.140.11`](https://github.com/fastapi/fastapi/releases/tag/0.140.11) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.10...0.140.11) ##### Fixes - 🐛 Fix `response_model_*` params ignored for non-generator endpoints with `Iterable[..]` return type. PR [#&#8203;15093](https://github.com/fastapi/fastapi/pull/15093) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ### [`v0.140.10`](https://github.com/fastapi/fastapi/releases/tag/0.140.10) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.9...0.140.10) ##### Fixes - 🐛 Fix handling sequences with nested Annotated types. PR [#&#8203;14874](https://github.com/fastapi/fastapi/pull/14874) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ##### Internal - 🐛 Accept any base test failure as regression. PR [#&#8203;16092](https://github.com/fastapi/fastapi/pull/16092) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🐛 Preserve pytest exit code in regression check. PR [#&#8203;16091](https://github.com/fastapi/fastapi/pull/16091) by [@&#8203;tiangolo](https://github.com/tiangolo). - ✅ Test PR regressions against base code. PR [#&#8203;16090](https://github.com/fastapi/fastapi/pull/16090) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.9`](https://github.com/fastapi/fastapi/releases/tag/0.140.9) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.8...0.140.9) ##### Fixes - 🐛 Fix `exclude_defaults` not propagated to dict keys and values in `jsonable_encoder`. PR [#&#8203;16043](https://github.com/fastapi/fastapi/pull/16043) by [@&#8203;MBGrao](https://github.com/MBGrao). ##### Internal - ⬆ Bump gitpython from 3.1.50 to 3.1.54. PR [#&#8203;16047](https://github.com/fastapi/fastapi/pull/16047) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pymdown-extensions from 10.21.3 to 11.0. PR [#&#8203;16048](https://github.com/fastapi/fastapi/pull/16048) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pyasn1 from 0.6.3 to 0.6.4. PR [#&#8203;16045](https://github.com/fastapi/fastapi/pull/16045) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). ### [`v0.140.8`](https://github.com/fastapi/fastapi/releases/tag/0.140.8) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.7...0.140.8) ##### Fixes - 🐛 Fix stream item type lost when using `include_router()`. PR [#&#8203;15077](https://github.com/fastapi/fastapi/pull/15077) by [@&#8203;alex-raw](https://github.com/alex-raw). ### [`v0.140.7`](https://github.com/fastapi/fastapi/releases/tag/0.140.7) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.6...0.140.7) ##### Refactors - ⚡️ Avoid flattening dependencies for OpenAPI. PR [#&#8203;16076](https://github.com/fastapi/fastapi/pull/16076) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - ⬆️ Upgrade latest-changes to 0.7.1. PR [#&#8203;16077](https://github.com/fastapi/fastapi/pull/16077) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Add OpenAPI dependency benchmarks. PR [#&#8203;16075](https://github.com/fastapi/fastapi/pull/16075) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.6`](https://github.com/fastapi/fastapi/releases/tag/0.140.6) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.5...0.140.6) ##### Refactors - ⚡️ Avoid flattening dependencies for request parameters, mainly for OpenAPI. PR [#&#8203;16073](https://github.com/fastapi/fastapi/pull/16073) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.5`](https://github.com/fastapi/fastapi/releases/tag/0.140.5) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.4...0.140.5) ##### Refactors - ⚡️ Avoid flattening dependencies for body fields. PR [#&#8203;16071](https://github.com/fastapi/fastapi/pull/16071) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.4`](https://github.com/fastapi/fastapi/releases/tag/0.140.4) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.3...0.140.4) ##### Refactors - ⚡️ Skip unused dependency repeat bookkeeping. PR [#&#8203;16069](https://github.com/fastapi/fastapi/pull/16069) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.3`](https://github.com/fastapi/fastapi/releases/tag/0.140.3) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.2...0.140.3) ##### Refactors - ⚡️ Avoid repeated dependency flattening in OpenAPI. PR [#&#8203;16067](https://github.com/fastapi/fastapi/pull/16067) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.2`](https://github.com/fastapi/fastapi/releases/tag/0.140.2) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.1...0.140.2) ##### Refactors - ⚡️ Stop retaining flat dependency trees. PR [#&#8203;16065](https://github.com/fastapi/fastapi/pull/16065) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 👷 Add new memory benchmark. PR [#&#8203;16064](https://github.com/fastapi/fastapi/pull/16064) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.1`](https://github.com/fastapi/fastapi/releases/tag/0.140.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.140.0...0.140.1) ##### Refactors - ♻️ Update the lru\_cache limit for dependencies to account for large apps. PR [#&#8203;16062](https://github.com/fastapi/fastapi/pull/16062) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.140.0`](https://github.com/fastapi/fastapi/releases/tag/0.140.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.139.2...0.140.0) ##### Refactors - ⚡️ Reduce memory usage in dependencies. PR [#&#8203;16049](https://github.com/fastapi/fastapi/pull/16049) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Docs - 📝 Fix links in docs. PR [#&#8203;15967](https://github.com/fastapi/fastapi/pull/15967) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 📝 Add Library Skills documentation. PR [#&#8203;16041](https://github.com/fastapi/fastapi/pull/16041) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update docs to use uv projects by default. PR [#&#8203;16032](https://github.com/fastapi/fastapi/pull/16032) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Restructure FastAPI People and related pages. PR [#&#8203;16015](https://github.com/fastapi/fastapi/pull/16015) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 👷 Add CI memory benchmark. PR [#&#8203;16046](https://github.com/fastapi/fastapi/pull/16046) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👥 Update FastAPI People - Sponsors. PR [#&#8203;16027](https://github.com/fastapi/fastapi/pull/16027) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔥 Remove now-obsolete scripts to generate data for FastAPI People. PR [#&#8203;16016](https://github.com/fastapi/fastapi/pull/16016) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.139.2`](https://github.com/fastapi/fastapi/releases/tag/0.139.2) [Compare Source](https://github.com/fastapi/fastapi/compare/0.139.1...0.139.2) ##### Fixes - 🐛 Refactor router route building to make it thread-safe, mainly relevant for tests running in parallel threads (uncommon). PR [#&#8203;16013](https://github.com/fastapi/fastapi/pull/16013) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.139.1`](https://github.com/fastapi/fastapi/releases/tag/0.139.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.139.0...0.139.1) ##### Fixes - 🐛 Fix frontend fallback support for doted paths like `/users/john.doe`. PR [#&#8203;16011](https://github.com/fastapi/fastapi/pull/16011) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Docs - 📝 Fix topic repository list not being displayed and `skip_users` not being applied. PR [#&#8203;15995](https://github.com/fastapi/fastapi/pull/15995) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ##### Translations - 🌐 Update translations for tr (update-outdated). PR [#&#8203;16005](https://github.com/fastapi/fastapi/pull/16005) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh-hant (update-outdated). PR [#&#8203;15996](https://github.com/fastapi/fastapi/pull/15996) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for fr (update-outdated). PR [#&#8203;16006](https://github.com/fastapi/fastapi/pull/16006) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for de (update-outdated). PR [#&#8203;15999](https://github.com/fastapi/fastapi/pull/15999) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ko (update-outdated). PR [#&#8203;16004](https://github.com/fastapi/fastapi/pull/16004) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh (update-outdated). PR [#&#8203;16001](https://github.com/fastapi/fastapi/pull/16001) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for uk (update-outdated). PR [#&#8203;16003](https://github.com/fastapi/fastapi/pull/16003) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ja (update-outdated). PR [#&#8203;15998](https://github.com/fastapi/fastapi/pull/15998) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for pt (update-outdated). PR [#&#8203;16000](https://github.com/fastapi/fastapi/pull/16000) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for es (update-outdated). PR [#&#8203;15997](https://github.com/fastapi/fastapi/pull/15997) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ru (update-outdated). PR [#&#8203;16002](https://github.com/fastapi/fastapi/pull/16002) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for hi (add-missing). PR [#&#8203;15990](https://github.com/fastapi/fastapi/pull/15990) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for hi (add-missing). PR [#&#8203;15925](https://github.com/fastapi/fastapi/pull/15925) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for hi (add-missing). PR [#&#8203;15797](https://github.com/fastapi/fastapi/pull/15797) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update `llm-prompt.md` for Hindi. PR [#&#8203;15810](https://github.com/fastapi/fastapi/pull/15810) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 🌐 Fix language-specific translation prompt for Russian language. PR [#&#8203;15924](https://github.com/fastapi/fastapi/pull/15924) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ##### Internal - ⬆ Bump the python-packages group across 1 directory with 6 updates. PR [#&#8203;15981](https://github.com/fastapi/fastapi/pull/15981) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump typing-extensions from 4.15.0 to 4.16.0. PR [#&#8203;15982](https://github.com/fastapi/fastapi/pull/15982) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group across 1 directory with 4 updates. PR [#&#8203;15983](https://github.com/fastapi/fastapi/pull/15983) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pre-commit hooks. PR [#&#8203;15985](https://github.com/fastapi/fastapi/pull/15985) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Use `FASTAPI_LATEST_CHANGES` token in `bump-pre-commit-hooks` workflow. PR [#&#8203;15984](https://github.com/fastapi/fastapi/pull/15984) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 👷 Add GH workflow to bump pre-commit hook versions. PR [#&#8203;15873](https://github.com/fastapi/fastapi/pull/15873) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 🔧 Set Dependabot schedule interval to "monthly". PR [#&#8203;15874](https://github.com/fastapi/fastapi/pull/15874) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⬆ Bump CodSpeedHQ/action from 4.17.6 to 4.18.1 in the github-actions group. PR [#&#8203;15950](https://github.com/fastapi/fastapi/pull/15950) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the python-packages group with 8 updates. PR [#&#8203;15952](https://github.com/fastapi/fastapi/pull/15952) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 🔧 Update sponsors: add TutorCruncher. PR [#&#8203;15947](https://github.com/fastapi/fastapi/pull/15947) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Fix notify translations checkout target. PR [#&#8203;15933](https://github.com/fastapi/fastapi/pull/15933) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Fix latest-changes checkout target. PR [#&#8203;15932](https://github.com/fastapi/fastapi/pull/15932) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: remove RapidProxy. PR [#&#8203;15929](https://github.com/fastapi/fastapi/pull/15929) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆️ Update issue-manager to 0.8.1. PR [#&#8203;15928](https://github.com/fastapi/fastapi/pull/15928) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆️ Update latest-changes to 0.6.1. PR [#&#8203;15926](https://github.com/fastapi/fastapi/pull/15926) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.139.0`](https://github.com/fastapi/fastapi/releases/tag/0.139.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.138.2...0.139.0) ##### Features - ✨ Support dependencies in `app.frontend()`, e.g. for automatic cookie authentication for the frontend. PR [#&#8203;15908](https://github.com/fastapi/fastapi/pull/15908) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Translations - 🌐 Update translations for fr (update-outdated). PR [#&#8203;15897](https://github.com/fastapi/fastapi/pull/15897) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ja (update-outdated). PR [#&#8203;15895](https://github.com/fastapi/fastapi/pull/15895) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh-hant (update-outdated). PR [#&#8203;15896](https://github.com/fastapi/fastapi/pull/15896) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for de (update-outdated). PR [#&#8203;15899](https://github.com/fastapi/fastapi/pull/15899) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for es (update-outdated). PR [#&#8203;15892](https://github.com/fastapi/fastapi/pull/15892) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for tr (update-outdated). PR [#&#8203;15891](https://github.com/fastapi/fastapi/pull/15891) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for pt (update-outdated). PR [#&#8203;15893](https://github.com/fastapi/fastapi/pull/15893) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh (update-outdated). PR [#&#8203;15898](https://github.com/fastapi/fastapi/pull/15898) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for uk (update-outdated). PR [#&#8203;15900](https://github.com/fastapi/fastapi/pull/15900) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ko (update-outdated). PR [#&#8203;15890](https://github.com/fastapi/fastapi/pull/15890) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ru (update-outdated). PR [#&#8203;15894](https://github.com/fastapi/fastapi/pull/15894) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ko (add-missing). PR [#&#8203;15888](https://github.com/fastapi/fastapi/pull/15888) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for es (add-missing). PR [#&#8203;15880](https://github.com/fastapi/fastapi/pull/15880) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh-hant (add-missing). PR [#&#8203;15889](https://github.com/fastapi/fastapi/pull/15889) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for pt (add-missing). PR [#&#8203;15883](https://github.com/fastapi/fastapi/pull/15883) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh (add-missing). PR [#&#8203;15885](https://github.com/fastapi/fastapi/pull/15885) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ja (add-missing). PR [#&#8203;15882](https://github.com/fastapi/fastapi/pull/15882) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for tr (add-missing). PR [#&#8203;15887](https://github.com/fastapi/fastapi/pull/15887) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for uk (add-missing). PR [#&#8203;15886](https://github.com/fastapi/fastapi/pull/15886) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for fr (add-missing). PR [#&#8203;15881](https://github.com/fastapi/fastapi/pull/15881) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for de (add-missing). PR [#&#8203;15884](https://github.com/fastapi/fastapi/pull/15884) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ru (add-missing). PR [#&#8203;15879](https://github.com/fastapi/fastapi/pull/15879) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 👥 Update FastAPI People - Experts. PR [#&#8203;15909](https://github.com/fastapi/fastapi/pull/15909) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👥 Update FastAPI GitHub topic repositories. PR [#&#8203;15906](https://github.com/fastapi/fastapi/pull/15906) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👥 Update FastAPI People - Contributors and Translators. PR [#&#8203;15878](https://github.com/fastapi/fastapi/pull/15878) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Remove not needed `allow-unsafe-pr-checkout: true`. PR [#&#8203;15876](https://github.com/fastapi/fastapi/pull/15876) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⬆ Bump the github-actions group with 5 updates. PR [#&#8203;15872](https://github.com/fastapi/fastapi/pull/15872) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the python-packages group across 1 directory with 10 updates. PR [#&#8203;15870](https://github.com/fastapi/fastapi/pull/15870) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump CodSpeedHQ/action from 4.17.0 to 4.17.5 in the github-actions group. PR [#&#8203;15826](https://github.com/fastapi/fastapi/pull/15826) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). ### [`v0.138.2`](https://github.com/fastapi/fastapi/releases/tag/0.138.2) [Compare Source](https://github.com/fastapi/fastapi/compare/0.138.1...0.138.2) ##### Refactors - ♻️ Make `app.frontend()` return 404 for methods other than `GET` or `HEAD` with no static file matches. PR [#&#8203;15863](https://github.com/fastapi/fastapi/pull/15863) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 🔧 Update sponsors: remove Stainless. PR [#&#8203;15862](https://github.com/fastapi/fastapi/pull/15862) by [@&#8203;tiangolo](https://github.com/tiangolo). - ♻️ Refactor how sponsors data is handled for banners. PR [#&#8203;15852](https://github.com/fastapi/fastapi/pull/15852) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.138.1`](https://github.com/fastapi/fastapi/releases/tag/0.138.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.138.0...0.138.1) ##### Refactors - ♻️ Refactor Library Skills, make info easier to find for agents. PR [#&#8203;15841](https://github.com/fastapi/fastapi/pull/15841) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 👷 Simplify pull request workflow triggers. PR [#&#8203;15836](https://github.com/fastapi/fastapi/pull/15836) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Update issue-manager to 0.7.1. PR [#&#8203;15833](https://github.com/fastapi/fastapi/pull/15833) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆️ Update issue-manager to 0.7.0. PR [#&#8203;15831](https://github.com/fastapi/fastapi/pull/15831) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: Add TestMu again. PR [#&#8203;15830](https://github.com/fastapi/fastapi/pull/15830) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔒️ Update zizmor workflow security checks. PR [#&#8203;15820](https://github.com/fastapi/fastapi/pull/15820) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump pydantic-settings from 2.14.1 to 2.14.2. PR [#&#8203;15799](https://github.com/fastapi/fastapi/pull/15799) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). ### [`v0.138.0`](https://github.com/fastapi/fastapi/releases/tag/0.138.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.137.2...0.138.0) ##### Features - ✨ Add support for `app.frontend("/", directory="dist")` and `router.frontend("/", directory="dist")`. PR [#&#8203;15800](https://github.com/fastapi/fastapi/pull/15800) by [@&#8203;tiangolo](https://github.com/tiangolo). - Read the docs: [Frontend](https://fastapi.tiangolo.com/tutorial/frontend/). ##### Docs - 📝 Fix typo in release notes. PR [#&#8203;15807](https://github.com/fastapi/fastapi/pull/15807) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Add `app.frontend()` instructions to Agent Library Skill. PR [#&#8203;15805](https://github.com/fastapi/fastapi/pull/15805) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update release notes link. PR [#&#8203;15802](https://github.com/fastapi/fastapi/pull/15802) by [@&#8203;tiangolo](https://github.com/tiangolo). - ✏️ Update white space characters in bigger apps. PR [#&#8203;15801](https://github.com/fastapi/fastapi/pull/15801) by [@&#8203;tiangolo](https://github.com/tiangolo). - ✏️ Fix grammar, typos, and broken links in docs. PR [#&#8203;15694](https://github.com/fastapi/fastapi/pull/15694) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ##### Translations - 🌐 Enable Hindi docs translations. PR [#&#8203;15554](https://github.com/fastapi/fastapi/pull/15554) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ##### Internal - 🐛 Fix failing test, update format for raised errors. PR [#&#8203;15804](https://github.com/fastapi/fastapi/pull/15804) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Fix test-alls-green. PR [#&#8203;15803](https://github.com/fastapi/fastapi/pull/15803) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Enable checking `release-notes.md` for typos. PR [#&#8203;15796](https://github.com/fastapi/fastapi/pull/15796) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - 📝 Tweak wording about deploying to FastAPI Cloud. PR [#&#8203;15793](https://github.com/fastapi/fastapi/pull/15793) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔨 Use `gpt-5.5` model in `translate.py`, specify `-chat` to avoid warnings. PR [#&#8203;15792](https://github.com/fastapi/fastapi/pull/15792) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ### [`v0.137.2`](https://github.com/fastapi/fastapi/releases/tag/0.137.2) [Compare Source](https://github.com/fastapi/fastapi/compare/0.137.1...0.137.2) ##### Features - ✨ Add `iter_route_contexts()` for advanced use cases that used to use `router.routes` (e.g. Jupyverse). PR [#&#8203;15785](https://github.com/fastapi/fastapi/pull/15785) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Translations - 🌐 Fix broken Markdown in Korean custom response docs. PR [#&#8203;15774](https://github.com/fastapi/fastapi/pull/15774) by [@&#8203;kooqooo](https://github.com/kooqooo). - 🌐 Update translations for fr (update-outdated). PR [#&#8203;15761](https://github.com/fastapi/fastapi/pull/15761) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh-hant (update-outdated). PR [#&#8203;15760](https://github.com/fastapi/fastapi/pull/15760) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for de (update-outdated). PR [#&#8203;15759](https://github.com/fastapi/fastapi/pull/15759) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ko (update-outdated). PR [#&#8203;15757](https://github.com/fastapi/fastapi/pull/15757) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for uk (update-outdated). PR [#&#8203;15756](https://github.com/fastapi/fastapi/pull/15756) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh (update-outdated). PR [#&#8203;15755](https://github.com/fastapi/fastapi/pull/15755) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for tr (update-outdated). PR [#&#8203;15754](https://github.com/fastapi/fastapi/pull/15754) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for pt (update-outdated). PR [#&#8203;15753](https://github.com/fastapi/fastapi/pull/15753) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for es (update-outdated). PR [#&#8203;15752](https://github.com/fastapi/fastapi/pull/15752) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ja (update-outdated). PR [#&#8203;15751](https://github.com/fastapi/fastapi/pull/15751) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ru (update-outdated). PR [#&#8203;15758](https://github.com/fastapi/fastapi/pull/15758) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 🔧 Update sponsors: add BairesDev. PR [#&#8203;15787](https://github.com/fastapi/fastapi/pull/15787) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔨 Update sponsors script to simplify previews. PR [#&#8203;15786](https://github.com/fastapi/fastapi/pull/15786) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump the python-packages group across 1 directory with 7 updates. PR [#&#8203;15777](https://github.com/fastapi/fastapi/pull/15777) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump cryptography from 46.0.7 to 48.0.1. PR [#&#8203;15779](https://github.com/fastapi/fastapi/pull/15779) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump aiohttp from 3.14.0 to 3.14.1. PR [#&#8203;15781](https://github.com/fastapi/fastapi/pull/15781) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump starlette from 1.2.1 to 1.3.1. PR [#&#8203;15780](https://github.com/fastapi/fastapi/pull/15780) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump astral-sh/setup-uv from 8.1.0 to 8.2.0 in the github-actions group. PR [#&#8203;15776](https://github.com/fastapi/fastapi/pull/15776) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump <https://github.com/crate-ci/typos> from v1.47.1 to v1.47.2 in the pre-commit group. PR [#&#8203;15775](https://github.com/fastapi/fastapi/pull/15775) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump python-multipart from 0.0.30 to 0.0.32. PR [#&#8203;15778](https://github.com/fastapi/fastapi/pull/15778) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⏪️ Revert removing scripts, only remove `coverage.sh`. PR [#&#8203;15772](https://github.com/fastapi/fastapi/pull/15772) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔥 Remove unused scripts. PR [#&#8203;15771](https://github.com/fastapi/fastapi/pull/15771) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Add ty configs to check docs sources. PR [#&#8203;15770](https://github.com/fastapi/fastapi/pull/15770) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Add ty configs to check docs sources. PR [#&#8203;15769](https://github.com/fastapi/fastapi/pull/15769) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.137.1`](https://github.com/fastapi/fastapi/releases/tag/0.137.1) [Compare Source](https://github.com/fastapi/fastapi/compare/0.137.0...0.137.1) ##### Fixes - 🚨 Fix typing checks for APIRoute. PR [#&#8203;15765](https://github.com/fastapi/fastapi/pull/15765) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🐛 Fix bug, allow empty path in path operation in prefixless router. PR [#&#8203;15763](https://github.com/fastapi/fastapi/pull/15763) by [@&#8203;tiangolo](https://github.com/tiangolo). ### [`v0.137.0`](https://github.com/fastapi/fastapi/releases/tag/0.137.0) [Compare Source](https://github.com/fastapi/fastapi/compare/0.136.3...0.137.0) ##### Breaking Changes - ♻️ Refactor internals to preserve `APIRouter` and `APIRoute` instances. PR [#&#8203;15745](https://github.com/fastapi/fastapi/pull/15745) by [@&#8203;tiangolo](https://github.com/tiangolo). Unblocks ✨ SO MANY THINGS ✨ Before this, `router.include_router(other_router)` would take each path operation from `other_router` and "clone" it, or recreate it from scratch. This would mean that in the end there was only one top level router, part of the app. The way it is structured here is that there are a few additional classes to handle intermediate metadata for router and route inclusion. That way the information of "router X includes Y and Y includes Z" is stored somewhere, without affecting (recreating / clonning) the final route. ##### Non Objectives Dependencies for 404: previously I intended to support dependencies that would be executed even for 404, but that would conflict with the fact that a router could *not* find a match, but the next router *did* find a match. Executing dependencies in the router that did not find a match would not make sense, they could consume the request, body, etc. This original idea was discarded. ##### Specific Breaking Changes Now `router.routes` is no longer a plain list of `APIRoute` objects, it can contain these intermediate objects that can contain additional routers, forming a tree. Any logic that depended on iterating on the `router.routes` directly would be affected, that logic cannot expect to be able to extract data from a plain list of routes, as it's no longer a plain list but a tree. Additionally, any logic that iterated on `router.routes` to modify them would now also see these new objects, and would not see all the routes in the app. `router.routes` should be considered an internal implementation detail, only passed around to the FastAPI functions that need it. ##### Features - Adding routes (path operations) after a router is included now works, they are reflected as they are not copied. - Including `subrouter` in `mainrouter` can be done before adding routes (path operations) to `subrouter`, because now the the entire object is stored instead of copying the routes. - As routes are not copied, in some cases that might save some memory. ##### Alpha Features This is not documented yet, so it's not officially supported yet and could change in the future. But, as `APIRoute` and `APIRouter` instances are now preserved, they could be customized. `APIRouter` has two new methods, `.matches()` and `.handle()`, counterpart to the existing ones in `APIRoute`. With this a router could customize how it matches and handles requests. For example, it could match only requests that include some specific header, for example for handling versions in headers. Still, for now, consider this very experimental and potentially changing and breaking in the future. ##### Future Features Enabled - Custom `APIRoute` subclasses (undocumented, but alraedy works as desccribed above) - Custom `APIRouter` subclasses (undocumented, but already works as described above) - Dependencies per router - Exception handlers per router - Middleware per router - Other features planned ##### Docs - 📝 Update release notes. PR [#&#8203;15747](https://github.com/fastapi/fastapi/pull/15747) by [@&#8203;tiangolo](https://github.com/tiangolo). - 📝 Update FastAPI Cloud deployment instructions. PR [#&#8203;15724](https://github.com/fastapi/fastapi/pull/15724) by [@&#8203;alejsdev](https://github.com/alejsdev). - ✏️ Use `Annotated` in inline example in `docs/en/docs/tutorial/body-multiple-params.md`. PR [#&#8203;15591](https://github.com/fastapi/fastapi/pull/15591) by [@&#8203;TheArchons](https://github.com/TheArchons). - 📝 Remove "NGINX Unit" from the list of ASGI-servers in docs. PR [#&#8203;15475](https://github.com/fastapi/fastapi/pull/15475) by [@&#8203;angryfoxx](https://github.com/angryfoxx). - 📝 Update `docs/en/docs/tutorial/security/oauth2-jwt.md`. PR [#&#8203;14781](https://github.com/fastapi/fastapi/pull/14781) by [@&#8203;zadevhub](https://github.com/zadevhub). ##### Translations - 🌐 Update translations for zh-hant (update-outdated). PR [#&#8203;15671](https://github.com/fastapi/fastapi/pull/15671) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for es (update-outdated). PR [#&#8203;15670](https://github.com/fastapi/fastapi/pull/15670) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for fr (update-outdated). PR [#&#8203;15669](https://github.com/fastapi/fastapi/pull/15669) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ja (update-outdated). PR [#&#8203;15668](https://github.com/fastapi/fastapi/pull/15668) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for pt (update-outdated). PR [#&#8203;15667](https://github.com/fastapi/fastapi/pull/15667) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for tr (update-outdated). PR [#&#8203;15666](https://github.com/fastapi/fastapi/pull/15666) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for zh (update-outdated). PR [#&#8203;15665](https://github.com/fastapi/fastapi/pull/15665) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ko (update-outdated). PR [#&#8203;15664](https://github.com/fastapi/fastapi/pull/15664) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for de (update-outdated). PR [#&#8203;15673](https://github.com/fastapi/fastapi/pull/15673) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for uk (update-outdated). PR [#&#8203;15672](https://github.com/fastapi/fastapi/pull/15672) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🌐 Update translations for ru (update-outdated). PR [#&#8203;15674](https://github.com/fastapi/fastapi/pull/15674) by [@&#8203;tiangolo](https://github.com/tiangolo). ##### Internal - 🔧 Update sponsors: remove TalorData. PR [#&#8203;15744](https://github.com/fastapi/fastapi/pull/15744) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: remove ExoFlare. PR [#&#8203;15736](https://github.com/fastapi/fastapi/pull/15736) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: remove InterviewPal. PR [#&#8203;15735](https://github.com/fastapi/fastapi/pull/15735) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: remove Liblab. PR [#&#8203;15731](https://github.com/fastapi/fastapi/pull/15731) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: remove Scalar. PR [#&#8203;15730](https://github.com/fastapi/fastapi/pull/15730) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump the python-packages group across 1 directory with 6 updates. PR [#&#8203;15721](https://github.com/fastapi/fastapi/pull/15721) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump python-multipart from 0.0.29 to 0.0.30. PR [#&#8203;15723](https://github.com/fastapi/fastapi/pull/15723) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group with 3 updates. PR [#&#8203;15720](https://github.com/fastapi/fastapi/pull/15720) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump starlette from 1.1.0 to 1.2.1. PR [#&#8203;15722](https://github.com/fastapi/fastapi/pull/15722) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump <https://github.com/crate-ci/typos> from v1.46.0 to v1.47.1 in the pre-commit group. PR [#&#8203;15719](https://github.com/fastapi/fastapi/pull/15719) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 🔧 Update sponsors, add Rapidproxy. PR [#&#8203;15689](https://github.com/fastapi/fastapi/pull/15689) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔧 Update sponsors: Remove TestMu. PR [#&#8203;15688](https://github.com/fastapi/fastapi/pull/15688) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump the python-packages group across 1 directory with 11 updates. PR [#&#8203;15683](https://github.com/fastapi/fastapi/pull/15683) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump aiohttp from 3.13.4 to 3.14.0. PR [#&#8203;15681](https://github.com/fastapi/fastapi/pull/15681) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump the github-actions group with 2 updates. PR [#&#8203;15682](https://github.com/fastapi/fastapi/pull/15682) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump starlette from 1.0.0 to 1.1.0. PR [#&#8203;15684](https://github.com/fastapi/fastapi/pull/15684) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👥 Update FastAPI People - Experts. PR [#&#8203;15677](https://github.com/fastapi/fastapi/pull/15677) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👥 Update FastAPI GitHub topic repositories. PR [#&#8203;15675](https://github.com/fastapi/fastapi/pull/15675) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👥 Update FastAPI People - Contributors and Translators. PR [#&#8203;15662](https://github.com/fastapi/fastapi/pull/15662) by [@&#8203;tiangolo](https://github.com/tiangolo). - 👷 Automate release preparation. PR [#&#8203;15661](https://github.com/fastapi/fastapi/pull/15661) by [@&#8203;tiangolo](https://github.com/tiangolo). - 🔥 Remove slim package stub, deprecated for a while. PR [#&#8203;15649](https://github.com/fastapi/fastapi/pull/15649) by [@&#8203;tiangolo](https://github.com/tiangolo). - ⬆ Bump authlib from 1.6.11 to 1.7.2. PR [#&#8203;15512](https://github.com/fastapi/fastapi/pull/15512) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump pymdown-extensions from 10.21.2 to 10.21.3. PR [#&#8203;15569](https://github.com/fastapi/fastapi/pull/15569) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump CodSpeedHQ/action from 4.14.0 to 4.15.1. PR [#&#8203;15513](https://github.com/fastapi/fastapi/pull/15513) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - ⬆ Bump python-multipart from 0.0.26 to 0.0.29. PR [#&#8203;15595](https://github.com/fastapi/fastapi/pull/15595) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 🔒️ Improve GitHub actions security. PR [#&#8203;15607](https://github.com/fastapi/fastapi/pull/15607) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⚰️ Remove ruff and coverage ignores for non-existing files. PR [#&#8203;15610](https://github.com/fastapi/fastapi/pull/15610) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ✅ Use custom `changing_dir` instead of `CLIRunner.isolated_filesystem` to set working dir. PR [#&#8203;15616](https://github.com/fastapi/fastapi/pull/15616) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ✅ Add `httpx2` test dependency to avoid deprecation warning. PR [#&#8203;15603](https://github.com/fastapi/fastapi/pull/15603) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). - ⬆ Bump the python-packages group with 15 updates. PR [#&#8203;15594](https://github.com/fastapi/fastapi/pull/15594) by [@&#8203;dependabot\[bot\]](https://github.com/apps/dependabot). - 👷 Configure Dependabot to group updates and update weekly. PR [#&#8203;15560](https://github.com/fastapi/fastapi/pull/15560) by [@&#8203;YuriiMotov](https://github.com/YuriiMotov). ### [`v0.136.3`](https://github.com/fastapi/fastapi/releases/tag/0.136.3) [Compare Source](https://github.com/fastapi/fastapi/compare/0.136.1...0.136.3) ##### Refactors - ♻️ Do not accept underscore headers when using `convert_underscores=True` (the default). PR [#&#8203;15589](https://github.com/fastapi/fastapi/pull/15589) by [@&#8203;tiangolo](https://github.com/tiangolo). </details> <details> <summary>coleifer/huey (huey)</summary> ### [`v3.3.1`](https://github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#331) [Compare Source](https://github.com/coleifer/huey/compare/3.3.0...3.3.1) - Ensure traceback is stored properly for error results. - Restart the stats recorder in forked children via `os.register_at_fork`. Previously the writer thread existed only in the process that called `enable_stats()`, so a consumer w/ `worker_type='process'` (or a preforking web server that loads the app before forking) buffered task events in its workers but never wrote them, and the dashboard showed tasks stuck on "enqueued". [View commits](https://github.com/coleifer/huey/compare/3.3.0...3.3.1) ### [`v3.3.0`](https://github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#330) [Compare Source](https://github.com/coleifer/huey/compare/3.2.1...3.3.0) - Add `retry_backoff` parameter to `task()` and `periodic_task()`. The first retry waits `retry_delay` seconds and each subsequent delay is multiplied by `retry_backoff`, giving exponentially-growing waits between retries. - Fix `create_tables=False`, which crashed `SqliteHuey` at connect and was silently ignored by the peewee `SqlHuey`. `SqlStorage` also gains `initialize_schema()` so the `create_huey_tables` command supports it. - Accept float priorities in `FileStorage` by truncating to int. Previously they raised a TypeError. - Raise `ResultTimeout` from blocking `Result.get()` when the wait ends w/o an obtainable result, e.g. a dropped connection. Previously the internal `EmptyData` sentinel could be returned. - Preserve per-call `retry_backoff` when a task is rescheduled via `Result.reschedule()`. - Clear revocations that arrive mid-execution w/ a delete, so the clear also works on `RedisExpireHuey` where destructive reads do not remove data. - Fix an off-by-one in the redis `scheduled_items()` that returned limit+1 items. - Reconnect stale connections in the `SqlHuey` counter methods, which run in the consumer via chords and rate limits. - Return the lock from `TaskLock.__enter__()`, so `with huey.lock_task('x') as lock:` binds the lock instead of None. - Defer the redis server version check to first use. Previously every storage init issued an INFO round-trip. - Remove the undocumented Kyoto Tycoon storage backend, its tests, and the ukt CI dependency. - Remove the djhuey `backend_class` alias for `huey_class` (deprecated since 2.0) and the Django <1.2 `settings.DATABASE_NAME` queue-name fallback. - Fire the chord callback when a pipelined member dies before its tail. A failed, revoked, or expired stage now contributes for the member, where previously the chord counter stayed short and the callback never ran. - Add `CySqliteHuey`, which drives the sqlite storage w/ `cysqlite` instead of the stdlib `sqlite3` module and takes an open-ended `pragmas` dict in place of a fixed set of tuning parameters. [View commits](https://github.com/coleifer/huey/compare/3.2.1...3.3.0) ### [`v3.2.1`](https://github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#321) [Compare Source](https://github.com/coleifer/huey/compare/3.2.0...3.2.1) - Add a Django admin dashboard for task statistics. Adding `huey.contrib.djhuey.stats` to `INSTALLED_APPS` starts the `huey.contrib.stats` recorder in every process (incl. the consumer) and adds a Huey section to the admin: a dashboard w/ the same live stats and controls as the flask-peewee panel, plus a filterable event log. Stats are stored via peewee in the default Django database and require no migrations. [View commits](https://github.com/coleifer/huey/compare/3.2.0...3.2.1) ### [`v3.2.0`](https://github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#320) [Compare Source](https://github.com/coleifer/huey/compare/3.1.1...3.2.0) - Add `store_intermediate_errors` option (default true, preserving current behavior). When false, a task that fails with retries remaining no longer writes its exception to the result store or runs its `on_error` handler until the retries are exhausted, so a blocking `Result.get()` waits for the *final* outcome instead of raising on the first failed attempt. - Add `create_tables` option to the SQL storage backends (default true). Pass `create_tables=False` to skip the automatic `create table if not exists` at init, e.g. to manage huey's schema via Django migrations rather than have every web worker attempt DDL on import. - Add a `create_huey_tables` Django management command to create the tables when `create_tables=False`. - Fix `on_error` handlers accumulating one exception argument per failed attempt across retries. Handlers now receives only the current attempt's exception. - Add `huey.contrib.stats`, a task-statistics engine: `enable_stats(huey, db)` records task signals into two peewee tables (`huey_event`, `huey_inflight`) and exposes a `HueyStats` query API for throughput, per-task timing, error-rates, in-flight and recent-event views. Depends only on peewee, so it can back a custom dashboard or exporter. Enable it in the consumer to capture task execution. - Add a Flask-Peewee admin panel, `huey.contrib.flask_admin.HueyPanel`, registered w/ `admin.register_panel('Huey', HueyPanel, huey)`. It renders the recorded stats as a dashboard card plus a standalone page with live queue depths, throughput, per-task stats, running tasks and recent events. Has controls to revoke/restore tasks and flush the queue, schedule, results or locks. Requires flask-peewee 4.0.1+. [View commits](https://github.com/coleifer/huey/compare/3.1.1...3.2.0) ### [`v3.1.1`](https://github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#311) [Compare Source](https://github.com/coleifer/huey/compare/3.1.0...3.1.1) - Ensure we use a safe name for long postgres queue names. PG has a 63 byte limit on the channel name. - Ensure recycled worker threads no longer leak their LISTEN connections w/Postgres. [View commits](https://github.com/coleifer/huey/compare/3.1.0...3.1.1) ### [`v3.1.0`](https://github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#310) [Compare Source](https://github.com/coleifer/huey/compare/3.0.3...3.1.0) - Add first-class Postgres support: `PostgresHuey`. Workers use LISTEN/NOTIFY when a task is enqueued, giving Redis-like dequeue latency without polling, and dequeues use `select ... for update skip locked` so any number of consumers can share one database (requires psycopg 3.2+). - The django.tasks backend is now also compatible with the `django-tasks` backport package, extending support to pre-6.0 Django. - Use an explicit `fork` multiprocessing context for process workers, rather than setting the global start-method from the consumer entry-points. Fixes `-k process` on MacOS 3.8+ / Linux 3.14+ when the consumer is started via the `huey_consumer` console-script or a programmatic `create_consumer().run()`. [View commits](https://github.com/coleifer/huey/compare/3.0.3...3.1.0) ### [`v3.0.3`](https://github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#303) [Compare Source](https://github.com/coleifer/huey/compare/3.0.2...3.0.3) - Add a Django 6.0 task backend - pretty much works the same way the normal Django integration works (manage.py run\_huey), but using Django's canonical APIs and decorator. Docs [here](https://huey.readthedocs.io/en/latest/django.html#django-task). [View commits](https://github.com/coleifer/huey/compare/3.0.2...3.0.3) ### [`v3.0.2`](https://github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#302) [Compare Source](https://github.com/coleifer/huey/compare/3.0.1...3.0.2) - Redis blocking dequeue no longer swallows `ConnectionError`: the error propagates to the worker, which logs it and applies exponential backoff. Previously a downed redis server caused workers to busy-loop silently. - Chord callbacks now fire when a member task is revoked, expired or cancelled by a pre-execute hook. The skipped member contributes a `None` placeholder result. Previously the callback was silently lost. - Scheduler skips missed periodic checks after a stall (e.g. suspend/resume) instead of running them back-to-back, which enqueued duplicate periodic tasks for the current minute. - Fix inverted timeout clamp in `wait_result()` when using `notify_result` with redis < 6 (or an unknown server version): timeouts over one second were cut to 1s, and sub-second timeouts blocked indefinitely. - `put_if_empty()` is now atomic for the memory and file storage backends, restoring `lock_task()` mutual exclusion on those backends. - `FileLock` no longer unlinks an existing lock file at construction time, which broke mutual exclusion for any process already holding the lock. - Process-worker task timeouts use `signal.setitimer()`, so float / sub-second timeouts work. Previously a timeout less than 1 second was silently ignored (`alarm(0)` cancels the timer) and fractional seconds were truncated. - Consumer signal handlers only set flags. Logging and greenlet cleanup now happen in the main loop, avoiding re-entrant I/O from signal context. - A user-supplied task kwarg named `task` is no longer dropped during serialization. Context tasks (`context=True`) inject the task instance into a copy of the kwargs rather than mutating the task's data. - `MemoryStorage.dequeue()` and `add_to_schedule()` acquire the storage lock, like the other mutating methods. - `normalize_time()` treats `delay=0` as "now" rather than ignoring it, so e.g. `expires=0` means "expires immediately" instead of "never expires". - Redis `enqueued_items(limit)` returned `limit + 1` items from the producer end of the queue. It now returns the next-`limit` items to be dequeued, matching the other storage backends. - Redis-dependent tests are skipped when no local redis server is reachable, instead of failing at import time. [View commits](https://github.com/coleifer/huey/compare/3.0.1...3.0.2) </details> <details> <summary>messense/nh3 (nh3)</summary> ### [`v0.3.6`](https://github.com/messense/nh3/releases/tag/v0.3.6) [Compare Source](https://github.com/messense/nh3/compare/v0.3.5...v0.3.6) #### What's Changed - Validate clean\_content\_tags conflict with tags by [@&#8203;gghez](https://github.com/gghez) in [#&#8203;125](https://github.com/messense/nh3/pull/125) - Document tag\_attribute\_values as alternate to attributes by [@&#8203;gghez](https://github.com/gghez) in [#&#8203;126](https://github.com/messense/nh3/pull/126) - Add nh3.escape alias for clean\_text by [@&#8203;gghez](https://github.com/gghez) in [#&#8203;127](https://github.com/messense/nh3/pull/127) - Bump pyo3 from 0.28.3 to 0.29.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;130](https://github.com/messense/nh3/pull/130) - Expose ammonia's url\_relative policy via url\_relative kwarg by [@&#8203;gghez](https://github.com/gghez) in [#&#8203;131](https://github.com/messense/nh3/pull/131) **Full Changelog**: <https://github.com/messense/nh3/compare/v0.3.5...v0.3.6> </details> <details> <summary>open-telemetry/opentelemetry-python (opentelemetry-api)</summary> ### [`v1.44.0`](https://github.com/open-telemetry/opentelemetry-python/blob/HEAD/CHANGELOG.md#Version-1440065b0-2026-07-16) [Compare Source](https://github.com/open-telemetry/opentelemetry-python/compare/v1.43.0...v1.44.0) ##### Added - `opentelemetry-docker-tests`: Refactor Docker tests to properly validate contents of exported telemetry ([#&#8203;5220](https://github.com/open-telemetry/opentelemetry-python/pull/5220)) - `opentelemetry-exporter-otlp-common`: add shared package for common OTLP utilities ([#&#8203;5252](https://github.com/open-telemetry/opentelemetry-python/pull/5252)) - `opentelemetry-sdk`: add `MissingDependencyError` exception for declarative configuration and use it for missing optional dependency errors ([#&#8203;5265](https://github.com/open-telemetry/opentelemetry-python/pull/5265)) - `opentelemetry-sdk`: Add ability to refresh process dependent Resource attributes ([#&#8203;5280](https://github.com/open-telemetry/opentelemetry-python/pull/5280)) - `opentelemetry-sdk`: add `force_flush` method to `LogRecordExporter` ABC ([#&#8203;5294](https://github.com/open-telemetry/opentelemetry-python/pull/5294)) - `opentelemetry-sdk`: Make it possible to limit the size of stored spans in InMemorySpanExporter ([#&#8203;5296](https://github.com/open-telemetry/opentelemetry-python/pull/5296)) - `opentelemetry-sdk`: add log record limits environment variables `OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT` and `OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT` ([#&#8203;5300](https://github.com/open-telemetry/opentelemetry-python/pull/5300)) - `opentelemetry-sdk`: add support for file exporter with declarative config ([#&#8203;5311](https://github.com/open-telemetry/opentelemetry-python/pull/5311)) - `opentelemetry-sdk`: expose `SynchronousMultiLogRecordProcessor` and `ConcurrentMultiLogRecordProcessor` publicly ([#&#8203;5327](https://github.com/open-telemetry/opentelemetry-python/pull/5327)) - `opentelemetry-sdk`: point the declarative configuration package README at the shared [language support status matrix](https://github.com/open-telemetry/opentelemetry-configuration/blob/main/language-support-status.md#python) in the `opentelemetry-configuration` repo, so Python conformance status lives alongside the other languages instead of being duplicated per language SDK. ([#&#8203;5347](https://github.com/open-telemetry/opentelemetry-python/pull/5347)) - `opentelemetry-sdk`: document that Python-implementation extensions (`OTEL_PYTHON_*` variables) are bypassed when `OTEL_CONFIG_FILE` is set. The env-var initialisation path is skipped entirely in favour of the declarative file; honouring these alongside a config file is tracked as a follow-up. ([#&#8203;5353](https://github.com/open-telemetry/opentelemetry-python/pull/5353)) - `opentelemetry-sdk`: wire id\_generator from declarative configuration to TracerProvider ([#&#8203;5363](https://github.com/open-telemetry/opentelemetry-python/pull/5363)) - `opentelemetry-sdk`: Add support for activating instrumentors from a declarative configuration file via the `instrumentation/development.python` section. Instrumentors can declare a `configuration` attribute to have their options validated through the same type-coercion pipeline used for SDK component configuration. ([#&#8203;5372](https://github.com/open-telemetry/opentelemetry-python/pull/5372)) - `opentelemetry-sdk`: add `record_min_max` option to `ExponentialBucketHistogramAggregation`, matching the option already available on `ExplicitBucketHistogramAggregation` and required by the specification ([#&#8203;5377](https://github.com/open-telemetry/opentelemetry-python/pull/5377)) ##### Changed - opentelemetry-sdk: revert BoundedAttributes RLock back to Lock ([#&#8203;5329](https://github.com/open-telemetry/opentelemetry-python/pull/5329)) - docs: update logs example to use `opentelemetry-instrumentation-logging` ([#&#8203;5344](https://github.com/open-telemetry/opentelemetry-python/pull/5344)) - `opentelemetry-sdk`: bump declarative configuration schema to v1.1.0 ([#&#8203;5345](https://github.com/open-telemetry/opentelemetry-python/pull/5345)) - `opentelemetry-configuration`: declarative configuration moves from `opentelemetry.sdk._configuration` into the new public `opentelemetry-configuration` package (`opentelemetry.configuration` namespace), published experimentally. `opentelemetry-sdk[file-configuration]` continues to work as an alias that installs `opentelemetry-configuration` alongside the SDK. ([#&#8203;5356](https://github.com/open-telemetry/opentelemetry-python/pull/5356)) - `opentelemetry-api`: remove env carrier environment snapshot caching, you now have to pass explicitly the mapping where to get the environment variables from as the `EnvironmentGetter.get` first argument. ([#&#8203;5366](https://github.com/open-telemetry/opentelemetry-python/pull/5366)) - `opentelemetry-semantic-conventions`: bump to 1.42.0 ([#&#8203;5410](https://github.com/open-telemetry/opentelemetry-python/pull/5410)) - `opentelemetry-semantic-conventions`: bump to 1.43.0 ([#&#8203;5413](https://github.com/open-telemetry/opentelemetry-python/pull/5413)) ##### Removed - `opentelemetry-api`, `opentelemetry-sdk`: Removed deprecated Events API/SDK. Use `LogRecord` with the `event_name` field set instead. ([#&#8203;5293](https://github.com/open-telemetry/opentelemetry-python/pull/5293)) ##### Fixed - `opentelemetry-sdk`: Optimize `LogRecord` memory in `BatchLogRecordProcessor` by clearing the `Context` object before buffering. This is a potentially breaking change for custom log exporters that access `context` from the exported `ReadableLogRecord`, as the context will now be an empty `Context()` instead of the original. ([#&#8203;4977](https://github.com/open-telemetry/opentelemetry-python/pull/4977)) - `opentelemetry-sdk`: drop non-finite measurements (NaN and Inf) at the instrument level to prevent permanent aggregation poisoning ([#&#8203;5336](https://github.com/open-telemetry/opentelemetry-python/pull/5336)) - `opentelemetry-sdk`: raise `ValueError` when `ExplicitBucketHistogramAggregation` boundaries are not strictly increasing or finite ([#&#8203;5340](https://github.com/open-telemetry/opentelemetry-python/pull/5340)) - `opentelemetry-sdk`: `ProcessResourceDetector` no longer collects or emits `process.command_args` and `process.command_line` by default since the values are not sanitized and may contain sensitive information. Users who depend on these resource attributes must pass `include_command_args=True`. ([#&#8203;5364](https://github.com/open-telemetry/opentelemetry-python/pull/5364)) - `opentelemetry-exporter-otlp-proto-http`: fix the OTLP HTTP metric exporter self-observability metrics over-counting data points when `max_export_batch_size` splits a batch; each split now reports its own data-point count instead of the whole-batch count. ([#&#8203;5370](https://github.com/open-telemetry/opentelemetry-python/pull/5370)) - `opentelemetry-api`: Prevent in-place mutation of `Context` via inherited `dict` methods ([#&#8203;5399](https://github.com/open-telemetry/opentelemetry-python/pull/5399)) ### [`v1.43.0`](https://github.com/open-telemetry/opentelemetry-python/blob/HEAD/CHANGELOG.md#Version-1430064b0-2026-06-24) [Compare Source](https://github.com/open-telemetry/opentelemetry-python/compare/v1.42.1...v1.43.0) ##### Added - `opentelemetry-sdk`: add `add_metric_reader` / `remove_metric_reader` public APIs to register / unregister metric readers at runtime. ([#&#8203;4863](https://github.com/open-telemetry/opentelemetry-python/pull/4863)) - `opentelemetry-exporter-prometheus`: add support for configuring metric scope labels ([#&#8203;5123](https://github.com/open-telemetry/opentelemetry-python/pull/5123)) - `opentelemetry-exporter-otlp-proto-grpc`: Add grpc error details to the log message that's written when the grpc call fails. ([#&#8203;5143](https://github.com/open-telemetry/opentelemetry-python/pull/5143)) - `opentelemetry-exporter-http-transport`: add 'opentelemetry-exporter-http-transport' package for HTTP exporters ([#&#8203;5194](https://github.com/open-telemetry/opentelemetry-python/pull/5194)) - `opentelemetry-sdk`: Add `composite/development` samplers support to declarative file configuration ([#&#8203;5201](https://github.com/open-telemetry/opentelemetry-python/pull/5201)) - `opentelemetry-exporter-otlp-json-file`: Add OTLP JSON File exporter implementation ([#&#8203;5207](https://github.com/open-telemetry/opentelemetry-python/pull/5207)) - `opentelemetry-sdk`: add `_resolve_component` shared utility for declarative config plugin loading, reducing boilerplate in exporter factory functions ([#&#8203;5215](https://github.com/open-telemetry/opentelemetry-python/pull/5215)) - `opentelemetry-sdk`: add pull metric reader support to declarative file configuration, including Prometheus metric reader via the `prometheus_development` config field ([#&#8203;5216](https://github.com/open-telemetry/opentelemetry-python/pull/5216)) - `opentelemetry-proto-json`: update to use opentelemetry-proto v1.10.0 ([#&#8203;5224](https://github.com/open-telemetry/opentelemetry-python/pull/5224)) - `opentelemetry-proto`: bump maximum supported protobuf version to 7.x.x ([#&#8203;5251](https://github.com/open-telemetry/opentelemetry-python/pull/5251)) - `opentelemetry-sdk`: add `ServiceInstanceIdResourceDetector` for populating `service.instance.id` ([#&#8203;5259](https://github.com/open-telemetry/opentelemetry-python/pull/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. ([#&#8203;5269](https://github.com/open-telemetry/opentelemetry-python/pull/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. ([#&#8203;5270](https://github.com/open-telemetry/opentelemetry-python/pull/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. ([#&#8203;5271](https://github.com/open-telemetry/opentelemetry-python/pull/5271)) - `opentelemetry-sdk`: update declarative config to use `ServiceInstanceIdResourceDetector` ([#&#8203;5299](https://github.com/open-telemetry/opentelemetry-python/pull/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. ([#&#8203;5305](https://github.com/open-telemetry/opentelemetry-python/pull/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 ([#&#8203;5315](https://github.com/open-telemetry/opentelemetry-python/pull/5315)) - `opentelemetry-exporter-http-transport`: enable entry-point loading of transport implementations ([#&#8203;5320](https://github.com/open-telemetry/opentelemetry-python/pull/5320)) ##### Changed - `opentelemetry-sdk`: introduce experimental entry points for OpAMP agent integration ([#&#8203;4646](https://github.com/open-telemetry/opentelemetry-python/pull/4646)) - `opentelemetry-api`: conditionally import entrypoints for `opentelemetry_context` only if the `OTEL_PYTHON_CONTEXT` env variable is defined, return `ContextVarsRuntimeContext` otherwise ([#&#8203;5144](https://github.com/open-telemetry/opentelemetry-python/pull/5144)) - `opentelemetry-sdk`: rename "known/unknown" to "built-in/user-defined" terminology in declarative config component loading code ([#&#8203;5214](https://github.com/open-telemetry/opentelemetry-python/pull/5214)) - `opentelemetry-proto`: regenerate protobuf code from opentelemetry-proto v1.10.0 ([#&#8203;5223](https://github.com/open-telemetry/opentelemetry-python/pull/5223)) - `opentelemetry-sdk`: remove unnecessary `copy` in Span creation ([#&#8203;5272](https://github.com/open-telemetry/opentelemetry-python/pull/5272)) - opentelemetry-sdk: remove unnecessary dict in set\_attribute method ([#&#8203;5274](https://github.com/open-telemetry/opentelemetry-python/pull/5274)) - `opentelemetry-sdk`: inline the method `_clean_attribute_value` ([#&#8203;5275](https://github.com/open-telemetry/opentelemetry-python/pull/5275)) - Remove typing aliases deprecated in python 3.9 and replace all usages of `typing.Union` and `typing.Optional` with `|`. ([#&#8203;5277](https://github.com/open-telemetry/opentelemetry-python/pull/5277)) - opentelemetry-sdk: remove generator in the accessor for links/events ([#&#8203;5287](https://github.com/open-telemetry/opentelemetry-python/pull/5287)) - opentelemetry-api: remove unnecessary copy in iterator ([#&#8203;5288](https://github.com/open-telemetry/opentelemetry-python/pull/5288)) - `opentelemetry-api`: update `EnvironmentGetter` to ignore non-normalized environment variable names ([#&#8203;5289](https://github.com/open-telemetry/opentelemetry-python/pull/5289)) - opentelemetry-sdk: update iterator for BoundedList ([#&#8203;5297](https://github.com/open-telemetry/opentelemetry-python/pull/5297)) - opentelemetry-sdk: reduce lock contention in attributes ([#&#8203;5298](https://github.com/open-telemetry/opentelemetry-python/pull/5298)) - opentelemetry-sdk: merge doesn't need a copy, dict already does this ([#&#8203;5326](https://github.com/open-telemetry/opentelemetry-python/pull/5326)) - `opentelemetry-api`: normalize empty environment propagation names to `_` in `EnvironmentSetter` and `EnvironmentGetter` ([#&#8203;5328](https://github.com/open-telemetry/opentelemetry-python/pull/5328)) ##### Fixed - Add missing `.rst` files to Sphinx documentation build for SDK logs, propagators, and exporter submodules. ([#&#8203;5017](https://github.com/open-telemetry/opentelemetry-python/pull/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. ([#&#8203;5241](https://github.com/open-telemetry/opentelemetry-python/pull/5241)) - `opentelemetry-api`: fix SelectableGroups deprecation warning ([#&#8203;5250](https://github.com/open-telemetry/opentelemetry-python/pull/5250)) - `opentelemetry-sdk`: make `SynchronousMeasurementConsumer.consume_measurement` lock free to avoid deadlocks ([#&#8203;5321](https://github.com/open-telemetry/opentelemetry-python/pull/5321)) ### [`v1.42.1`](https://github.com/open-telemetry/opentelemetry-python/blob/HEAD/CHANGELOG.md#Version-1421063b1-2026-05-21) [Compare Source](https://github.com/open-telemetry/opentelemetry-python/compare/v1.42.0...v1.42.1) ##### 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. ([#&#8203;5241](https://github.com/open-telemetry/opentelemetry-python/pull/5241)) ### [`v1.42.0`](https://github.com/open-telemetry/opentelemetry-python/blob/HEAD/CHANGELOG.md#Version-1420063b0-2026-05-19) [Compare Source](https://github.com/open-telemetry/opentelemetry-python/compare/v1.41.1...v1.42.0) ##### 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`. ([#&#8203;4854](https://github.com/open-telemetry/opentelemetry-python/pull/4854)) - logs: add exception support to Logger emit and LogRecord attributes ([#&#8203;4908](https://github.com/open-telemetry/opentelemetry-python/pull/4908)) - `opentelemetry-exporter-otlp-proto-grpc`: make retryable gRPC error codes configurable for gRPC exporters ([#&#8203;4917](https://github.com/open-telemetry/opentelemetry-python/pull/4917)) - `opentelemetry-sdk`: Add `create_logger_provider`/`configure_logger_provider` to declarative file configuration, enabling LoggerProvider instantiation from config files without reading env vars ([#&#8203;4990](https://github.com/open-telemetry/opentelemetry-python/pull/4990)) - `opentelemetry-exporter-otlp-json-common`: add 'opentelemetry-exporter-otlp-json-common' package for OTLP JSON exporters ([#&#8203;4996](https://github.com/open-telemetry/opentelemetry-python/pull/4996)) - `opentelemetry-sdk`: Add `service` resource detector support to declarative file configuration via `detection_development.detectors[].service` ([#&#8203;5003](https://github.com/open-telemetry/opentelemetry-python/pull/5003)) - `opentelemetry-docker-tests`: add docker-tests coverage of `opentelemetry-exporter-otlp-proto-grpc` and `opentelemetry-exporter-otlp-proto-http` metrics export ([#&#8203;5030](https://github.com/open-telemetry/opentelemetry-python/pull/5030)) - Add `registry` keyword argument to `PrometheusMetricReader` to allow passing a custom Prometheus registry ([#&#8203;5055](https://github.com/open-telemetry/opentelemetry-python/pull/5055)) - Add WeaverLiveCheck test util ([#&#8203;5088](https://github.com/open-telemetry/opentelemetry-python/pull/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 ([#&#8203;5093](https://github.com/open-telemetry/opentelemetry-python/pull/5093)) - `opentelemetry-sdk`: add sampler plugin loading to declarative file configuration via the `opentelemetry_sampler` entry point group, matching the spec's PluginComponentProvider mechanism ([#&#8203;5095](https://github.com/open-telemetry/opentelemetry-python/pull/5095)) - `opentelemetry-sdk`: add propagator plugin loading to declarative file configuration via the `opentelemetry_propagator` entry point group, matching the spec's PluginComponentProvider mechanism ([#&#8203;5098](https://github.com/open-telemetry/opentelemetry-python/pull/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 ([#&#8203;5128](https://github.com/open-telemetry/opentelemetry-python/pull/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 ([#&#8203;5129](https://github.com/open-telemetry/opentelemetry-python/pull/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 ([#&#8203;5131](https://github.com/open-telemetry/opentelemetry-python/pull/5131)) - Add ability to selectively enable exporting of SDK internal metrics with the `OTEL_PYTHON_SDK_INTERNAL_METRICS_ENABLED` environment variable. ([#&#8203;5151](https://github.com/open-telemetry/opentelemetry-python/pull/5151)) ##### Changed - `opentelemetry-semantic-conventions`: use `X | Y` union annotation ([#&#8203;5096](https://github.com/open-telemetry/opentelemetry-python/pull/5096)) - `opentelemetry-api`: update `EnvironmentGetter` and `EnvironmentSetter` to use normalized environment variable names ([#&#8203;5119](https://github.com/open-telemetry/opentelemetry-python/pull/5119)) - Apply fixes for `UP` ruff rule ([#&#8203;5133](https://github.com/open-telemetry/opentelemetry-python/pull/5133)) - `opentelemetry-sdk`: only load entrypoints for resource detectors if they are configured via `OTEL_EXPERIMENTAL_RESOURCE_DETECTORS` ([#&#8203;5145](https://github.com/open-telemetry/opentelemetry-python/pull/5145)) - ci: wait for tracecontext server readiness instead of a fixed sleep in `scripts/tracecontext-integration-test.sh` ([#&#8203;5149](https://github.com/open-telemetry/opentelemetry-python/pull/5149)) - Switch to SPDX license headers and add CI enforcement ([#&#8203;5177](https://github.com/open-telemetry/opentelemetry-python/pull/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`. ([#&#8203;5200](https://github.com/open-telemetry/opentelemetry-python/pull/5200)) ##### Removed - `opentelemetry-api`: remove third-party importlib-metadata in favor of standard library since Python >= 3.10 is now required ([#&#8203;3234](https://github.com/open-telemetry/opentelemetry-python/pull/3234)) - Drop Python 3.9 support ([#&#8203;5076](https://github.com/open-telemetry/opentelemetry-python/pull/5076)) ##### Fixed - `opentelemetry-sdk`: Allow declarative OTLP HTTP exporters to map `compression: deflate` instead of rejecting it as unsupported. ([#&#8203;5075](https://github.com/open-telemetry/opentelemetry-python/pull/5075)) - Fix incorrect code example in `create_tracer()` docstring ([#&#8203;5077](https://github.com/open-telemetry/opentelemetry-python/pull/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) ([#&#8203;5083](https://github.com/open-telemetry/opentelemetry-python/pull/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 ([#&#8203;5091](https://github.com/open-telemetry/opentelemetry-python/pull/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 ([#&#8203;5106](https://github.com/open-telemetry/opentelemetry-python/pull/5106)) - `opentelemetry-sdk`: make resource detector ordering deterministic ([#&#8203;5120](https://github.com/open-telemetry/opentelemetry-python/pull/5120)) - Fix incorrect type annotation on `detectors` parameter of `get_aggregated_resources` ([#&#8203;5135](https://github.com/open-telemetry/opentelemetry-python/pull/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. ([#&#8203;5163](https://github.com/open-telemetry/opentelemetry-python/pull/5163)) - `opentelemetry-sdk`: fix multi-processor `force_flush` skipping remaining processors when one returns `None` ([#&#8203;5179](https://github.com/open-telemetry/opentelemetry-python/pull/5179)) - `opentelemetry-test-utils`: fix weaver live check hanging when weaver log output fills the pipe buffer ([#&#8203;5208](https://github.com/open-telemetry/opentelemetry-python/pull/5208)) </details> <details> <summary>pytest-dev/pytest (pytest)</summary> ### [`v9.1.1`](https://github.com/pytest-dev/pytest/releases/tag/9.1.1) [Compare Source](https://github.com/pytest-dev/pytest/compare/9.1.0...9.1.1) ##### pytest 9.1.1 (2026-06-19) ##### Bug fixes - [#&#8203;14220](https://github.com/pytest-dev/pytest/issues/14220): Fixed a logic bug in `pytest.RaisesGroup` which would might cause it to display incorrect "It matches <span class="title-ref">FooError()</span> which was paired with <span class="title-ref">BarError</span>" messages. - [#&#8203;14591](https://github.com/pytest-dev/pytest/issues/14591): Fixed a regression in pytest 9.1.0 which caused overriding a parametrized fixture with an indirect <span class="title-ref">[@&#8203;pytest](https://github.com/pytest).mark.parametrize</span> to fail with "duplicate parametrization of '\<fixture name>'". - [#&#8203;14606](https://github.com/pytest-dev/pytest/issues/14606): Fixed `list-item` typing errors from mypy in `@pytest.mark.parametrize <pytest.mark.parametrize ref>` `argvalues` parameter. - [#&#8203;14608](https://github.com/pytest-dev/pytest/issues/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`](https://github.com/pytest-dev/pytest/releases/tag/9.1.0) [Compare Source](https://github.com/pytest-dev/pytest/compare/9.0.3...9.1.0) ### pytest 9.1.0 (2026-06-13) #### Removals and backward incompatible breaking changes - [#&#8203;14533](https://github.com/pytest-dev/pytest/issues/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 <span class="title-ref">--doctest-modules</span>, 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) - [#&#8203;10819](https://github.com/pytest-dev/pytest/issues/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`. - [#&#8203;12882](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;13409](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;13946](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14004](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14335](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14434](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14513](https://github.com/pytest-dev/pytest/issues/14513): The private `FixtureDef.has_location` attribute is now deprecated and will be removed in pytest 10. See `fixturedef-has-location-deprecated` for details. - [#&#8203;1764](https://github.com/pytest-dev/pytest/issues/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 - [#&#8203;12376](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14023](https://github.com/pytest-dev/pytest/issues/14023): Added <span class="title-ref">--report-chars</span> long CLI option. - [#&#8203;14371](https://github.com/pytest-dev/pytest/issues/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`. - [#&#8203;6757](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;8395](https://github.com/pytest-dev/pytest/issues/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 - [#&#8203;11225](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;11295](https://github.com/pytest-dev/pytest/issues/11295): Improved output of `--fixtures-per-test` by excluding internal-implementation fixtures generated by `@pytest.mark.parametrize` and similar. - [#&#8203;13241](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;13862](https://github.com/pytest-dev/pytest/issues/13862): Improved the readability of "DID NOT RAISE" error messages by using the exception type's name instead of its <span class="title-ref">repr</span>. - [#&#8203;14026](https://github.com/pytest-dev/pytest/issues/14026): Added test coverage for compiled regex patterns in `pytest.raises` match parameter. - [#&#8203;14137](https://github.com/pytest-dev/pytest/issues/14137): <span class="title-ref">pytest.ScopeName</span> is now public to allow using it in function signatures. - [#&#8203;14342](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14373](https://github.com/pytest-dev/pytest/issues/14373): Added type annotations for `pytest.approx`. - [#&#8203;14430](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14441](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14461](https://github.com/pytest-dev/pytest/issues/14461): Improved assertion failure explanations for equality comparisons between mapping objects that are not `dict` instances. - [#&#8203;14513](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14524](https://github.com/pytest-dev/pytest/issues/14524): Add official Python 3.15 support. - [#&#8203;1764](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;8265](https://github.com/pytest-dev/pytest/issues/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 - [#&#8203;13192](https://github.com/pytest-dev/pytest/issues/13192): Fixed <span class="title-ref">|</span> (pipe) not being treated as a regex meta-character that needs escaping in `pytest.raises(match=...) <pytest.raises>`. - [#&#8203;13484](https://github.com/pytest-dev/pytest/issues/13484): Fixed `-W` option values being duplicated in `Config.known_args_namespace`. - [#&#8203;13626](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;13784](https://github.com/pytest-dev/pytest/issues/13784): Fixed `capteesys` producing doubled output when used with `--capture=no` (`-s`). - [#&#8203;13817](https://github.com/pytest-dev/pytest/issues/13817): Fixed a secondary <span class="title-ref">AttributeError</span> masking the original error when an option argument fails to initialize. - [#&#8203;13884](https://github.com/pytest-dev/pytest/issues/13884): Fixed rare internal IndexError caused by <span class="title-ref">builtins.compile</span> being overridden in client code. - [#&#8203;13885](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;13917](https://github.com/pytest-dev/pytest/issues/13917): `unittest.SkipTest` is no longer considered an interactive exception, i.e. `pytest_exception_interact` is no longer called for it. - [#&#8203;13963](https://github.com/pytest-dev/pytest/issues/13963): Fixed subtests running with `pytest-xdist` when their contexts contain objects that are not JSON-serializable. Fixes [pytest-dev/pytest-xdist#1273](https://github.com/pytest-dev/pytest-xdist/issues/1273). - [#&#8203;14004](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14050](https://github.com/pytest-dev/pytest/issues/14050): Display dictionary differences in assertion failures using the original key insertion order instead of sorted order. - [#&#8203;14080](https://github.com/pytest-dev/pytest/issues/14080): fix missing type annotations on `Pytester.makepyfile` and `Pytester.maketxtfile` methods. - [#&#8203;14114](https://github.com/pytest-dev/pytest/issues/14114): An exception from `pytest_fixture_post_finalizer` no longer prevents fixtures from being torn down, causing additional errors in the following tests. - [#&#8203;14161](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14214](https://github.com/pytest-dev/pytest/issues/14214): Fixed `-v` hint in `pytest.raises` match diff not working because assertion verbosity was not propagated. - [#&#8203;14234](https://github.com/pytest-dev/pytest/issues/14234): Allow `pytest.HIDDEN_PARAM <hidden-param>` in `@pytest.mark.parametrize(ids=...) <pytest.mark.parametrize ref>` typing. - [#&#8203;14248](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14263](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14377](https://github.com/pytest-dev/pytest/issues/14377): Fixed crash in <span class="title-ref">Config.get\_terminal\_writer</span> when an assertion fails with the `terminalreporter` plugin disabled. - [#&#8203;14381](https://github.com/pytest-dev/pytest/issues/14381): Fixed `-V` (short form of `--version`) to properly display the current version. - [#&#8203;14389](https://github.com/pytest-dev/pytest/issues/14389): Improved `pytest.raises(..., match=...) <pytest.raises>` failures to suppress the mismatched exception as a cause of the resulting `AssertionError`. - [#&#8203;14392](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14442](https://github.com/pytest-dev/pytest/issues/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>`. - [#&#8203;14456](https://github.com/pytest-dev/pytest/issues/14456): Fixed `pytest.approx` not recognizing types with `__array_interface__` as numpy-like arrays. - [#&#8203;14474](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;14483](https://github.com/pytest-dev/pytest/issues/14483): Fixed JUnit XML report incorrectly escaping high Unicode codepoints (supplementary plane characters like emoji) in test failure messages. -- by `EternalRights` - [#&#8203;14492](https://github.com/pytest-dev/pytest/issues/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`. - [#&#8203;3697](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;3850](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;5848](https://github.com/pytest-dev/pytest/issues/5848): `pytest_fixture_post_finalizer` is no longer called extra times for the same fixture teardown in some cases. - [#&#8203;719](https://github.com/pytest-dev/pytest/issues/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 - [#&#8203;11022](https://github.com/pytest-dev/pytest/issues/11022): Document safer alternatives and scope guidance for monkeypatching standard library functions. - [#&#8203;11307](https://github.com/pytest-dev/pytest/issues/11307): Document that `@pytest.hookimpl(specname=...)` only works for function names starting with `pytest_`. - [#&#8203;13038](https://github.com/pytest-dev/pytest/issues/13038): Document that doctests do not support parametrized fixtures, including parametrized autouse fixtures. - [#&#8203;13155](https://github.com/pytest-dev/pytest/issues/13155): Clarified how the `request` fixture provides indirect parametrization values via `request.param`. - [#&#8203;13304](https://github.com/pytest-dev/pytest/issues/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. - [#&#8203;13902](https://github.com/pytest-dev/pytest/issues/13902): Clarified how subtest progress markers are shown in the documentation. - [#&#8203;14012](https://github.com/pytest-dev/pytest/issues/14012): The `ini options ref` section of the API Reference now specified the type and default value of every configuration option. - [#&#8203;14148](https://github.com/pytest-dev/pytest/issues/14148): Documented a safe `pytestconfig.cache` access pattern when the `cacheprovider` plugin is disabled. - [#&#8203;14303](https://github.com/pytest-dev/pytest/issues/14303): The documentation is now built with Sphinx >= 9. - [#&#8203;14465](https://github.com/pytest-dev/pytest/issues/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 - [#&#8203;14582](https://github.com/pytest-dev/pytest/issues/14582): Improved the recursion traceback test to exercise all requested traceback styles. </details> <details> <summary>redis/redis-py (redis)</summary> ### [`v7.4.1`](https://github.com/redis/redis-py/releases/tag/v7.4.1): 7.4.1 [Compare Source](https://github.com/redis/redis-py/compare/v7.4.0...v7.4.1) ### Changes #### 🐛 Bug Fixes - Preserve explicit None for client metadata config ([#&#8203;4081](https://github.com/redis/redis-py/issues/4081)) #### 🧰 Maintenance - Updating PyJWT dependency. ([#&#8203;4100](https://github.com/redis/redis-py/issues/4100)) - Addressing dependency vulnerabilities and flaky test fixes ([source diff](https://github.com/redis/redis-py/compare/582cc3510f431e3c339d1cd8e78c978fff8f74da%5E...582cc3510f431e3c339d1cd8e78c978fff8f74da)) We'd like to thank all the contributors who worked on this release! [@&#8203;elena-kolevska](https://github.com/elena-kolevska) [@&#8203;vladvildanov](https://github.com/vladvildanov) [@&#8203;petyaslavova](https://github.com/petyaslavova) </details> <details> <summary>laurents/slowapi (slowapi)</summary> ### [`v0.1.10`](https://github.com/laurents/slowapi/blob/HEAD/CHANGELOG.md#0110---2026-06-13) [Compare Source](https://github.com/laurents/slowapi/compare/v0.1.9...v0.1.10) ##### Changed - Added: allow usage of the request object in the except\_when function (thanks [@&#8203;colin99d](https://github.com/colin99d)) - Added more test exemption logic (thanks [@&#8203;colin99](https://github.com/colin99)) - Fix logger warning for Python 3.11 deprecation (thanks [@&#8203;kevin868](https://github.com/kevin868)) </details> <details> <summary>smithyhq/sqladmin (sqladmin)</summary> ### [`v0.30.0`](https://github.com/smithyhq/sqladmin/blob/HEAD/CHANGELOG.md#Version-0300--2026-07-28) [Compare Source](https://github.com/smithyhq/sqladmin/compare/0.29.0...0.30.0) ##### Added - feat: add `check_can_create` permission hook by [@&#8203;maxim-f1](https://github.com/maxim-f1) in [#&#8203;1102](https://github.com/smithyhq/sqladmin/pull/1102) - feat: add internationalization and localization support by [@&#8203;vahidzhe](https://github.com/vahidzhe) in [#&#8203;1095](https://github.com/smithyhq/sqladmin/pull/1095) ##### Changed - chore: apply ruff pyupgrade (UP) fixes across the codebase by [@&#8203;vahidzhe](https://github.com/vahidzhe) in [#&#8203;1093](https://github.com/smithyhq/sqladmin/pull/1093) ##### Fixed - fix: unwrap Enum values in `get_object_identifier` by [@&#8203;pctablet505](https://github.com/pctablet505) in [#&#8203;1092](https://github.com/smithyhq/sqladmin/pull/1092) - fix: display flash toast when the `bootstrap` global is undefined by [@&#8203;ebencollins](https://github.com/ebencollins) in [#&#8203;1100](https://github.com/smithyhq/sqladmin/pull/1100) - fix: support keyword arguments when rendering `TemplateResponse` by [@&#8203;haykeminyan](https://github.com/haykeminyan) in [#&#8203;1094](https://github.com/smithyhq/sqladmin/pull/1094) ##### New Contributors - [@&#8203;ebencollins](https://github.com/ebencollins) made their first contribution in [#&#8203;1100](https://github.com/smithyhq/sqladmin/pull/1100) - [@&#8203;haykeminyan](https://github.com/haykeminyan) made their first contribution in [#&#8203;1094](https://github.com/smithyhq/sqladmin/pull/1094) - [@&#8203;pctablet505](https://github.com/pctablet505) made their first contribution in [#&#8203;1092](https://github.com/smithyhq/sqladmin/pull/1092) **Full Changelog**: [0.29.0...0.30.0](https://github.com/smithyhq/sqladmin/compare/0.29.0...0.30.0) ### [`v0.29.0`](https://github.com/smithyhq/sqladmin/blob/HEAD/CHANGELOG.md#Version-0300--2026-07-28) [Compare Source](https://github.com/smithyhq/sqladmin/compare/0.28.0...0.29.0) ##### Added - feat: add `check_can_create` permission hook by [@&#8203;maxim-f1](https://github.com/maxim-f1) in [#&#8203;1102](https://github.com/smithyhq/sqladmin/pull/1102) - feat: add internationalization and localization support by [@&#8203;vahidzhe](https://github.com/vahidzhe) in [#&#8203;1095](https://github.com/smithyhq/sqladmin/pull/1095) ##### Changed - chore: apply ruff pyupgrade (UP) fixes across the codebase by [@&#8203;vahidzhe](https://github.com/vahidzhe) in [#&#8203;1093](https://github.com/smithyhq/sqladmin/pull/1093) ##### Fixed - fix: unwrap Enum values in `get_object_identifier` by [@&#8203;pctablet505](https://github.com/pctablet505) in [#&#8203;1092](https://github.com/smithyhq/sqladmin/pull/1092) - fix: display flash toast when the `bootstrap` global is undefined by [@&#8203;ebencollins](https://github.com/ebencollins) in [#&#8203;1100](https://github.com/smithyhq/sqladmin/pull/1100) - fix: support keyword arguments when rendering `TemplateResponse` by [@&#8203;haykeminyan](https://github.com/haykeminyan) in [#&#8203;1094](https://github.com/smithyhq/sqladmin/pull/1094) ##### New Contributors - [@&#8203;ebencollins](https://github.com/ebencollins) made their first contribution in [#&#8203;1100](https://github.com/smithyhq/sqladmin/pull/1100) - [@&#8203;haykeminyan](https://github.com/haykeminyan) made their first contribution in [#&#8203;1094](https://github.com/smithyhq/sqladmin/pull/1094) - [@&#8203;pctablet505](https://github.com/pctablet505) made their first contribution in [#&#8203;1092](https://github.com/smithyhq/sqladmin/pull/1092) **Full Changelog**: [0.29.0...0.30.0](https://github.com/smithyhq/sqladmin/compare/0.29.0...0.30.0) ### [`v0.28.0`](https://github.com/smithyhq/sqladmin/blob/HEAD/CHANGELOG.md#Version-0290--2026-07-13) [Compare Source](https://github.com/smithyhq/sqladmin/compare/0.27.2...0.28.0) ##### DEPRECATIONS - Using an empty string filter value for "All" is deprecated; use "\_\_all" instead. ##### Added - feat: add CSV import with streaming progress and row-level validation by @&#8203;alserious/[@&#8203;mmzeynalli](https://github.com/mmzeynalli) in [#&#8203;877](https://github.com/smithyhq/sqladmin/pull/877) - feat: add file download support by @&#8203;korolenkowork/[@&#8203;mmzeynalli](https://github.com/mmzeynalli) in [#&#8203;702](https://github.com/smithyhq/sqladmin/pull/702) - feat: add auto-resizing textarea widget with character counter by [@&#8203;maxim-f1](https://github.com/maxim-f1) in [#&#8203;1083](https://github.com/smithyhq/sqladmin/pull/1083) - feat: add `column_type_formatters_detail` by @&#8203;maxim-f1/[@&#8203;mmzeynalli](https://github.com/mmzeynalli) in [#&#8203;999](https://github.com/smithyhq/sqladmin/pull/999) - feat: add `default_value` to filters by @&#8203;wnowicki/[@&#8203;mmzeynalli](https://github.com/mmzeynalli) in [#&#8203;1004](https://github.com/smithyhq/sqladmin/pull/1004) ##### Changed - feat: allow `AuthenticationBackend.login` to return `Response` by @&#8203;sheldygg/[@&#8203;mmzeynalli](https://github.com/mmzeynalli) in [#&#8203;935](https://github.com/smithyhq/sqladmin/pull/935) - build(deps-dev): bump phonenumbers from 9.0.28 to 9.0.34 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1088](https://github.com/smithyhq/sqladmin/pull/1088) - build(deps-dev): bump pytest from 9.0.3 to 9.1.1 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1090](https://github.com/smithyhq/sqladmin/pull/1090) - build(deps-dev): bump psycopg2-binary from 2.9.11 to 2.9.12 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1089](https://github.com/smithyhq/sqladmin/pull/1089) - build(deps-dev): bump pillow from 12.2.0 to 12.3.0 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1087](https://github.com/smithyhq/sqladmin/pull/1087) - build(deps-dev): bump zensical from 0.0.42 to 0.0.50 by [@&#8203;dependabot](https://github.com/dependabot)\[bot] in [#&#8203;1086](https://github.com/smithyhq/sqladmin/pull/1086) ##### Fixed - docs: fix typos in docstrings and documentation by [@&#8203;maxtaran2010](https://github.com/maxtaran2010) in [#&#8203;1080](https://github.com/smithyhq/sqladmin/pull/1080) - fix: resolve boolean input widget crash on WTForms 3.2 by [@&#8203;Vansh-Sharma27](https://github.com/Vansh-Sharma27) in [#&#8203;1084](https://github.com/smithyhq/sqladmin/pull/1084) - fix: avoid unnecessary `selectinload` for AJAX relations on edit page by @&#8203;arturbent0/[@&#8203;mmzeynalli](https://github.com/mmzeynalli) in [#&#8203;1059](https://github.com/smithyhq/sqladmin/pull/1059) - fix: persist AJAX selected values after validation errors by @&#8203;maxim-f1/[@&#8203;mmzeynalli](https://github.com/mmzeynalli) in [#&#8203;1039](https://github.com/smithyhq/sqladmin/pull/1039) - fix: skip link formatting for fields that cannot be rendered as links by @&#8203;twistfire92/[@&#8203;mmzeynalli](https://github.com/mmzeynalli) in [#&#8203;948](https://github.com/smithyhq/sqladmin/pull/948) ##### New Contributors - [@&#8203;maxtaran2010](https://github.com/maxtaran2010) made their first contribution in [#&#8203;1080](https://github.com/smithyhq/sqladmin/pull/1080) - [@&#8203;arturbent0](https://github.com/arturbent0) made their first contribution in [#&#8203;1059](https://github.com/smithyhq/sqladmin/pull/1059) - [@&#8203;twistfire92](https://github.com/twistfire92) made their first contribution in [#&#8203;948](https://github.com/smithyhq/sqladmin/pull/948) **Full Changelog**: [0.28.0...0.29.0](https://github.com/smithyhq/sqladmin/compare/0.28.0...0.29.0) ### [`v0.27.2`](https://github.com/smithyhq/sqladmin/blob/HEAD/CHANGELOG.md#Version-0280--2026-07-04) [Compare Source](https://github.com/smithyhq/sqladmin/compare/0.27.1...0.27.2) ##### Added - feat: add `rich_text_fields` for pluggable rich text editors by [@&#8203;vahidzhe](https://github.com/vahidzhe) in [#&#8203;1074](https://github.com/smithyhq/sqladmin/pull/1074) - feat: pass `request` to column formatters by [@&#8203;Dexter2099](https://github.com/Dexter2099) in [#&#8203;1077](https://github.com/smithyhq/sqladmin/pull/1077) ##### Changed - build(deps): update Font Awesome to v7.2.0 by [@&#8203;CHC383](https://github.com/CHC383) in [#&#8203;1073](https://github.com/smithyhq/sqladmin/pull/1073) - build(deps): update to jQuery v4.0.0 and Select2 v4.1.0 by [@&#8203;CHC383](https://github.com/CHC383) in [#&#8203;1070](https://github.com/smithyhq/sqladmin/pull/1070) - build(deps): remove `tabler-icons.min.css.map` by [@&#8203;CHC383](https://github.com/CHC383) in [#&#8203;1071](https://github.com/smithyhq/sqladmin/pull/1071) ##### Fixed - fix: preserve base admin identity for polymorphic rows by [@&#8203;Dexter2099](https://github.com/Dexter2099) in [#&#8203;1076](https://github.com/smithyhq/sqladmin/pull/1076) - fix: allow clearing nullable AJAX relation fields by [@&#8203;Dexter2099](https://github.com/Dexter2099) in [#&#8203;1075](https://github.com/smithyhq/sqladmin/pull/1075) - fix: follow symlinks for static files by [@&#8203;Dexter2099](https://github.com/Dexter2099) in [#&#8203;1072](https://github.com/smithyhq/sqladmin/pull/1072) ##### Upgrade notes - **URL helpers:** `_build_url_for` and `_url_for_delete` use `self.identity` when the target object is an instance of the view's model (including polymorphic subclasses), and the object's class identity otherwise. Overrides of either helper apply to built-in templates. - **Column formatters:** Existing two-argument formatters continue to work; pass a third `request` argument to opt in. - **Front-end deps:** jQuery 4 and Select2 4.1 may affect custom admin JavaScript that relies on older APIs. ##### New Contributors - [@&#8203;Dexter2099](https://github.com/Dexter2099) made their first contribution in [#&#8203;1077](https://github.com/smithyhq/sqladmin/pull/1077) **Full Changelog**: [0.27.2...0.28.0](https://github.com/smithyhq/sqladmin/compare/0.27.2...0.28.0) ### [`v0.27.1`](https://github.com/smithyhq/sqladmin/blob/HEAD/CHANGELOG.md#Version-0272--2026-06-08) [Compare Source](https://github.com/smithyhq/sqladmin/compare/0.27.0...0.27.1) ##### Changed - build(deps): update to tabler v1.4.0, tabler-icons css v3.44.0 and migrate to Bootstrap v5 by [@&#8203;CHC383](https://github.com/CHC383) in [#&#8203;1058](https://github.com/smithyhq/sqladmin/pull/1058) ##### Fixed - fix: render column defaults on the create form by [@&#8203;dhcsousa](https://github.com/dhcsousa) in [#&#8203;1061](https://github.com/smithyhq/sqladmin/pull/1061) - fix(base-view): sidebar link falls back to /admin when [@&#8203;expose](https://github.com/expose) method is named index by [@&#8203;Vansh-Sharma27](https://github.com/Vansh-Sharma27) in [#&#8203;1062](https://github.com/smithyhq/sqladmin/pull/1062) - Preserve list page after editing a record ([#&#8203;1055](https://github.com/smithyhq/sqladmin/issues/1055)) by [@&#8203;Vansh-Sharma27](https://github.com/Vansh-Sharma27) in [#&#8203;1063](https://github.com/smithyhq/sqladmin/pull/1063) ##### New Contributors - [@&#8203;Vansh-Sharma27](https://github.com/Vansh-Sharma27) made their first contribution in [#&#8203;1062](https://github.com/smithyhq/sqladmin/pull/1062) **Full Changelog**: [0.27.1...0.27.2](https://github.com/smithyhq/sqladmin/compare/0.27.1...0.27.2) ### [`v0.27.0`](https://github.com/smithyhq/sqladmin/blob/HEAD/CHANGELOG.md#Version-0271--2026-06-05) [Compare Source](https://github.com/smithyhq/sqladmin/compare/0.26.0...0.27.0) ##### Security - Fix advisory `GHSA-ccg5-9c8w-xh6v`: restrict `ModelView.sort_query()` to the configured `column_sortable_list` allow-list (`self._sort_fields`) and reject invalid `sortBy` values with HTTP 400, preventing attacker-controlled ordering across arbitrary model and related-model columns and avoiding uncaught `AttributeError` (HTTP 500) by [@&#8203;aminalaee](https://github.com/aminalaee). **Full Changelog**: [0.27.0...0.27.1](https://github.com/smithyhq/sqladmin/compare/0.27.0...0.27.1) ### [`v0.26.0`](https://github.com/smithyhq/sqladmin/blob/HEAD/CHANGELOG.md#Version-0270--2026-05-29) [Compare Source](https://github.com/smithyhq/sqladmin/compare/0.25.1...0.26.0) ##### Added - feat: make admin logo width and height configurable (closes [#&#8203;1045](https://github.com/smithyhq/sqladmin/issues/1045)) by [@&#8203;SAY-5](https://github.com/SAY-5) in [#&#8203;1052](https://github.com/smithyhq/sqladmin/pull/1052) - Feature: `after_model_change` response by [@&#8203;dhcsousa](https://github.com/dhcsousa) in [#&#8203;1030](https://github.com/smithyhq/sqladmin/pull/1030) - Create form\_details\_query by [@&#8203;MaximDementyev](https://github.com/MaximDementyev) in [#&#8203;1038](https://github.com/smithyhq/sqladmin/pull/1038) ##### Fixed - fix(list): fix the list view to limit the page width to viewport size by [@&#8203;CHC383](https://github.com/CHC383) in [#&#8203;1056](https://github.com/smithyhq/sqladmin/pull/1056) - fix: forward kwargs to SessionMiddleware in AuthenticationBackend by [@&#8203;vahidzhe](https://github.com/vahidzhe) in [#&#8203;1036](https://github.com/smithyhq/sqladmin/pull/1036) - Fixed overriding form\_args in forms.py and widgets.py by [@&#8203;mmzeynalli](https://github.com/mmzeynalli) in [#&#8203;1044](https://github.com/smithyhq/sqladmin/pull/1044) ##### Docs - Docs: add contributing page to documentation site by [@&#8203;vahidzhe](https://github.com/vahidzhe) in [#&#8203;1034](https://github.com/smithyhq/sqladmin/pull/1034) ##### New Contributors - [@&#8203;CHC383](https://github.com/CHC383) made their first contribution in [#&#8203;1056](https://github.com/smithyhq/sqladmin/pull/1056) - [@&#8203;SAY-5](https://github.com/SAY-5) made their first contribution in [#&#8203;1052](https://github.com/smithyhq/sqladmin/pull/1052) - [@&#8203;dhcsousa](https://github.com/dhcsousa) made their first contribution in [#&#8203;1030](https://github.com/smithyhq/sqladmin/pull/1030) **Full Changelog**: [0.26.0...0.27.0](https://github.com/smithyhq/sqladmin/compare/0.26.0...0.27.0) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - 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](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNjguMiIsInVwZGF0ZWRJblZlciI6IjQzLjI2OC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
chore(deps): update all dependencies
Some checks failed
renovate/artifacts Artifact file update failure
d620eff6bd
Author
Collaborator

⚠️ Artifact update problem

Renovate failed to update an artifact 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: install-tool python 3.14.6

### ⚠️ Artifact update problem Renovate failed to update an artifact 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: install-tool python 3.14.6 ```
renovate-forgejo force-pushed renovate/all from d620eff6bd
Some checks failed
renovate/artifacts Artifact file update failure
to a482b145bd
Some checks failed
renovate/artifacts Artifact file update failure
2026-07-31 12:07:56 +00:00
Compare
finkregh deleted branch renovate/all 2026-07-31 16:50:15 +00:00
Commenting is not possible because the repository is archived.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
finkregh/verleihnix!27
No description provided.