- Removed
- Python 3.7 support
- Improved
- Make
loads
raiseTypeError
notAttributeError
on bad input types that do not have thereplace
attribute. Improve error message whenbytes
is received.
- Make
- Type annotations
- Type annotate
load
input astyping.IO[bytes]
(previouslytyping.BinaryIO
).
- Type annotate
- Improved
- Make bundling easier by using relative imports internally and adding license and copyright notice to source files.
- Make error messages more uniform
- Raise a friendly
TypeError
for wrong file mode - Allow
parse_float
to return objects having theappend
attr - Eagerly raise an error if
parse_float
returns an illegal type
- Packaging
- Move from
pytest
testing framework tounittest
and removepython-dateutil
test dependency. Tests now only require Python interpreter.
- Move from
- Fixed
- Backport: Allow lower case "t" and "z" in datetimes
- Removed
- Python 3.6 support
- Support for text file objects as
load
input. Use binary file objects instead. - First argument of
load
andloads
can no longer be passed by keyword.
- Fixed
- Allow lower case "t" and "z" in datetimes
- Improved
- Raise an error when dotted keys define values outside the "current table". Technically speaking TOML v1.0.0 does allow such assignments but that isn't intended by specification writers, and will change in a future specification version (see the pull request).
- Fixed
- Illegal characters in error messages were surrounded by two pairs of quotation marks
- Improved
TOMLDecodeError.__module__
is now the public import path (tomli
) instead of private import path (tomli._parser
)- Eliminated an import cycle when
typing.TYPE_CHECKING
isTrue
. This allowssphinx-autodoc-typehints
to resolve type annotations.
- Fixed
- Raise an error if a carriage return (without a following line feed) is found in a multi-line basic string
- Type annotations
- Type annotate
load
input astyping.BinaryIO
only to discourage use of deprecated text file objects.
- Type annotate
- Packaging
- Remove legacy
setup.py
from PyPI source distribution. If you're a packager and absolutely need this file, please create an issue.
- Remove legacy
- Deprecated
- Text file objects as input to
load
. Binary file objects should be used instead to avoid opening a TOML file with universal newlines or with an encoding other than UTF-8.
- Text file objects as input to
- Added
load
can now take a binary file object
- Performance
- Minor boost (~4%)
- Fixed
- Raise
TOMLDecodeError
instead ofValueError
when parsing dates and datetimes that pass the regex check but don't correspond to a valid date or datetime.
- Raise
- Performance
- Improved multiline literal string parsing performance
- Performance
- Minor boost (~4%)
- Performance
- A significant boost
- Fixed
- Raise
TOMLDecodeError
instead ofKeyError
when overwriting implicitly in an inline table
- Raise
- Fixed
- Raise
TOMLDecodeError
if overwriting nested inline tables from the parent inline - Raise
TOMLDecodeError
if escaped Unicode character is not a Unicode scalar value
- Raise
- Performance
- Increased parsing speed of single line basic strings, and multi-line literal and basic strings
- Fixed
TOMLDecodeError
now raised when opening a table implicitly created by a key/value pair- Don't error when two array-of-tables items open a subtable with the same name
- Don't error when opening parent table of an already defined array-of-tables item
- Performance
- Significant boost to comment parsing speed
- Added
- Improved
TOMLDecodeError
error messages. Line and column are included when applicable.
- Improved
- Performance
- Over 5% boost
- Fixed
- Made exception type
TOMLDecodeError
when overwriting a value with a deeply nested table
- Made exception type
- Fixed
TOMLDecodeError
is now raised when attempting to overwrite a value in an inline table's or array's namespace with a table definition
- Fixed
- Error type was not TOMLDecodeError in some obscure cases
- Added
tomli.load
for parsing IO streams returned byopen()
parse_float
keyword argument totomli.loads
. Allows parsing TOML floats to a non-float type in Python.
- Fixed
TOMLDecodeError
is now raised for duplicate keys in inline tables, as opposed to silently overriding the previous value
- Changed
- Project name to Tomli
- Performance
- A performance boost
- Added
tomli.loads
for parsing TOML stringstomli.TOMLDecodeError
that is raised for parse errors