fix(deps): update all major updates (major) - #386
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
renovate
Bot
force-pushed
the
renovate/major-all-major-updates
branch
from
May 5, 2026 10:51
6d9d945 to
cb67ffd
Compare
renovate
Bot
force-pushed
the
renovate/major-all-major-updates
branch
from
May 29, 2026 09:48
cb67ffd to
d01e404
Compare
renovate
Bot
force-pushed
the
renovate/major-all-major-updates
branch
2 times, most recently
from
June 7, 2026 06:12
951e142 to
aa0ecd2
Compare
renovate
Bot
force-pushed
the
renovate/major-all-major-updates
branch
from
June 18, 2026 20:58
aa0ecd2 to
882d335
Compare
renovate
Bot
force-pushed
the
renovate/major-all-major-updates
branch
4 times, most recently
from
July 17, 2026 01:52
ab877b8 to
e6af1a4
Compare
renovate
Bot
force-pushed
the
renovate/major-all-major-updates
branch
3 times, most recently
from
July 26, 2026 17:50
27a2ad6 to
85b0567
Compare
renovate
Bot
force-pushed
the
renovate/major-all-major-updates
branch
from
July 31, 2026 06:57
85b0567 to
136b34c
Compare
renovate
Bot
force-pushed
the
renovate/major-all-major-updates
branch
4 times, most recently
from
August 28, 2026 00:10
028eae8 to
17ffb98
Compare
renovate
Bot
force-pushed
the
renovate/major-all-major-updates
branch
from
September 3, 2026 20:41
17ffb98 to
ff650f4
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v6→v7v6→v7v6→v7^5.0.0→^6.0.0v6→v7^14.0.2→^15.0.0^12.0.3→^13.0.0^9.0.0→^10.0.0==25.3.0→==26.2.0==8.0.1→==9.0.12023.11.20260413.0→2027.0.20260903.0==25.5.0→==26.1.0Release Notes
actions/checkout (actions/checkout)
v7.0.1Compare Source
v7.0.0Compare Source
actions/setup-node (actions/setup-node)
v7.0.0Compare Source
What's Changed
Enhancements:
Bug fixes:
mirrorTokeningetManifestif it's provided by @deiga in #1548Documentation updates:
Dependency update:
New Contributors
Full Changelog: actions/setup-node@v6...v7.0.0
actions/setup-python (actions/setup-python)
v7.0.0Compare Source
chalk/chalk (chalk)
v6.0.0Compare Source
codecov/codecov-action (codecov/codecov-action)
v7.0.0Compare Source
codecovsecurityaccount. We have deleted the account and are usingcodecovsecopswith the original gpg keyWhat's Changed
Full Changelog: codecov/codecov-action@v6.0.1...v7.0.0
tj/commander.js (commander)
v15.0.0Compare Source
Commander 15 is ESM only. This is expected to be seamless for ESM consumers, but some CommonJS consumers may hit issues with tooling requiring configuration for ESM-only dependencies. See Migration Tips below.
The release of Commander 15 moves Commander 14 into maintenance. Commander 14 will get security updates for
12 months (to May 2027). For more info see Release Policy.
Added
Fixed
--no-*option sets default option value totrue, default not implicitly set when define both positive and negative option in either order ([#2405])Changed
require(esm)).node:testtest runner ([#2463])Deleted
commander/esm.mjs([#2464])Migration Tips
Commander 15 is ESM only, but this does not mean you need to migrate to ESM to use it. Importing ESM from CommonJS is
supported by Node.js, and Bun, and Deno. Hopefully it Just Works for you! However, you may be using a different runtime or
some other part of your setup that may not yet natively support importing ESM from CommonJS, such as your testing framework
or bundler.
If you have problems using Commander 15 in your environment, one option is stay on Commander 14 for now. Commander 14 will
get security updates until May 2027 and things will hopefully improve for your setup in the meantime.
dotenvx/dotenv-expand (dotenv-expand)
v13.0.0Compare Source
Changed
sindresorhus/execa (execa)
v10.0.1Compare Source
preferLocalargument escaping edge-case on Windows (#1259)e771733v10.0.0Compare Source
Breaking
Require Node.js 22. (#1243)
04b4454The subprocess is now a normal promise, instead of a
ChildProcessinstance augmented with promise methods. All the methods and properties documented by Execa are unchanged. Node.js-specificChildProcessAPIs (such as.on(),.send(),.ref()and.unref()) must now be accessed through the newsubprocess.nodeChildProcessproperty. (#1255)ade74bfconst subprocess = execa('node', ['file.js']); - subprocess.on('spawn', onSpawn); + subprocess.nodeChildProcess.on('spawn', onSpawn);execaCommand()andexecaCommandSync(). Use the template string syntax instead, which splits on spaces. If the command is a dynamic string, split it withparseCommandString(). (#1244)3ced394stdio: [..., 'ipc']syntax. Use theipc: trueoption instead. (#1245)dcf611cinputorinputFileoption is combined with an inheritedstdin(for examplestdio: 'inherit'), the explicit input is now used, instead of being ignored. To combine multiple inputs, pass an array likestdin: ['inherit', {string: 'input'}]. (#1232)3ed0544Improvements
killDescendantsoption. This is useful when the subprocess spawns its own processes, such as when using theshelloption. (#1256)84fa0ecsubprocess.readableStream(),subprocess.writableStream()orsubprocess.transformStream(). (#1254)29d9cfcsubprocess.pipe()now exposes the destination subprocess' methods, so the piped output can be consumed directly: iterate over its output lines, convert it to a stream, or exchange IPC messages. (#1252)c31c94cstdiovalue as a{value, input: true}object. Direction-ambiguous values ('pipe','inherit', files and transforms) default to output on additional file descriptors. (#1246, #1249)487a3a49fbf5bachunkargument is now typed based on the transform's mode, instead of always beingunknown:stringfor line transforms,Uint8Arrayfor binary transforms, andunknownin object mode. (#1247)0a7b4f8Fixes
verbose,maxBuffer, etc.) when theipcoption istrue:fd3andipcno longer target the same file descriptor. (#1241)b886883benoitc/gunicorn (gunicorn)
v26.2.0: gunicorn 26.2.0Compare Source
Cleartext HTTP/2 lands, and an HTTP/2 security fix.
Cleartext HTTP/2 (h2c)
http2_cleartextacceptsprior-knowledge,upgrade,bothoroff(thedefault). Prior knowledge serves a connection that opens with the HTTP/2
preface;
upgradehonours an HTTP/1.1Upgrade: h2crequest. Both work on thegthread, gevent and asgi workers.
This is for deployments where TLS is terminated by a proxy that speaks HTTP/2
upstream, so the hop into gunicorn no longer drops to HTTP/1.1. Only peers in
forwarded_allow_ipsare considered; everyone else is served HTTP/1.x exactlyas if the setting were off. Each mechanism is enabled separately, so turning one
on does not turn the other on.
Do not expose a cleartext HTTP/2 port to the internet.
Security
HTTP2Requestbuilt its headers straight from the stream, so nothing the HTTP/1path enforces applied over HTTP/2: the underscore and
header_mappolicy,duplicate
HostandContent-Type, control characters in values, and theforwarded_allow_ipstrust gate. An untrusted client could setSCRIPT_NAMEand forge
HTTP_*entries in the WSGI environ, and decidewsgi.url_schemethrough
:scheme. Both request classes now share one policy mixin, and thescheme comes from the transport.
If you serve HTTP/2, this is the reason to upgrade.
Other HTTP/2 fixes
WSGI responses were buffered whole before anything was sent; they stream now.
HEAD, 204 and 304 no longer carry a body. Events read while blocked on a
flow-control window were discarded, losing requests and body data outright.
sendfile()is refused on HTTP/2 responses rather than bypassing framing.Request bodies dropped on Upgrade requests
On the ASGI worker with the fast parser, any request carrying an
Upgradeheader reached the application with an empty body, whatever the header's value
and with HTTP/2 switched off entirely. Fixed in
gunicorn_h1c0.6.9, which thefastextra now requires.Full changelog: https://gunicorn.org/news/
v26.1.0: gunicorn 26.1.0Compare Source
New Features
reload_extra_files: entries containing*,?or[are treated as patterns, so
ui/*/config.jsonwatches every view's configwithout listing them one by one. Patterns are re-expanded on every reload
check rather than once at startup, so a file created later starts being
watched without restarting gunicorn, and
**recurses. A pattern matchingnothing warns instead of failing, since with live expansion it may match later
(#1643,
#3662).
Security
checked against the advisory database.
tornado,h2,setuptoolsandpymdown-extensionspermitted vulnerable versions and now require the firstclean release;
pytestandhttpxwere unpinned and now carry floors. Thetornadoexample pinnedtornado<6, which was both the source of severaladvisories and older than the
>=6.5.0the tornado worker needs, so theexample could not run as pinned.
Bug Fixes
SIGHUP did not reload the logger configuration:
Arbiter.reload()re-read the configuration file but kept using the logger built at startup,
calling only
reopen_files()on its existing handlers. Changes tologconfig,logconfig_dict,logconfig_jsonandloglevelwere ignoreduntil a full restart, which in containers meant replacing the pod. The
existing logger now re-runs its setup on reload, so new handlers, formats
and levels take effect while the process identity and its listeners are
preserved, and re-running the setup no longer stacks duplicate syslog
handlers. An invalid log configuration on reload is not fatal either: the
error is reported on stderr, the previous working configuration is restored
and the master keeps running with it
(#3353).
Truncated chunked bodies accepted: RFC 9112 section 7.1.2 ends a chunked
body with
0 CRLF CRLF, the second CRLF being the mandatory empty trailersection.
ChunkedReader.parse_chunk_size()swallowed theNoMoreDataraisedwhile scanning for it, so a body cut short right after the last chunk line was
treated as complete instead of rejected. It now raises
ChunkMissingTerminator(#3382,
#3685).
--spewcrashed on dynamically generated code: the trace hook indexed the2-tuple returned by
inspect.getsourcelines()by line number rather thanindexing the list of lines, so a frame with no
__file__raisedAttributeError: 'int' object has no attribute 'rstrip'on line 1 andIndexErrorbeyond it. The tuple is now unpacked and offset by the source'sstarting line (#3344,
#3495).
Duplicate
HostandContent-Typeheaders accepted: RFC 9110 section 5.3allows only one of each, and a repeat cannot be merged into a list, so the
message means different things to gunicorn and to anything downstream. Both
are now rejected with
InvalidHeader. The check lives in the policy hookshared by both parsers, so the pure-Python and fast parsers agree. Duplicate
Content-Lengthwas already rejected and is unchanged(#3366,
#3548).
Non-worker children reported as failed workers:
reap_workers()reapsevery child through
waitpid(-1), including processes the kernel reparentedonto gunicorn when it runs as PID 1 in a container, but it logged the exit
status before checking whether the pid was ever a worker. An unrelated process
produced
Worker (pid:N) exited with code Mand triggered alerts. Moreseriously, such a process exiting with code 3 or 4 raised
HaltServerand shutthe server down. Ownership is now established first: the dirty arbiter is
reported as itself, unknown children are reaped silently at debug level, and
only real workers can halt the server
(#3220,
#3566).
Dirty arbiter exits were invisible on SIGCHLD:
handle_chld()calledreap_workers()first, whosewaitpid(-1)claimed the dirty arbiter beforereap_dirty_arbiter()could identify it, so the latter always hitECHILDandits reporting never ran. The dirty arbiter is now reaped first, and
reap_workers()recognises it if it exits mid-loop.Dirty arbiter returned stale responses after a worker timeout: when a
request reached
dirty_timeoutthe arbiter answered the client with a timeouterror but kept the worker connection open. The worker's late response was then
the first message waiting on that socket, so the next request routed to the
same worker received the previous request's result, and every request after it
stayed one response behind. The connection is now closed on timeout, so the
late answer is discarded with it
(#3626).
ASGI connection count leaked on server-initiated close:
nr_connswasonly decremented in
connection_lost(), behind a guard keyed on the sameflag
_close_transport()sets first. Every close the server started (aConnection: closeresponse, a keepalive timeout, an error abort) leaked onecount, so
ASGIWorker._shutdown()ran the fullgraceful_timeoutand warnedabout connections that were already gone. The guard now uses its own flag, so
the decrement and the rest of the cleanup run exactly once whichever side
closes first (#3661).
Inotify reloader on cwd-relative extra files:
reload_extra_filesentrieswith no directory part (for example
.env) produced an empty dirname, andwatching it raised
InotifyErrorwithENOENT. The current directory is nowwatched as
.(#3377,#3667).
StatsD zero-valued metrics: gauges, counters, histograms and timers
reporting
0were silently dropped because the value was tested fortruthiness. Only
Noneis skipped now(#3676).
Spurious no-body warning from
sendfile(): a HEAD, 204 or 304 responseserved through
sendfile()warned about dropped body bytes even when thefile was empty and nothing was dropped. It now warns only when there are
bytes to drop, matching
write()(#3684).
Bare
exceptin the gevent websocket example: narrowed toexcept Exception(#3683).ASGI
receive()cancellation: Letasyncio.CancelledErrorpropagatefrom
BodyReceiverinstead of swallowing it and returninghttp.disconnect. Frameworks that cancel their disconnect listener afterthe response completes (Django) no longer see the cancel masked, so
request_finishedfires andclose_old_connections()runs. Fixes idledatabase connections leaking since 25.1.0
(#3627,
#3654).
Control socket leak on SIGHUP reload: The control thread is now marked
ready once its loop and server are live, and the stop paths wait on that
readiness before scheduling shutdown. Reloads no longer leak one thread and
its selector fd plus unix socket per worker, which eventually raised
"too many open files"
(#3648).
WSGI body framing on HEAD/1xx/204/304: Mirror the ASGI strip-and-warn
behavior on the WSGI path.
Content-Lengthis stripped on 1xx/204 perRFC 9110 section 6.4.2, body bytes are dropped for no-body responses in
both
write()andsendfile(), and a single warning is logged per request(#3413).
Refactoring
termination message in
Arbiter.reap_workers()(#3678).
Changes
packagingis no longer a runtime dependency: it was only ever imported bythe gevent worker, to compare gevent's version. It moved to the
geventandtestingextras, so a plainpip install gunicornpulls in nothing(#3643).
Fast HTTP Parser: Require
gunicorn_h1c >= 0.6.6, which rejects duplicateHostandContent-Typeheaders in the C parser itself. Gunicorn alreadyrefuses them on both the WSGI and ASGI paths, so this changes nothing that is
reachable; it moves the rejection to where the bytes are read and lets the
ASGI corpus exercise those cases against the fast parser directly.
Full changelog: https://gunicorn.org/2026-news/
v26.0.0Compare Source
Breaking Changes
eventletworker class has been dropped. Migrate togevent,gthread, ortornado.New Features
Security
authority-formrequest-target outsideCONNECTasterisk-formrequest-target outsideOPTIONSrelative-referencerequest-targetsContent-Lengthlist form (RFC 9112 section 6.3)finish_bodybyte cap_body_receiveralive across the keepalive smuggling gate so pipelined requests cannot re-enter a closed bodyproxy_allow_ipsand tighten v1/v2 parsing in the ASGI callback parser.Bug Fixes
Content-Lengthon HEAD and 304 responses (#3621)_handle_stream_endedto set_body_completein the async HTTP/2 handler so request bodies finalize correctly on stream endInvalidChunkExtensionmapping and fast-parser support in ASGI tests (#3565)Transfer-Encoding: chunkedto 100-Continue interim responses.textkey isNoneearly_hintscallback to matchprocess_headers; pass only the header name toInvalidHeader(#3588).accept())Transfer-Encodingheader for BlackSheep streamingRefactoring
BodyReceiver._closedinto separate transport and body-wait flags for clearer keepalive/EOF semantics.Changes
gunicorn_h1c >= 0.6.5. Drop the lastpython_onlytest markers; the C extension is now used wherever available (CPython only; PyPy continues to use the Python parser).h2anduvloopto thetestingextra; removeeventlet.docker/setup-qemu-action,docker/setup-buildx-action,docker/login-action,docker/build-push-action, anddocker/metadata-actionto current major versions.Full changelog: benoitc/gunicorn@25.3.0...26.0.0
PyCQA/isort (isort)
v9.0.1Compare Source
🪲 Fixes
python -m isortby excluding__main__from mypyc compilation by @DanielNoord with @Copilot in #2643Other changes
Full Changelog: PyCQA/isort@9.0.0...9.0.1
v9.0.0Compare Source
mypycby @DanielNoord in #2586posixpath.abspathby @DanielNoord in #2606stdlibmodules to bestdlib(#2295) @devdanzinfrom X importlines (#2499) @copilot-swe-agentcheck_codewhen usingfloat_to_top+add_imports(#2492) @copilot-swe-agent#inline comments on imports (#2488) @copilot-swe-agent# isort: off/on/splitduringfloat_to_toppreprocessing with CRLF input by @DanielNoord with @Copilot in #2553# isort: skipwhen a__future__import is present (#2092) by @apoorvdarshan in #2574__all__and literals black-compatible (#2280) by @lord-haffi in #2576*imports by @DanielNoord in #2619Anyfromparse.py(#2516) @DanielNoordgit_ignoreconfig by @sparrowt in #2531tomliby @DanielNoord in #2579cruftby @DanielNoord in #2610mypyccompiled wheels by @DanielNoord in #2623mypycby @DanielNoord in #2625test_importablefor local dev by @DanielNoord in #2635hynek/structlog (structlog)
v26.1.0Compare Source
Removed
Deprecated
Use our Rich integration or copy-paste the one line of code you need.
#802
Added
Python 3.15 support.
#813
structlog.dev.rich_monochrome_tracebackfor Rich-based monochrome exception rendering and add support for it throughoutstructlog.dev.ConsoleRendererwhen the user asks for no colors.#794
structlog.BytesLoggernow has anameattribute which allows you to use it with thestructlog.stdlib.add_logger_name()processor without using the standard library integration.#786
structlog.processors.CallsiteParameterAddernow supportsCallsiteParameter.QUAL_MODULEthat adds the qualified import name of the module of the callsite, or__main__if the module is the entry point.This is only available for structlog-originated events since the standard library has no equivalent (except for the convention of setting the logger's name to
__name__).#812
structlog.stdlib.BoundLoggernow hasis_enabled_for()andget_effective_level()methods that are snake_case aliases for itsisEnabledFor()andgetEffectiveLevel()methods.This makes it more compatible with the native
structlog.typing.FilteringBoundLogger, so you can swap configurations without changing your call sites.#818
Changed
structlog.dev.ConsoleRendererdoes not warn anymore when theexceptionkey has a rendered value despite having a fancy formatter configured.#790
Fixed
structlog.BytesLogger,structlog.PrintLogger, andstructlog.WriteLoggernow hold weak references to the files they use for output.This prevents their leakage in long-running processes that open many logfiles, such as task executors that create a per-task
BytesLoggerorWriteLogger.#807
structlog.WriteLoggeris usable after unpickling.#787
structlog.processors.CallsiteParameterAddernow reports the calling thread's id and name for async log methods, instead of the thread from the executor pool that runs the underlying sync logger.#710
#805
Configuration
📅 Schedule: (UTC)
🚦 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.
This PR was generated by Mend Renovate. View the repository job log.