Repository navigation
Update dependency tomlkit to v0.15.2 - #479
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
renovate
Bot
force-pushed
the
renovate/tomlkit-0.x
branch
from
May 10, 2026 09:05
ae08a75 to
279b1f7
Compare
renovate
Bot
force-pushed
the
renovate/tomlkit-0.x
branch
from
July 17, 2026 23:58
279b1f7 to
6bb3134
Compare
renovate
Bot
force-pushed
the
renovate/tomlkit-0.x
branch
from
August 26, 2026 21:32
6bb3134 to
f3a77b1
Compare
renovate
Bot
force-pushed
the
renovate/tomlkit-0.x
branch
from
October 16, 2026 05:06
f3a77b1 to
c916da9
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:
==0.13.3→==0.15.2Release Notes
python-poetry/tomlkit (tomlkit)
v0.15.2Compare Source
Changed
\u001binstead of\e, which is only valid in TOML 1.1, so the output stays readable by TOML 1.0 parsers such astomllib. (#641)key_value()now raisesUnexpectedCharErroron anything other than whitespace or a comment after the pair, instead of silently discarding it (e.g.key_value("a = 1 b = 2")), matchingparse(). (#594)integer()given a string now validates it against the TOML integer grammar and keeps the original text, so grouping underscores (e.g.integer("1_000")) survivedumps(); strings that are not valid TOML integers (e.g."010") now raiseValueError. (#336)foldargument toDateTimeandTime, mirroring the stdlib, and carryfoldthroughitem(), arithmetic (including datetime subtraction) andunwrap(), so a folded local time no longer converts an hour off. (#619, #623, #626)[project]table; building from source now requirespoetry-core>=2.2.0. (#607, #609)Fixed
[a.b.c]then[a]withb.z = 1extends the implicita.bsuper-table rather than redefining it (stdlibtomllibaccepts it), so it now parses and round-trips instead of raisingRedefinition of an existing table. The concrete-table case ([a.b]then[a]b.z = 1) stays rejected. (#565)Eexponent after a leading-zero mantissa (e.g.0E2) being rejected as an invalid number while0e2parsed fine. (#586)Inf,NaN,-INF) being accepted; TOML only allows lowercaseinfandnan, so they now raiseParseError. (#628)item()reordering the keys of an inline table (dict-valued keys were forced last) under the defaultsort_keys=False. (#546)unwrap()moving a key to the end after its value was replaced (e.g.doc["b"] = 9), whiledumps()andkeys()kept the original order. (#591)", "separators emitting a bare","for the new entry, leaving the table inconsistently spaced (e.g.{x = 1, y = 2,z = 3}). (#595)key = [], placed and keyed relative to the nearest table header so it parses back into the same table. (#567)add_line(value, comment=...)) rendering its closing]on the comment line, producing unparseable output. (#580)del array[start:stop:step]with a negative or omitted bound removing the wrong elements from the rendered output. (#599)ValueError("slice assignment is not supported"). (#600)String.__add__splicing the appended text into a basic string without escaping it, so appending a quote or backslash produced invalid TOML. (#612)\rin a multiline basic string and rejected withInvalidStringErrorin a multiline literal string; CRLF line endings are left intact. (#539)datetime.timerendering with a UTC offset (e.g.07:32:00+02:00), which TOML local times do not allow; it now renders as a local time. (#613)+-0.0(e.g.-1.5times0), which does not parse. (#629)Boolitems never comparing equal to each other; they now compare by value. (#660)v0.15.1Compare Source
Changed
key in ...) onContainer,TableandInlineTablewith native__contains__implementations, avoiding the inheritedMutableMappinground-trip through__getitem__(which resolves the value and builds an exception on every absent key). (#483)Sourceindex-based: it now tracks an integer position over the input string instead of materializing a list of(index, char)tuples up front, so construction is O(1) and state save/restore no longer copies an iterator. (#489)Source.advance_while/advance_untilconsume a whole run of whitespace, bare-key or number characters in a single pass over the input string instead of oneinc()call per character. (#490)TOMLCharwrapper: the parser now reads plainstrcharacters fromSourceand detects end-of-input positionally, avoiding a per-character object construction and method dispatch. (#492)StringTypemembers by identity (is) instead of building a set on everyis_basic/is_literal/is_singleline/is_multilinecall, avoiding millions of enum hashes while parsing. (#502)[a.b.c]/[a.b.d]headers) from O(n²) into O(n). (#503)key in ...) on out-of-order tables with a nativeOutOfOrderTableProxy.__contains__, completing #483 for the last mapping type that still inherited the slowMutableMappingmixin (which resolves the value and builds an exception on every absent key). (#515)files = [...]blocks that dominate lock files): the parser no longer attempts to read a value while sitting on the closing], which previously built anUnexpectedCharErrorjust to discard it — and constructing that exception eagerly computes a line/column by scanning the whole document, making it O(document size) per such array. (#517)"""/'''bodies the single-line fast path added in #491; a\rstill stops the scan so\r\nstays validated and byte-for-byte preserved. (#518)unwrap()(converting a parsed document to a plaindict) by resolving each key directly from the container's key map instead of iterating the inheritedMutableMappingview, which rebuilt aSingleKeyfrom the bare string for every key just to re-look-up the value. Out-of-order tables still resolve through their proxy, so their validation is unchanged. (#521)as_string()/dumps()) of inline tables with many keys by precomputing the last-key and last-deleted-element indices in a single pass, instead of rescanning the remaining body on every separator comma — turning an O(n²) render into O(n). (#525)Fixed
string()dropping a leading newline of a multiline string on round-trip: a value beginning with a newline is now rendered with an extra leading newline (the one the parser trims after the opening delimiter) so it survives re-parsing.ParseErrorwhen a sub-table extends the last element of an array of tables after an unrelated table. (#261)doc["a"] = {...}whereacame froma.b = ...): the dotted prefix was duplicated onto the new[a]header, and the header then swallowed any sibling that follows it on round-trip. The replacement now renders as a plain table and, when needed, moves before the inline entries (values and dotted keys) it would otherwise capture. (#513, #524)dumps()rendering mapping-like wrappers around a parsed document (e.g.dotty_dict'sDotty) through their delegatedas_string, preserving the original table order and layout instead of re-encoding through a plain dict — a 0.15.0 regression. (#482)RecursionError. Values nested more than 100 levels deep and keys with more than 100 dotted fragments now raiseParseError. (#459)comment()producing invalid TOML for a multiline string by prefixing every line with#, not just the first. (#449)KeyAlreadyPresenterror when parsing or accessing an out-of-order table whose array-of-tables elements are split across the table's parts. (#505)tomllibbehaviour. (#523)doc["a"] = aot(...)whereacame froma.b = ...): the new[[a]]header kept the dotted key's inline position and swallowed the following dotted sibling on round-trip. The array of tables now renders past the inline entries it would otherwise capture, mirroring the table fix for #513. (#542)a.b = 1) whose table had gained a[a.c]-style child placed the scalar inside that table's scope, silently re-nesting it on round-trip. Scalars now move before such an entry, like they do before regular tables. (#543)[table]header when adding a key to an out-of-order table whose concrete header is declared after its sub-tables; the new key now lands in the existing concrete part instead of giving the header-less super part a second header. (#545)doc[k] = doc[k]rewriting[keys .'a'.'c']to[keys.a.'c']. (#291)str()andrepr()of out-of-order table proxies to show their merged values. (#536)v0.15.0Compare Source
Changed
key in ...) onContainer,TableandInlineTablewith native__contains__implementations, avoiding the inheritedMutableMappinground-trip through__getitem__(which resolves the value and builds an exception on every absent key). (#483)Sourceindex-based: it now tracks an integer position over the input string instead of materializing a list of(index, char)tuples up front, so construction is O(1) and state save/restore no longer copies an iterator. (#489)Source.advance_while/advance_untilconsume a whole run of whitespace, bare-key or number characters in a single pass over the input string instead of oneinc()call per character. (#490)TOMLCharwrapper: the parser now reads plainstrcharacters fromSourceand detects end-of-input positionally, avoiding a per-character object construction and method dispatch. (#492)StringTypemembers by identity (is) instead of building a set on everyis_basic/is_literal/is_singleline/is_multilinecall, avoiding millions of enum hashes while parsing. (#502)[a.b.c]/[a.b.d]headers) from O(n²) into O(n). (#503)key in ...) on out-of-order tables with a nativeOutOfOrderTableProxy.__contains__, completing #483 for the last mapping type that still inherited the slowMutableMappingmixin (which resolves the value and builds an exception on every absent key). (#515)files = [...]blocks that dominate lock files): the parser no longer attempts to read a value while sitting on the closing], which previously built anUnexpectedCharErrorjust to discard it — and constructing that exception eagerly computes a line/column by scanning the whole document, making it O(document size) per such array. (#517)"""/'''bodies the single-line fast path added in #491; a\rstill stops the scan so\r\nstays validated and byte-for-byte preserved. (#518)unwrap()(converting a parsed document to a plaindict) by resolving each key directly from the container's key map instead of iterating the inheritedMutableMappingview, which rebuilt aSingleKeyfrom the bare string for every key just to re-look-up the value. Out-of-order tables still resolve through their proxy, so their validation is unchanged. (#521)as_string()/dumps()) of inline tables with many keys by precomputing the last-key and last-deleted-element indices in a single pass, instead of rescanning the remaining body on every separator comma — turning an O(n²) render into O(n). (#525)Fixed
string()dropping a leading newline of a multiline string on round-trip: a value beginning with a newline is now rendered with an extra leading newline (the one the parser trims after the opening delimiter) so it survives re-parsing.ParseErrorwhen a sub-table extends the last element of an array of tables after an unrelated table. (#261)doc["a"] = {...}whereacame froma.b = ...): the dotted prefix was duplicated onto the new[a]header, and the header then swallowed any sibling that follows it on round-trip. The replacement now renders as a plain table and, when needed, moves before the inline entries (values and dotted keys) it would otherwise capture. (#513, #524)dumps()rendering mapping-like wrappers around a parsed document (e.g.dotty_dict'sDotty) through their delegatedas_string, preserving the original table order and layout instead of re-encoding through a plain dict — a 0.15.0 regression. (#482)RecursionError. Values nested more than 100 levels deep and keys with more than 100 dotted fragments now raiseParseError. (#459)comment()producing invalid TOML for a multiline string by prefixing every line with#, not just the first. (#449)KeyAlreadyPresenterror when parsing or accessing an out-of-order table whose array-of-tables elements are split across the table's parts. (#505)tomllibbehaviour. (#523)doc["a"] = aot(...)whereacame froma.b = ...): the new[[a]]header kept the dotted key's inline position and swallowed the following dotted sibling on round-trip. The array of tables now renders past the inline entries it would otherwise capture, mirroring the table fix for #513. (#542)a.b = 1) whose table had gained a[a.c]-style child placed the scalar inside that table's scope, silently re-nesting it on round-trip. Scalars now move before such an entry, like they do before regular tables. (#543)[table]header when adding a key to an out-of-order table whose concrete header is declared after its sub-tables; the new key now lands in the existing concrete part instead of giving the header-less super part a second header. (#545)doc[k] = doc[k]rewriting[keys .'a'.'c']to[keys.a.'c']. (#291)str()andrepr()of out-of-order table proxies to show their merged values. (#536)v0.14.0Compare Source
Changed
Added
_parentand_sort_keysparameters to enable proper encoding of nested structures. (#429)String.typeproperty to get the string type. (#443)Configuration
📅 Schedule: (UTC)
* 0-3 * * 1)🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.