# What changed in tomlkit

> 44 changes in tomlkit 0.15 from its official release notes, upgrade guides and advisories: 15 breaking, 1 security, 1 new APIs and options. Each one cited. Sources checked 2026-10-29. HTML: https://unstale.sh/pypi/tomlkit/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## tomlkit 0.15

### Breaking changes

- Rejects array slice assignment before mutating values. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Rejects trailing characters in key_value() rather than accepting them. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Rejects special float literals that are not lowercase. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Rejects surrogate code points in Unicode escapes, non-hexadecimal escape digits, tabs in bare keys, and malformed array-of-tables headers. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Renders timezone-aware times as local times without an offset. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Malformed array elements now raise an error instead of being dropped. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Tab characters in bare keys are rejected. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Rejects comments containing line breaks in Item.comment and add_line. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2), [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Rejects overlong decimal integers instead of coercing them to infinity. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2), [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Float is no longer treated as a sequence. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Out-of-order concrete and super table redefinitions are rejected during parsing. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Surrogate code points in \U Unicode escapes are rejected. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Rejects invalid table redefinitions, including redefinitions after a parent header and out-of-order concrete and super-table redefinitions. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2), [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Inserting tables into inline tables is rejected. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Non-hexadecimal digits in \u and \U escapes are rejected. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)

### Security

- Limits parser nesting depth so deeply nested input no longer crashes with RecursionError. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2), [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)

### New APIs and options

- Adds native containment support to Container, Table, InlineTable, and OutOfOrderTableProxy. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2), [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)

### Performance

- Renders inline tables in O(n) instead of O(n²). (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2), [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)

### Behavior and default changes

- Updated to TOML specification v1.1, changing which TOML features tomlkit supports. (0.15.0) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.0)

### Fixes and other changes

- Renders an emptied array of tables as an empty array. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Compares Bool items by value. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Preserves fold when subtracting datetimes and when unwrapping a datetime or time. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Fixes separator placement and comma handling when appending to or removing elements from inline tables, including tables with trailing comments. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Fixes corrupt output when adding dotted keys, inserting elements, or rendering inline tables with comments; also rejects tables inserted into inline tables. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Preserves underscores when creating integers from strings. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Preserves inline table key order in item() and preserves unwrap() key order after a value is replaced. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Escapes content appended to a String via __add__. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- Adds the standard-library fold argument to Time and DateTime. (0.15.2) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2)
- An array-of-tables header missing its second closing bracket is rejected. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Inserting into a comma-first array no longer produces a doubled comma. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- A newline after a dotted inline table is preserved. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Adding to a dotted key inside an inline table no longer corrupts the rendered output. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- dumps() again delegates to as_string for non-Mapping wrappers. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Removing a middle inline table element no longer produces a duplicated comma. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Inline table separators are placed after values rather than trailing comments, and appending no longer corrupts separator placement. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Returns a single key for a single-element list. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2), [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Every line of a multiline comment is prefixed with # when rendered. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Out-of-order table proxies represent merged values, merge array-of-tables fragments, and avoid duplicate headers when adding a key. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Fixes parsing and rendering of out-of-order tables, including sub-tables extending arrays of tables and merged array-of-tables fragments. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2), [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Preserves the leading newline of a multiline string built with string(). (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.2), [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Table display names are preserved on self-assignment. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Replacing a dotted key with a table no longer duplicates prefixes or captures siblings, and top-level scalars are not captured by the rendered table. (0.15.1) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.1)
- Fixed a parser hang. (0.15.0) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.0)
- The sort_keys option is now honored for parsed TOML documents. (0.15.0) — [release notes](https://github.com/python-poetry/tomlkit/releases/tag/0.15.0)
