From 9e835a7981a31c56e081a46a08fcd512c44b993c Mon Sep 17 00:00:00 2001 From: pwwang Date: Mon, 24 Jun 2024 23:39:29 -0700 Subject: [PATCH] bump up versions 1. bump rtoml to 0.11 2. bump tomlkit to 0.12.5 3. bump toml-test to 1.5.0 4. pytomlpp is excluded as it only supports python < 3.11 5. bump tomllib data to 3.12.4 --- README.md | 122 ++--- README.raw.md | 5 +- poetry.lock | 446 ++++++++---------- pyproject.toml | 14 +- reports/with_toml-test_latest.md | 117 ++--- reports/with_toml-test_v1.0.0.md | 354 -------------- reports/with_toml-test_v1.1.0.md | 354 -------------- reports/with_toml-test_v1.2.0.md | 107 ++--- ...python3.11.md => with_toml-test_v1.3.0.md} | 79 ++-- reports/with_toml-test_v1.4.0.md | 337 +++++++++++++ run-tests.py | 8 +- toml_bench/__main__.py | 66 +-- toml_bench/suite.py | 4 +- 13 files changed, 754 insertions(+), 1259 deletions(-) delete mode 100644 reports/with_toml-test_v1.0.0.md delete mode 100644 reports/with_toml-test_v1.1.0.md rename reports/{with_python3.11.md => with_toml-test_v1.3.0.md} (55%) create mode 100644 reports/with_toml-test_v1.4.0.md diff --git a/README.md b/README.md index ef5cb8a..c85e490 100644 --- a/README.md +++ b/README.md @@ -16,10 +16,10 @@ The verions of the packages tested in this report. |-|-----------------------| |toml|0.10.2| |tomli/tomli_w|2.0.1; **tomli_w**: 1.0.0| -|tomlkit|0.11.8| -|pytomlpp|1.0.13| -|rtoml|0.9.0| +|tomlkit|0.12.5| +|rtoml|0.11.0| |qtoml|0.3.1| +|tomllib|(Python 3.12.2)| ### Dumping `None` value @@ -33,9 +33,9 @@ Literally `.dumps(None)` |toml|'NoneType' object is not iterable| |tomli/tomli_w|'NoneType' object has no attribute 'items'| |tomlkit|Expecting Mapping or TOML Container, given| -|pytomlpp|dumps(): incompatible function arguments. The following argument types are supported:
1. (arg0: dict) -> str

Invoked with: None| |rtoml|"null"| |qtoml|'NoneType' object has no attribute 'items'| +|tomllib|Dumping not supported| ### Dumping key-`None` pair @@ -49,9 +49,9 @@ Literally `.dumps({"key": None})` |toml|| |tomli/tomli_w|Object of type is not TOML serializable| |tomlkit|Invalid type | -|pytomlpp|cannot convert value None to proper toml type
| |rtoml|key = "null"
| |qtoml|TOML cannot encode None| +|tomllib|Dumping not supported| ### Dumping list with `None` value @@ -65,9 +65,9 @@ Literally `.dumps({"key": [1, 2, 3, None, 5]})` |toml|key = [ 1, 2, 3, "None", 5,]
| |tomli/tomli_w|Object of type is not TOML serializable| |tomlkit|Invalid type | -|pytomlpp|not a valid type for conversion None| |rtoml|key = [1, 2, 3, "null", 5]
| |qtoml|bad type '' for dump_value| +|tomllib|Dumping not supported| ### Loading `None`-like values @@ -81,9 +81,9 @@ Literally `.loads('v1 = "null" v2 = "None"')` |toml|{'v1': 'null', 'v2': 'None'}| |tomli/tomli_w|{'v1': 'null', 'v2': 'None'}| |tomlkit|{'v1': 'null', 'v2': 'None'}| -|pytomlpp|{'v1': 'null', 'v2': 'None'}| |rtoml|{'v1': 'null', 'v2': 'None'}| |qtoml|{'v1': 'null', 'v2': 'None'}| +|tomllib|{'v1': 'null', 'v2': 'None'}| ### Dumping a heterogenous array @@ -97,9 +97,9 @@ Literally `.dumps({"v": [1, 1.2, True, "string"]})` |toml|v = \[ 1, 1.2, true, "string",\]
| |tomli/tomli_w|v = \[
    1,
    1.2,
    true,
    "string",
\]
| |tomlkit|v = \[1, 1.2, true, "string"\]
| -|pytomlpp|v = \[ 1, 1.2, 1, 'string' \]| |rtoml|v = \[1, 1.2, true, "string"\]
| |qtoml|v = \[1, 1.2, true, 'string'\]
| +|tomllib|Dumping not supported| ### Loading a heterogenous array @@ -113,9 +113,9 @@ Literally `.loads('v = [1, 1.2, True, "string"]')` |toml|Not a homogeneous array (line 2 column 1 char 1)| |tomli/tomli_w|`{'v': [1, 1.2, True, 'string']}`| |tomlkit|`{'v': [1, 1.2, True, 'string']}`| -|pytomlpp|`{'v': [1, 1.2, True, 'string']}`| |rtoml|`{'v': [1, 1.2, True, 'string']}`| |qtoml|`{'v': [1, 1.2, True, 'string']}`| +|tomllib|`{'v': [1, 1.2, True, 'string']}`| ### Dumping a nested array @@ -129,9 +129,9 @@ Literally `.dumps({"v": [[1], [1, 2]]})` |toml|v = \[ \[ 1,\], \[ 1, 2,\],\]
| |tomli/tomli_w|v = \[
    \[
        1,
    \],
    \[
        1,
        2,
    \],
\]
| |tomlkit|v = \[\[1\], \[1, 2\]\]
| -|pytomlpp|v = \[ \[ 1 \], \[ 1, 2 \] \]| |rtoml|v = \[\[1\], \[1, 2\]\]
| |qtoml|v = \[\[1\], \[1, 2\]\]
| +|tomllib|Dumping not supported| ### Loading a nested array @@ -145,9 +145,9 @@ Literally `.loads('v = [[1], [1, 2]]')` |toml|`{'v': [[1], [1, 2]]}`| |tomli/tomli_w|`{'v': [[1], [1, 2]]}`| |tomlkit|`{'v': [[1], [1, 2]]}`| -|pytomlpp|`{'v': [[1], [1, 2]]}`| |rtoml|`{'v': [[1], [1, 2]]}`| |qtoml|`{'v': [[1], [1, 2]]}`| +|tomllib|`{'v': [[1], [1, 2]]}`| ### Dumping keeps order of keys? @@ -163,9 +163,9 @@ like `c = 1\na = 2\nb = 3\n`. |toml|Kept| |tomli/tomli_w|Kept| |tomlkit|Kept| -|pytomlpp|Lost| |rtoml|Kept| |qtoml|Kept| +|tomllib|Dumping not supported| ### Loading keeps order of keys? @@ -181,9 +181,9 @@ a dictionary with keys in the order of `['c', 'a', 'b']`. |toml|Kept| |tomli/tomli_w|Kept| |tomlkit|Kept| -|pytomlpp|Lost| |rtoml|Kept| |qtoml|Kept| +|tomllib|Kept| ### Dumping unicode @@ -197,9 +197,9 @@ Literally, `.dumps({"你好": "世界"})` |toml|"你好" = "世界"
| |tomli/tomli_w|"你好" = "世界"
| |tomlkit|"你好" = "世界"
| -|pytomlpp|'你好' = '世界'| |rtoml|"你好" = "世界"
| |qtoml|'你好' = '世界'
| +|tomllib|Dumping not supported| ### Loaded unicode @@ -223,9 +223,9 @@ with open(self.datafile, "r", encoding="utf-8") as f: |toml|{'你好': '世界'}| |tomli/tomli_w|File must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`
When loaded with `rb`:
{'你好': '世界'}| |tomlkit|{'你好': '世界'}| -|pytomlpp|{'你好': '世界'}| |rtoml|{'你好': '世界'}| |qtoml|{'你好': '世界'}| +|tomllib|File must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`
When loaded with `rb`:
{'你好': '世界'}| ### Compliance with valid tests in toml-test @@ -238,14 +238,14 @@ The tests come up with a JSON counterpart that can be used to valid whether loading the toml file yields the same result as the JSON counterpart. -| |Result (toml-test v1.3.0)| +| |Result (toml-test v1.5.0)| |-|-----------------------| -|toml|[key/escapes.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/key/escapes.toml) Parsed as unexpected data.
[key/dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/key/dotted.toml) Found invalid character in key name: '"'. Try quoting the key name. (line 12 column 11 char 245)
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/comment/tricky.toml) Parsed as unexpected data.
[inline-table/key-dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/inline-table/key-dotted.toml) Parsed as unexpected data.
[inline-table/multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/inline-table/multiline.toml) Invalid inline table value encountered (line 1 column 1 char 0)
[array/nested-double.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/nested-double.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-string.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-int-string.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-string-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-string-table.toml) list index out of range
[array/mixed-int-array.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-int-array.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-float.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-int-float.toml) Not a homogeneous array (line 1 column 1 char 0)
[float/zero.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/float/zero.toml) Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 47)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Reserved escape sequence used (line 1 column 1 char 0)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/datetime.toml) Parsed as unexpected data.
[datetime/local-time.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/local-time.toml) Parsed as unexpected data.
*86/100 (86.00%) passed*| -|tomli/tomli_w|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Unescaped '\' in a string (at line 1, column 10)
*99/100 (99.00%) passed*| -|tomlkit|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Invalid character 'e' in string at line 1 col 8
*99/100 (99.00%) passed*| -|pytomlpp|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Error while parsing string: escape sequence '\e' is not supported in TOML 1.0.0 and earlier (error occurred at line 1, column 9)
*99/100 (99.00%) passed*| -|rtoml|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) invalid escape character in string: `e` at line 1 column 9
*99/100 (99.00%) passed*| -|qtoml|[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/comment/tricky.toml) can't parse type (line 11, column 7)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/multiline-quotes.toml) Didn't find expected newline (line 4, column 26)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) \e not a valid escape (line 1, column 33)
[datetime/milliseconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/milliseconds.toml) Didn't find expected newline (line 2, column 27)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/datetime.toml) Didn't find expected newline (line 2, column 18)
*95/100 (95.00%) passed*| +|toml|[spec/array-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/spec/array-0.toml) Not a homogeneous array (line 8 column 1 char 261)
[spec/keys-4.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/spec/keys-4.toml) Found invalid character in key name: 'c'. Try quoting the key name. (line 2 column 8 char 57)
[spec/local-time-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/spec/local-time-0.toml) Parsed as unexpected data.
[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/no-seconds.toml) invalid literal for int() with base 0: '13:37' (line 2 column 1 char 46)
[datetime/local-time.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/local-time.toml) Parsed as unexpected data.
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/datetime.toml) Parsed as unexpected data.
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/comment/tricky.toml) Parsed as unexpected data.
[key/dotted-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/dotted-1.toml) Parsed as unexpected data.
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/unicode.toml) Found invalid character in key name: '‍'. Try quoting the key name. (line 5 column 2 char 67)
[key/dotted-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/dotted-2.toml) Found invalid character in key name: '"'. Try quoting the key name. (line 7 column 11 char 166)
[key/quoted-unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/quoted-unicode.toml) Duplicate keys! (line 3 column 1 char 19)
[key/dotted-empty.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/dotted-empty.toml) Duplicate keys! (line 2 column 1 char 17)
[key/escapes.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/escapes.toml) Parsed as unexpected data.
[table/empty-name.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/table/empty-name.toml) Can't have a keygroup with an empty name (line 1 column 1 char 0)
[string/raw-multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/raw-multiline.toml) Unbalanced quotes (line 20 column 50 char 532)
[string/ends-in-whitespace-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/hex-escape.toml) Reserved escape sequence used (line 3 column 1 char 35)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/escape-esc.toml) Reserved escape sequence used (line 1 column 1 char 0)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/multiline-quotes.toml) Unterminated string found. Reached end of file. (line 27 column 1 char 664)
[float/zero.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/float/zero.toml) Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 47)
[array/mixed-int-string.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/array/mixed-int-string.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/nested-double.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/array/nested-double.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/string-with-comma-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/array/string-with-comma-2.toml) string index out of range
[array/mixed-int-float.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/array/mixed-int-float.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-string-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/array/mixed-string-table.toml) list index out of range
[array/mixed-int-array.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/array/mixed-int-array.toml) Not a homogeneous array (line 1 column 1 char 0)
[inline-table/multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/multiline.toml) Invalid inline table value encountered (line 1 column 1 char 0)
[inline-table/key-dotted-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/key-dotted-1.toml) Parsed as unexpected data.
[inline-table/key-dotted-5.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/key-dotted-5.toml) Not a homogeneous array (line 2 column 1 char 20)
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/newline.toml) Key name found without value. Reached end of line. (line 5 column 2 char 98)
*157/187 (83.96%) passed*| +|tomli/tomli_w|[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/no-seconds.toml) Expected newline or end of document after a statement (at line 2, column 23)
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/unicode.toml) Invalid statement (at line 3, column 1)
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/hex-escape.toml) Unescaped '\' in a string (at line 3, column 22)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/escape-esc.toml) Unescaped '\' in a string (at line 1, column 10)
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/newline.toml) Invalid initial character for a key part (at line 3, column 21)
*182/187 (97.33%) passed*| +|tomlkit|[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/no-seconds.toml) Invalid number at line 2 col 25
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/unicode.toml) Empty key at line 3 col 0
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/hex-escape.toml) Invalid character 'x' in string at line 3 col 20
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/escape-esc.toml) Invalid character 'e' in string at line 1 col 8
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/newline.toml) Empty key at line 3 col 20
*182/187 (97.33%) passed*| +|rtoml|[spec/table-9.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/spec/table-9.toml) duplicate key: `apple` for key `fruit` at line 8 column 1
[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/no-seconds.toml) expected a colon, found a newline at line 2 column 26
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/unicode.toml) unexpected character found: `\u{20ac}` at line 3 column 1
[table/array-within-dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/table/array-within-dotted.toml) duplicate key: `apple` for key `fruit` at line 4 column 1
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/hex-escape.toml) invalid escape character in string: `x` at line 3 column 21
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/escape-esc.toml) invalid escape character in string: `e` at line 1 column 9
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/newline.toml) expected a table key, found a newline at line 3 column 21
*180/187 (96.26%) passed*| +|qtoml|[spec/string-4.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/spec/string-4.toml) Didn't find expected newline (line 7, column 62)
[spec/string-7.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/spec/string-7.toml) Didn't find expected newline (line 7, column 50)
[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/no-seconds.toml) can't parse type (line 2, column 20)
[datetime/milliseconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/milliseconds.toml) Didn't find expected newline (line 2, column 27)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/datetime.toml) Didn't find expected newline (line 4, column 18)
[comment/after-literal-no-ws.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/comment/after-literal-no-ws.toml) can't parse type (line 1, column 4)
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/comment/tricky.toml) can't parse type (line 11, column 7)
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/unicode.toml) '€' cannot begin key (line 3, column 0)
[string/raw-multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/raw-multiline.toml) Didn't find expected newline (line 22, column 3)
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/hex-escape.toml) \x not a valid escape (line 3, column 43)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/escape-esc.toml) \e not a valid escape (line 1, column 33)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/multiline-quotes.toml) Didn't find expected newline (line 4, column 26)
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/newline.toml) ' ' cannot begin key (line 3, column 20)
*174/187 (93.05%) passed*| +|tomllib|[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/no-seconds.toml) Expected newline or end of document after a statement (at line 2, column 23)
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/unicode.toml) Invalid statement (at line 3, column 1)
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/hex-escape.toml) Unescaped '\' in a string (at line 3, column 22)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/escape-esc.toml) Unescaped '\' in a string (at line 1, column 10)
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/newline.toml) Invalid initial character for a key part (at line 3, column 21)
*182/187 (97.33%) passed*| ### Compliance with invalid tests in toml-test @@ -259,14 +259,14 @@ here: parsing error. -| |Result (toml-test v1.3.0)| +| |Result (toml-test v1.5.0)| |-|-----------------------| -|toml|Not OK: [key/start-dot.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/start-dot.toml) incorrectly parsed.
Not OK: [key/escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/escape.toml) incorrectly parsed.
Not OK: [key/special-character.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/special-character.toml) incorrectly parsed.
Not OK: [key/two-equals3.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/two-equals3.toml) incorrectly parsed.
Not OK: [key/two-equals2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/two-equals2.toml) incorrectly parsed.
Not OK: [inline-table/add.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/inline-table/add.toml) incorrectly parsed.
Not OK: [array/no-close-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/array/no-close-2.toml) incorrectly parsed.
Not OK: [array/tables-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/array/tables-1.toml) incorrectly parsed.
Not OK: [array/no-close.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/array/no-close.toml) incorrectly parsed.
Not OK: [array/extending-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/array/extending-table.toml) incorrectly parsed.
Not OK: *39 more items incorrectly parsed.*
*188/237 (79.32%) passed*| -|tomli/tomli_w|OK: [datetime/mday-under.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/datetime/mday-under.toml) Expected newline or end of document after a statement (at line 3, column 9)
*237/237 (100%) passed*| -|tomlkit|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/append-with-dotted-keys-2.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
*233/237 (98.31%) passed*| -|pytomlpp|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
*235/237 (99.16%) passed*| -|rtoml|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [integer/positive-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/positive-hex.toml) incorrectly parsed.
Not OK: [integer/positive-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/positive-bin.toml) incorrectly parsed.
*232/237 (97.89%) passed*| -|qtoml|Not OK: [inline-table/trailing-comma.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/inline-table/trailing-comma.toml) incorrectly parsed.
Not OK: [inline-table/add.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/inline-table/add.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-us.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/duplicate-key-dotted-table.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/duplicate-key-dotted-table2.toml) incorrectly parsed.
Not OK: *2 more items incorrectly parsed.*
*225/237 (94.94%) passed*| +|toml|Not OK: [integer/double-sign-plus.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/double-sign-plus.toml) incorrectly parsed.
Not OK: [integer/us-after-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/us-after-bin.toml) incorrectly parsed.
Not OK: [integer/double-sign-nex.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/double-sign-nex.toml) incorrectly parsed.
Not OK: [integer/us-after-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/us-after-hex.toml) incorrectly parsed.
Not OK: [integer/us-after-oct.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/us-after-oct.toml) incorrectly parsed.
Not OK: [spec/inline-table-2-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/spec/inline-table-2-0.toml) incorrectly parsed.
Not OK: [datetime/offset-overflow-minute.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/datetime/offset-overflow-minute.toml) incorrectly parsed.
Not OK: [datetime/offset-overflow-hour.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/datetime/offset-overflow-hour.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/string-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/string-del.toml) incorrectly parsed.
Not OK: *63 more items incorrectly parsed.*
*298/371 (80.32%) passed*| +|tomli/tomli_w|OK: [inline-table/linebreak-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/inline-table/linebreak-1.toml) Unclosed inline table (at line 3, column 18)
*371/371 (100%) passed*| +|tomlkit|Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/multi-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/multi-cr.toml) incorrectly parsed.
Not OK: [control/rawmulti-cd.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/rawmulti-cd.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
Not OK: [table/overwrite-array-in-parent.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/table/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [table/append-to-array-with-dotted-keys.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/table/append-to-array-with-dotted-keys.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/table/append-with-dotted-keys-2.toml) incorrectly parsed.
Not OK: [array/extend-defined-aot.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/array/extend-defined-aot.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-09.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/inline-table/overwrite-09.toml) incorrectly parsed.
*361/371 (97.30%) passed*| +|rtoml|Not OK: [integer/positive-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/positive-hex.toml) incorrectly parsed.
Not OK: [integer/positive-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/positive-bin.toml) incorrectly parsed.
Not OK: [integer/positive-oct.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/positive-oct.toml) incorrectly parsed.
Not OK: [datetime/offset-overflow-minute.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/datetime/offset-overflow-minute.toml) incorrectly parsed.
Not OK: [datetime/offset-overflow-hour.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/datetime/offset-overflow-hour.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/multi-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/multi-cr.toml) incorrectly parsed.
Not OK: [control/rawmulti-cd.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/rawmulti-cd.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
*361/371 (97.30%) passed*| +|qtoml|Not OK: [spec/inline-table-2-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/spec/inline-table-2-0.toml) incorrectly parsed.
Not OK: [spec/table-9-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/spec/table-9-1.toml) incorrectly parsed.
Not OK: [spec/table-9-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/spec/table-9-0.toml) incorrectly parsed.
Not OK: [datetime/offset-overflow-minute.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/datetime/offset-overflow-minute.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
Not OK: [control/comment-ff.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-ff.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/multi-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/multi-cr.toml) incorrectly parsed.
Not OK: *14 more items incorrectly parsed.*
*347/371 (93.53%) passed*| +|tomllib|OK: [inline-table/linebreak-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/inline-table/linebreak-1.toml) Unclosed inline table (at line 3, column 18)
*371/371 (100%) passed*| ### Compliance with valid tests in python tomllib test data @@ -279,14 +279,14 @@ The tests come up with a JSON counterpart that can be used to valid whether loading the toml file yields the same result as the JSON counterpart. -| |Result (cpython tag 3.11.0)| +| |Result (cpython tag 3.12.4)| |-|-----------------------| -|toml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Unbalanced quotes (line 1 column 50 char 49)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/five-quotes.toml) Unterminated string found. Reached end of file. (line 7 column 1 char 97)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Parsed as unexpected data.
[multiline-basic-str/ends-in-whitespace-escape.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/multiline-basic-str/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
*8/12 (66.67%) passed*| +|toml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Unbalanced quotes (line 1 column 50 char 49)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/five-quotes.toml) Unterminated string found. Reached end of file. (line 7 column 1 char 97)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Parsed as unexpected data.
[multiline-basic-str/ends-in-whitespace-escape.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/multiline-basic-str/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
*8/12 (66.67%) passed*| |tomli/tomli_w|OK, *12/12 (100%) passed*| |tomlkit|OK, *12/12 (100%) passed*| -|pytomlpp|OK, *12/12 (100%) passed*| |rtoml|OK, *12/12 (100%) passed*| -|qtoml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Didn't find expected newline (line 3, column 3)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/five-quotes.toml) Didn't find expected newline (line 3, column 3)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Didn't find expected newline (line 1, column 19)
*9/12 (75.00%) passed*| +|qtoml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Didn't find expected newline (line 3, column 3)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/five-quotes.toml) Didn't find expected newline (line 3, column 3)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Didn't find expected newline (line 1, column 19)
*9/12 (75.00%) passed*| +|tomllib|OK, *12/12 (100%) passed*| ### Compliance with invalid tests in python tomllib test data @@ -300,31 +300,14 @@ for invalid toml files here: parsing error. -| |Result (cpython tag 3.11.0)| +| |Result (cpython tag 3.12.4)| |-|-----------------------| -|toml|Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [inline-table/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/unclosed-empty.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [array/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/unclosed-empty.toml) incorrectly parsed.
Not OK: [array/unclosed-after-item.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/unclosed-after-item.toml) incorrectly parsed.
Not OK: [array/file-end-after-val.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/file-end-after-val.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*41/50 (82.00%) passed*| -|tomli/tomli_w|OK: [multiline-basic-str/escape-only.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/escape-only.toml) Unterminated string (at end of document)
*50/50 (100%) passed*| -|tomlkit|Not OK: [inline-table/override-val-in-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/override-val-in-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-aot.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-aot.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [array-of-tables/overwrite-array-in-parent.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array-of-tables/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*44/50 (88.00%) passed*| -|pytomlpp|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| -|rtoml|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| -|qtoml|Not OK: [non-scalar-escaped.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/non-scalar-escaped.toml) incorrectly parsed.
Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [inline-table/override-val-with-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/override-val-with-table.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [table/redefine-2.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/table/redefine-2.toml) incorrectly parsed.
Not OK: [table/redefine-1.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/table/redefine-1.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*41/50 (82.00%) passed*| - -### Running speed with data provided by `pytomlpp` - -Test the speed of loading and dumping the loaded -using data provided by `pytomlpp` - -> https://github.com/bobfang1992/pytomlpp/raw/master/benchmark/data.toml - - -| |Loading speed|Dumping speed| -|-|-|-| -|toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|7.55s (1000 iterations)|3.11s (1000 iterations)| -|tomlkit|150.98s (1000 iterations)|2.14s (1000 iterations)| -|pytomlpp|1.41s (1000 iterations)|0.98s (1000 iterations)| -|rtoml|0.98s (1000 iterations)|values must be emitted before tables| -|qtoml|18.39s (1000 iterations)|4.75s (1000 iterations)| +|toml|Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [array/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/unclosed-empty.toml) incorrectly parsed.
Not OK: [array/file-end-after-val.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/file-end-after-val.toml) incorrectly parsed.
Not OK: [array/unclosed-after-item.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/unclosed-after-item.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [inline-table/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/unclosed-empty.toml) incorrectly parsed.
*41/50 (82.00%) passed*| +|tomli/tomli_w|OK: [inline-table/overwrite-implicitly.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-implicitly.toml) Cannot overwrite a value (at line 1, column 21)
*50/50 (100%) passed*| +|tomlkit|Not OK: [array-of-tables/overwrite-array-in-parent.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array-of-tables/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-aot.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-aot.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [inline-table/override-val-in-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/override-val-in-table.toml) incorrectly parsed.
*44/50 (88.00%) passed*| +|rtoml|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| +|qtoml|Not OK: [non-scalar-escaped.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/non-scalar-escaped.toml) incorrectly parsed.
Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [table/redefine-2.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/table/redefine-2.toml) incorrectly parsed.
Not OK: [table/redefine-1.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/table/redefine-1.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [inline-table/override-val-with-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/override-val-with-table.toml) incorrectly parsed.
*41/50 (82.00%) passed*| +|tomllib|OK: [inline-table/overwrite-implicitly.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-implicitly.toml) Cannot overwrite a value (at line 1, column 21)
*50/50 (100%) passed*| ### Running speed with data provided by `rtoml` @@ -337,11 +320,11 @@ provided by `rtoml` | |Loading speed|Dumping speed| |-|-|-| |toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|1.56s (1000 iterations)|0.55s (1000 iterations)| -|tomlkit|29.90s (1000 iterations)|0.75s (1000 iterations)| -|pytomlpp|0.24s (1000 iterations)|0.19s (1000 iterations)| -|rtoml|0.19s (1000 iterations)|0.05s (1000 iterations)| -|qtoml|4.57s (1000 iterations)|1.26s (1000 iterations)| +|tomli/tomli_w|2.14s (5000 iterations)|0.74s (5000 iterations)| +|tomlkit|40.28s (5000 iterations)|1.01s (5000 iterations)| +|rtoml|0.38s (5000 iterations)|0.09s (5000 iterations)| +|qtoml|5.04s (5000 iterations)|1.92s (5000 iterations)| +|tomllib|2.05s (5000 iterations)|Dumping not supported| ### Running speed with data provided by `tomli` @@ -354,20 +337,19 @@ provided by `tomli` | |Loading speed|Dumping speed| |-|-|-| |toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|1.11s (1000 iterations)|0.38s (1000 iterations)| -|tomlkit|19.39s (1000 iterations)|0.37s (1000 iterations)| -|pytomlpp|0.25s (1000 iterations)|0.18s (1000 iterations)| -|rtoml|0.20s (1000 iterations)|0.11s (1000 iterations)| -|qtoml|3.61s (1000 iterations)|0.94s (1000 iterations)| +|tomli/tomli_w|1.40s (5000 iterations)|0.46s (5000 iterations)| +|tomlkit|26.10s (5000 iterations)|0.52s (5000 iterations)| +|rtoml|0.32s (5000 iterations)|0.17s (5000 iterations)| +|qtoml|3.72s (5000 iterations)|1.33s (5000 iterations)| +|tomllib|1.50s (5000 iterations)|Dumping not supported| ## Other reports +- [Tests with `toml-test` v1.4.0](./reports/with_toml-test_v1.4.0.md) +- [Tests with `toml-test` v1.3.0](./reports/with_toml-test_v1.3.0.md) - [Tests with `toml-test` v1.2.0](./reports/with_toml-test_v1.2.0.md) -- [Tests with `toml-test` v1.1.0](./reports/with_toml-test_v1.1.0.md) -- [Tests with `toml-test` v1.0.0](./reports/with_toml-test_v1.0.0.md) -- [Tests with python 3.11 (`tomllib` included)](./reports/with_python3.11.md) ## Run your own report diff --git a/README.raw.md b/README.raw.md index 2d04b81..0ba2ffc 100644 --- a/README.raw.md +++ b/README.raw.md @@ -10,10 +10,9 @@ See also: [toml-lang](https://toml.io/en/) and [PEP 680](https://www.python.org/ ## Other reports +- [Tests with `toml-test` v1.4.0](./reports/with_toml-test_v1.4.0.md) +- [Tests with `toml-test` v1.3.0](./reports/with_toml-test_v1.3.0.md) - [Tests with `toml-test` v1.2.0](./reports/with_toml-test_v1.2.0.md) -- [Tests with `toml-test` v1.1.0](./reports/with_toml-test_v1.1.0.md) -- [Tests with `toml-test` v1.0.0](./reports/with_toml-test_v1.0.0.md) -- [Tests with python 3.11 (`tomllib` included)](./reports/with_python3.11.md) ## Run your own report diff --git a/poetry.lock b/poetry.lock index b5fdaf5..3e84392 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,18 @@ -# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. + +[[package]] +name = "argx" +version = "0.2.10" +description = "Super-charged argparse for python" +optional = false +python-versions = ">=3.7,<4.0" +files = [ + {file = "argx-0.2.10-py3-none-any.whl", hash = "sha256:85c6b150c5ec86dd5aefaca260dcf8bd8445a3c6d174eaaacb5835638d207083"}, + {file = "argx-0.2.10.tar.gz", hash = "sha256:72ab5511163870eeb589c007fb11cb2c5cc91b9faa553ed45e7404f6c1e7a238"}, +] + +[package.dependencies] +python-simpleconf = ">=0.6,<0.7" [[package]] name = "attrs" @@ -55,13 +69,13 @@ files = [ [[package]] name = "diot" -version = "0.1.8" +version = "0.2.3" description = "Python dictionary with dot notation." optional = false python-versions = ">=3.7,<4.0" files = [ - {file = "diot-0.1.8-py3-none-any.whl", hash = "sha256:f2d7d2f121e8a60cd06b7d1b476765e25c37002d0db44e0f5ef72dca98d22640"}, - {file = "diot-0.1.8.tar.gz", hash = "sha256:21408f8a09628bfb8c88791eaab1558a71692adff4e237c96b4b31a54d3cb2f5"}, + {file = "diot-0.2.3-py3-none-any.whl", hash = "sha256:defd4556bd961327cbfd497f63fcb9d0d79a649bbc8932f26d94dd25a7832e1c"}, + {file = "diot-0.2.3.tar.gz", hash = "sha256:0b8ccbe3813acda67665ea9025d4eea7f73b2df4e2ab16c5c3f1da8b0dbba4cf"}, ] [package.dependencies] @@ -69,22 +83,22 @@ inflection = ">=0.5,<0.6" [[package]] name = "importlib-metadata" -version = "5.2.0" +version = "7.2.1" description = "Read metadata from Python packages" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "importlib_metadata-5.2.0-py3-none-any.whl", hash = "sha256:0eafa39ba42bf225fc00e67f701d71f85aead9f878569caf13c3724f704b970f"}, - {file = "importlib_metadata-5.2.0.tar.gz", hash = "sha256:404d48d62bba0b7a77ff9d405efd91501bef2e67ff4ace0bed40a0cf28c3c7cd"}, + {file = "importlib_metadata-7.2.1-py3-none-any.whl", hash = "sha256:ffef94b0b66046dd8ea2d619b701fe978d9264d38f3998bc4c27ec3b146a87c8"}, + {file = "importlib_metadata-7.2.1.tar.gz", hash = "sha256:509ecb2ab77071db5137c655e24ceb3eee66e7bbc6574165d0d114d9fc4bbe68"}, ] [package.dependencies] zipp = ">=0.5" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] perf = ["ipython"] -testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)"] +test = ["flufl.flake8", "importlib-resources (>=1.3)", "jaraco.test (>=5.4)", "packaging", "pyfakefs", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-mypy", "pytest-perf (>=0.9.2)", "pytest-ruff (>=0.2.1)"] [[package]] name = "inflection" @@ -97,80 +111,15 @@ files = [ {file = "inflection-0.5.1.tar.gz", hash = "sha256:1a29730d366e996aaacffb2f1f1cb9593dc38e2ddd30c91250c6dde09ea9b417"}, ] -[[package]] -name = "markdown-it-py" -version = "3.0.0" -description = "Python port of markdown-it. Markdown parsing, done right!" -optional = false -python-versions = ">=3.8" -files = [ - {file = "markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb"}, - {file = "markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1"}, -] - -[package.dependencies] -mdurl = ">=0.1,<1.0" - -[package.extras] -benchmarking = ["psutil", "pytest", "pytest-benchmark"] -code-style = ["pre-commit (>=3.0,<4.0)"] -compare = ["commonmark (>=0.9,<1.0)", "markdown (>=3.4,<4.0)", "mistletoe (>=1.0,<2.0)", "mistune (>=2.0,<3.0)", "panflute (>=2.3,<3.0)"] -linkify = ["linkify-it-py (>=1,<3)"] -plugins = ["mdit-py-plugins"] -profiling = ["gprof2dot"] -rtd = ["jupyter_sphinx", "mdit-py-plugins", "myst-parser", "pyyaml", "sphinx", "sphinx-copybutton", "sphinx-design", "sphinx_book_theme"] -testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"] - -[[package]] -name = "mdurl" -version = "0.1.2" -description = "Markdown URL utilities" -optional = false -python-versions = ">=3.7" -files = [ - {file = "mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8"}, - {file = "mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba"}, -] - -[[package]] -name = "pygments" -version = "2.16.1" -description = "Pygments is a syntax highlighting package written in Python." -optional = false -python-versions = ">=3.7" -files = [ - {file = "Pygments-2.16.1-py3-none-any.whl", hash = "sha256:13fc09fa63bc8d8671a6d247e1eb303c4b343eaee81d861f3404db2935653692"}, - {file = "Pygments-2.16.1.tar.gz", hash = "sha256:1daff0494820c69bc8941e407aa20f577374ee88364ee10a98fdbe0aece96e29"}, -] - -[package.extras] -plugins = ["importlib-metadata"] - -[[package]] -name = "pyparam" -version = "0.5.4" -description = "Powerful parameter processing." -optional = false -python-versions = ">=3.7,<4.0" -files = [ - {file = "pyparam-0.5.4-py3-none-any.whl", hash = "sha256:1fc94f0aa4914274dcf07c8ae270470ef63b36efd31bc2a38ba22ab00de35a14"}, - {file = "pyparam-0.5.4.tar.gz", hash = "sha256:5513742f9668429d42e7b0acaf02c6ae868466b048ff91f1241f0c6d067a0af5"}, -] - -[package.dependencies] -diot = ">=0.1,<0.2" -python-simpleconf = ">=0.5,<0.6" -rich = ">=13,<14" - [[package]] name = "python-dateutil" -version = "2.8.2" +version = "2.9.0.post0" description = "Extensions to the standard Python datetime module" optional = false python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" files = [ - {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, - {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, + {file = "python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3"}, + {file = "python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427"}, ] [package.dependencies] @@ -178,23 +127,23 @@ six = ">=1.5" [[package]] name = "python-simpleconf" -version = "0.5.7" +version = "0.6.0" description = "Simple configuration management with python." optional = false python-versions = ">=3.7,<4.0" files = [ - {file = "python-simpleconf-0.5.7.tar.gz", hash = "sha256:e8c41be99cc835d59efe6a0d1617cffcfa6c7661142c5299d7ae39ecc06b3f14"}, - {file = "python_simpleconf-0.5.7-py3-none-any.whl", hash = "sha256:e44f2ef56ee931607f2e6a836e5a3b77457abea8dc0e536e8ba8403751f07b2c"}, + {file = "python_simpleconf-0.6.0-py3-none-any.whl", hash = "sha256:40e73fbd60d84ff45d22fcd8f7e2ade5fcca65559f8d9865e7750d8bcfadd209"}, + {file = "python_simpleconf-0.6.0.tar.gz", hash = "sha256:06c29e0c08e22a41024028c46cd845bdfe3cbba402730fa65fb007fa89315801"}, ] [package.dependencies] -diot = ">=0.1,<0.2" +diot = ">=0.2.1,<0.3.0" [package.extras] -all = ["iniconfig (>=1.1,<2.0)", "python-dotenv (>=0.20,<0.21)", "pyyaml (>=6,<7)", "rtoml (>=0.8,<0.9)"] -env = ["python-dotenv (>=0.20,<0.21)"] -ini = ["iniconfig (>=1.1,<2.0)"] -toml = ["rtoml (>=0.8,<0.9)"] +all = ["iniconfig (>=2.0,<3.0)", "python-dotenv (>=0.21,<0.22)", "pyyaml (>=6,<7)", "rtoml (>=0.8,<0.9)", "tomli (>=2.0,<3.0)"] +env = ["python-dotenv (>=0.21,<0.22)"] +ini = ["iniconfig (>=2.0,<3.0)"] +toml = ["rtoml (>=0.8,<0.9)", "tomli (>=2.0,<3.0)"] yaml = ["pyyaml (>=6,<7)"] [[package]] @@ -280,177 +229,162 @@ click = ">=7.0,<9.0" [[package]] name = "regex" -version = "2022.10.31" +version = "2024.5.15" description = "Alternative regular expression module, to replace re." optional = false -python-versions = ">=3.6" +python-versions = ">=3.8" files = [ - {file = "regex-2022.10.31-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f"}, - {file = "regex-2022.10.31-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9"}, - {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b"}, - {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57"}, - {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4"}, - {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001"}, - {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90"}, - {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144"}, - {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc"}, - {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66"}, - {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af"}, - {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc"}, - {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66"}, - {file = "regex-2022.10.31-cp310-cp310-win32.whl", hash = "sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1"}, - {file = "regex-2022.10.31-cp310-cp310-win_amd64.whl", hash = "sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5"}, - {file = "regex-2022.10.31-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe"}, - {file = "regex-2022.10.31-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542"}, - {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7"}, - {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e"}, - {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c"}, - {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1"}, - {file = "regex-2022.10.31-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4"}, - {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f"}, - {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5"}, - {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c"}, - {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c"}, - {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7"}, - {file = "regex-2022.10.31-cp311-cp311-win32.whl", hash = "sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af"}, - {file = "regex-2022.10.31-cp311-cp311-win_amd64.whl", hash = "sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61"}, - {file = "regex-2022.10.31-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd"}, - {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b"}, - {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81"}, - {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c"}, - {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54"}, - {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5"}, - {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443"}, - {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742"}, - {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e"}, - {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa"}, - {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e"}, - {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4"}, - {file = "regex-2022.10.31-cp36-cp36m-win32.whl", hash = "sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066"}, - {file = "regex-2022.10.31-cp36-cp36m-win_amd64.whl", hash = "sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6"}, - {file = "regex-2022.10.31-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8"}, - {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783"}, - {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347"}, - {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93"}, - {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6"}, - {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11"}, - {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec"}, - {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9"}, - {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1"}, - {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8"}, - {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5"}, - {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95"}, - {file = "regex-2022.10.31-cp37-cp37m-win32.whl", hash = "sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394"}, - {file = "regex-2022.10.31-cp37-cp37m-win_amd64.whl", hash = "sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0"}, - {file = "regex-2022.10.31-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d"}, - {file = "regex-2022.10.31-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8"}, - {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad"}, - {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee"}, - {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714"}, - {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e"}, - {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6"}, - {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318"}, - {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff"}, - {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a"}, - {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73"}, - {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d"}, - {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c"}, - {file = "regex-2022.10.31-cp38-cp38-win32.whl", hash = "sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc"}, - {file = "regex-2022.10.31-cp38-cp38-win_amd64.whl", hash = "sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453"}, - {file = "regex-2022.10.31-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49"}, - {file = "regex-2022.10.31-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b"}, - {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc"}, - {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244"}, - {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690"}, - {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185"}, - {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7"}, - {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4"}, - {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5"}, - {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1"}, - {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8"}, - {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8"}, - {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892"}, - {file = "regex-2022.10.31-cp39-cp39-win32.whl", hash = "sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1"}, - {file = "regex-2022.10.31-cp39-cp39-win_amd64.whl", hash = "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692"}, - {file = "regex-2022.10.31.tar.gz", hash = "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a81e3cfbae20378d75185171587cbf756015ccb14840702944f014e0d93ea09f"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:7b59138b219ffa8979013be7bc85bb60c6f7b7575df3d56dc1e403a438c7a3f6"}, + {file = "regex-2024.5.15-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a0bd000c6e266927cb7a1bc39d55be95c4b4f65c5be53e659537537e019232b1"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5eaa7ddaf517aa095fa8da0b5015c44d03da83f5bd49c87961e3c997daed0de7"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ba68168daedb2c0bab7fd7e00ced5ba90aebf91024dea3c88ad5063c2a562cca"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e8d717bca3a6e2064fc3a08df5cbe366369f4b052dcd21b7416e6d71620dca1"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1337b7dbef9b2f71121cdbf1e97e40de33ff114801263b275aafd75303bd62b5"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f9ebd0a36102fcad2f03696e8af4ae682793a5d30b46c647eaf280d6cfb32796"}, + {file = "regex-2024.5.15-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:9efa1a32ad3a3ea112224897cdaeb6aa00381627f567179c0314f7b65d354c62"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:1595f2d10dff3d805e054ebdc41c124753631b6a471b976963c7b28543cf13b0"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b802512f3e1f480f41ab5f2cfc0e2f761f08a1f41092d6718868082fc0d27143"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:a0981022dccabca811e8171f913de05720590c915b033b7e601f35ce4ea7019f"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:19068a6a79cf99a19ccefa44610491e9ca02c2be3305c7760d3831d38a467a6f"}, + {file = "regex-2024.5.15-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1b5269484f6126eee5e687785e83c6b60aad7663dafe842b34691157e5083e53"}, + {file = "regex-2024.5.15-cp310-cp310-win32.whl", hash = "sha256:ada150c5adfa8fbcbf321c30c751dc67d2f12f15bd183ffe4ec7cde351d945b3"}, + {file = "regex-2024.5.15-cp310-cp310-win_amd64.whl", hash = "sha256:ac394ff680fc46b97487941f5e6ae49a9f30ea41c6c6804832063f14b2a5a145"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f5b1dff3ad008dccf18e652283f5e5339d70bf8ba7c98bf848ac33db10f7bc7a"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c6a2b494a76983df8e3d3feea9b9ffdd558b247e60b92f877f93a1ff43d26656"}, + {file = "regex-2024.5.15-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a32b96f15c8ab2e7d27655969a23895eb799de3665fa94349f3b2fbfd547236f"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10002e86e6068d9e1c91eae8295ef690f02f913c57db120b58fdd35a6bb1af35"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec54d5afa89c19c6dd8541a133be51ee1017a38b412b1321ccb8d6ddbeb4cf7d"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:10e4ce0dca9ae7a66e6089bb29355d4432caed736acae36fef0fdd7879f0b0cb"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e507ff1e74373c4d3038195fdd2af30d297b4f0950eeda6f515ae3d84a1770f"}, + {file = "regex-2024.5.15-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d1f059a4d795e646e1c37665b9d06062c62d0e8cc3c511fe01315973a6542e40"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0721931ad5fe0dda45d07f9820b90b2148ccdd8e45bb9e9b42a146cb4f695649"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:833616ddc75ad595dee848ad984d067f2f31be645d603e4d158bba656bbf516c"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:287eb7f54fc81546346207c533ad3c2c51a8d61075127d7f6d79aaf96cdee890"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:19dfb1c504781a136a80ecd1fff9f16dddf5bb43cec6871778c8a907a085bb3d"}, + {file = "regex-2024.5.15-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:119af6e56dce35e8dfb5222573b50c89e5508d94d55713c75126b753f834de68"}, + {file = "regex-2024.5.15-cp311-cp311-win32.whl", hash = "sha256:1c1c174d6ec38d6c8a7504087358ce9213d4332f6293a94fbf5249992ba54efa"}, + {file = "regex-2024.5.15-cp311-cp311-win_amd64.whl", hash = "sha256:9e717956dcfd656f5055cc70996ee2cc82ac5149517fc8e1b60261b907740201"}, + {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:632b01153e5248c134007209b5c6348a544ce96c46005d8456de1d552455b014"}, + {file = "regex-2024.5.15-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:e64198f6b856d48192bf921421fdd8ad8eb35e179086e99e99f711957ffedd6e"}, + {file = "regex-2024.5.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:68811ab14087b2f6e0fc0c2bae9ad689ea3584cad6917fc57be6a48bbd012c49"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8ec0c2fea1e886a19c3bee0cd19d862b3aa75dcdfb42ebe8ed30708df64687a"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0c0c0003c10f54a591d220997dd27d953cd9ccc1a7294b40a4be5312be8797b"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2431b9e263af1953c55abbd3e2efca67ca80a3de8a0437cb58e2421f8184717a"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4a605586358893b483976cffc1723fb0f83e526e8f14c6e6614e75919d9862cf"}, + {file = "regex-2024.5.15-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:391d7f7f1e409d192dba8bcd42d3e4cf9e598f3979cdaed6ab11288da88cb9f2"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9ff11639a8d98969c863d4617595eb5425fd12f7c5ef6621a4b74b71ed8726d5"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:4eee78a04e6c67e8391edd4dad3279828dd66ac4b79570ec998e2155d2e59fd5"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:8fe45aa3f4aa57faabbc9cb46a93363edd6197cbc43523daea044e9ff2fea83e"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:d0a3d8d6acf0c78a1fff0e210d224b821081330b8524e3e2bc5a68ef6ab5803d"}, + {file = "regex-2024.5.15-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c486b4106066d502495b3025a0a7251bf37ea9540433940a23419461ab9f2a80"}, + {file = "regex-2024.5.15-cp312-cp312-win32.whl", hash = "sha256:c49e15eac7c149f3670b3e27f1f28a2c1ddeccd3a2812cba953e01be2ab9b5fe"}, + {file = "regex-2024.5.15-cp312-cp312-win_amd64.whl", hash = "sha256:673b5a6da4557b975c6c90198588181029c60793835ce02f497ea817ff647cb2"}, + {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:87e2a9c29e672fc65523fb47a90d429b70ef72b901b4e4b1bd42387caf0d6835"}, + {file = "regex-2024.5.15-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:c3bea0ba8b73b71b37ac833a7f3fd53825924165da6a924aec78c13032f20850"}, + {file = "regex-2024.5.15-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:bfc4f82cabe54f1e7f206fd3d30fda143f84a63fe7d64a81558d6e5f2e5aaba9"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e5bb9425fe881d578aeca0b2b4b3d314ec88738706f66f219c194d67179337cb"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64c65783e96e563103d641760664125e91bd85d8e49566ee560ded4da0d3e704"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf2430df4148b08fb4324b848672514b1385ae3807651f3567871f130a728cc3"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5397de3219a8b08ae9540c48f602996aa6b0b65d5a61683e233af8605c42b0f2"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:455705d34b4154a80ead722f4f185b04c4237e8e8e33f265cd0798d0e44825fa"}, + {file = "regex-2024.5.15-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b2b6f1b3bb6f640c1a92be3bbfbcb18657b125b99ecf141fb3310b5282c7d4ed"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_aarch64.whl", hash = "sha256:3ad070b823ca5890cab606c940522d05d3d22395d432f4aaaf9d5b1653e47ced"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_i686.whl", hash = "sha256:5b5467acbfc153847d5adb21e21e29847bcb5870e65c94c9206d20eb4e99a384"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_ppc64le.whl", hash = "sha256:e6662686aeb633ad65be2a42b4cb00178b3fbf7b91878f9446075c404ada552f"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_s390x.whl", hash = "sha256:2b4c884767504c0e2401babe8b5b7aea9148680d2e157fa28f01529d1f7fcf67"}, + {file = "regex-2024.5.15-cp38-cp38-musllinux_1_2_x86_64.whl", hash = "sha256:3cd7874d57f13bf70078f1ff02b8b0aa48d5b9ed25fc48547516c6aba36f5741"}, + {file = "regex-2024.5.15-cp38-cp38-win32.whl", hash = "sha256:e4682f5ba31f475d58884045c1a97a860a007d44938c4c0895f41d64481edbc9"}, + {file = "regex-2024.5.15-cp38-cp38-win_amd64.whl", hash = "sha256:d99ceffa25ac45d150e30bd9ed14ec6039f2aad0ffa6bb87a5936f5782fc1569"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:13cdaf31bed30a1e1c2453ef6015aa0983e1366fad2667657dbcac7b02f67133"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:cac27dcaa821ca271855a32188aa61d12decb6fe45ffe3e722401fe61e323cd1"}, + {file = "regex-2024.5.15-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:7dbe2467273b875ea2de38ded4eba86cbcbc9a1a6d0aa11dcf7bd2e67859c435"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:64f18a9a3513a99c4bef0e3efd4c4a5b11228b48aa80743be822b71e132ae4f5"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d347a741ea871c2e278fde6c48f85136c96b8659b632fb57a7d1ce1872547600"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1878b8301ed011704aea4c806a3cadbd76f84dece1ec09cc9e4dc934cfa5d4da"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4babf07ad476aaf7830d77000874d7611704a7fcf68c9c2ad151f5d94ae4bfc4"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:35cb514e137cb3488bce23352af3e12fb0dbedd1ee6e60da053c69fb1b29cc6c"}, + {file = "regex-2024.5.15-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:cdd09d47c0b2efee9378679f8510ee6955d329424c659ab3c5e3a6edea696294"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:72d7a99cd6b8f958e85fc6ca5b37c4303294954eac1376535b03c2a43eb72629"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:a094801d379ab20c2135529948cb84d417a2169b9bdceda2a36f5f10977ebc16"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_ppc64le.whl", hash = "sha256:c0c18345010870e58238790a6779a1219b4d97bd2e77e1140e8ee5d14df071aa"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_s390x.whl", hash = "sha256:16093f563098448ff6b1fa68170e4acbef94e6b6a4e25e10eae8598bb1694b5d"}, + {file = "regex-2024.5.15-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:e38a7d4e8f633a33b4c7350fbd8bad3b70bf81439ac67ac38916c4a86b465456"}, + {file = "regex-2024.5.15-cp39-cp39-win32.whl", hash = "sha256:71a455a3c584a88f654b64feccc1e25876066c4f5ef26cd6dd711308aa538694"}, + {file = "regex-2024.5.15-cp39-cp39-win_amd64.whl", hash = "sha256:cab12877a9bdafde5500206d1020a584355a97884dfd388af3699e9137bf7388"}, + {file = "regex-2024.5.15.tar.gz", hash = "sha256:d3ee02d9e5f482cc8309134a91eeaacbdd2261ba111b0fef3748eeb4913e6a2c"}, ] -[[package]] -name = "rich" -version = "13.5.3" -description = "Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal" -optional = false -python-versions = ">=3.7.0" -files = [ - {file = "rich-13.5.3-py3-none-any.whl", hash = "sha256:9257b468badc3d347e146a4faa268ff229039d4c2d176ab0cffb4c4fbc73d5d9"}, - {file = "rich-13.5.3.tar.gz", hash = "sha256:87b43e0543149efa1253f485cd845bb7ee54df16c9617b8a893650ab84b4acb6"}, -] - -[package.dependencies] -markdown-it-py = ">=2.2.0" -pygments = ">=2.13.0,<3.0.0" - -[package.extras] -jupyter = ["ipywidgets (>=7.5.1,<9)"] - [[package]] name = "rtoml" -version = "0.9.0" +version = "0.11.0" description = "" optional = false -python-versions = ">=3.7" +python-versions = ">=3.8" files = [ - {file = "rtoml-0.9.0-cp310-cp310-macosx_10_7_x86_64.whl", hash = "sha256:b440445df3a5bdd30f70196305c964699fb8c6a23dfe08b9b0a822a8c3a1da00"}, - {file = "rtoml-0.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4e00c085841c215868b5c3d607ae7076bad4faf6cc00bf9da334c0683b2001a9"}, - {file = "rtoml-0.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d66f145fca240150d54334b1779edbc713a2b2b0547c703a9b441b94f05cec14"}, - {file = "rtoml-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:38ed7487251aed9f118949d49e0edff2ace2f979ef7d23adf174bcb30983627a"}, - {file = "rtoml-0.9.0-cp310-cp310-manylinux_2_24_armv7l.whl", hash = "sha256:a500481c61b0babb438b1d4c0a295ba60a0c890688431db980e3209d7c093045"}, - {file = "rtoml-0.9.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9826a25e7c274fbcfa1518f1e1c99104f10ba553b34be38dcd31b6c9d5207e47"}, - {file = "rtoml-0.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2dff4812186dff9381459d6a962e8dfd909ea8cb03f98ba28aa486b9bf8d72f8"}, - {file = "rtoml-0.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7a6088f6e77817389720ed8852ec2493b4524c96bd25f3aafe217e2a6cb29f7d"}, - {file = "rtoml-0.9.0-cp310-none-win32.whl", hash = "sha256:38362ab6123a28e2f1f88995f286b999fc6f7c27896f402ee293de2a090b305c"}, - {file = "rtoml-0.9.0-cp310-none-win_amd64.whl", hash = "sha256:f920b97df9b33c18d3857dbd4af234e2a7f3372de3cfb4c0d8514e66ffd4dfdb"}, - {file = "rtoml-0.9.0-cp311-cp311-macosx_10_7_x86_64.whl", hash = "sha256:91a25c5ab2a518b5126a52300d1a6ced0e363510e9b6e64cb36b19275083b441"}, - {file = "rtoml-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:85d8abf6eb1da262a26f15d97de6ec83960172095e627dadf1ee7a32b70a367b"}, - {file = "rtoml-0.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:363d41f1f69d415ced4c6be8c5feb6680c2330406ca2f0ba8ea04318857b8ca3"}, - {file = "rtoml-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e31bec5a3d7b56966130ba2a68be7bef608822063ff8b9a6362c5001a2a4c82b"}, - {file = "rtoml-0.9.0-cp311-cp311-manylinux_2_24_armv7l.whl", hash = "sha256:9eb42c8af0300c0e3c11057a7ace894247f3f9d265b10bedde72e1008bf09634"}, - {file = "rtoml-0.9.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:604782f36701d8b7df9b7f928e054e2a62dde828860e828377b2c8db550afb28"}, - {file = "rtoml-0.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:13dc836d84fe987ddc00b6ec8683002eb53ffa59dc13d5a9ef51a1409539bea7"}, - {file = "rtoml-0.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:2f4e7841ab7cbdfaa15cbc5f0b049b154a68644fa39fc27a1f72a0dc23012e40"}, - {file = "rtoml-0.9.0-cp311-none-win32.whl", hash = "sha256:9ca09643e9ffdebcbb27a095ffca86e32c3fb0a63c8788c5d40890065962eb65"}, - {file = "rtoml-0.9.0-cp311-none-win_amd64.whl", hash = "sha256:5c91c99f5646e81c677133b3740a8e6b25cbe6fbf33fefd749c85e031f7716b9"}, - {file = "rtoml-0.9.0-cp37-cp37m-macosx_10_7_x86_64.whl", hash = "sha256:9c3f0b1b6c70e7d9ef29b3b2412412f2be10b333da3aeac74c6f69961b955272"}, - {file = "rtoml-0.9.0-cp37-cp37m-macosx_11_0_arm64.whl", hash = "sha256:37c7d3903d818b2770f2ad424b1aee3c47533f1cdccb037b2a51e47a89d2de30"}, - {file = "rtoml-0.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4a79400cde1a6d75e6f36498a3b6d86b6713bf757989ab304c1c3e6a610d0665"}, - {file = "rtoml-0.9.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb48915dc12f18dd680772f5c1f248197945ce639ca4a0897ee01878ada65411"}, - {file = "rtoml-0.9.0-cp37-cp37m-manylinux_2_24_armv7l.whl", hash = "sha256:cccac32cf08749fcf9e905e41c8cb58348fa4110459b09f49245a40553514871"}, - {file = "rtoml-0.9.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:ba96ee3afbc2cdfe90833f9f7d789aef7d9be1911ec0cd748c786c0b8cda0b98"}, - {file = "rtoml-0.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:a78d504d0d6598655f5d01eabe2df6d458ff2f9463a3c6f85a3e96a57cb61631"}, - {file = "rtoml-0.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e68c3a7a7388ae2dd586e3a20474908bc889fbe77809f06d46eec37c0c4b96ff"}, - {file = "rtoml-0.9.0-cp37-none-win32.whl", hash = "sha256:9fc3652e963150ace043c6797b5053c8a03341c1bd813c6d9ad7403bfa5d1138"}, - {file = "rtoml-0.9.0-cp37-none-win_amd64.whl", hash = "sha256:13ff304eb8e9be8702f8f9c7c561e5ebffcbb4e830d4ae3f2f9471d1c8a656fa"}, - {file = "rtoml-0.9.0-cp38-cp38-macosx_10_7_x86_64.whl", hash = "sha256:b99ec14d5bd8fc62a94acf1ce328d11cda1934f736d40baefdbb212333f25250"}, - {file = "rtoml-0.9.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:dc02f77bc81d1ade12bd983d46a1aa1ed4bc10418de0ac81267928b49f73cc9b"}, - {file = "rtoml-0.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ba38c4efcf639ec5df271c6debd6953a53be62087fff48bd7cd239553e01d66a"}, - {file = "rtoml-0.9.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1f2c8aa5c07c1b8886e27d34332e5be7e3b658d6a8d5f55227ff1e4014ac87f"}, - {file = "rtoml-0.9.0-cp38-cp38-manylinux_2_24_armv7l.whl", hash = "sha256:3b02257049dac81b0a7e333e7c35477939c016b39b444f849473650dd7c52410"}, - {file = "rtoml-0.9.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d6a95c1dcdb0dbb340fc67b35ef86a07f01ef4842d6bbcb883dcfefef87ac106"}, - {file = "rtoml-0.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:449701954ded52d885ac2f9f79b503c5aa1e2c6e7f0f6100ad4f46262c82dd66"}, - {file = "rtoml-0.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:9591699c1231dd9e615ec1b27933f1a4d8b8f57841e62d1f2aa109150da941ea"}, - {file = "rtoml-0.9.0-cp38-none-win32.whl", hash = "sha256:352fb220615c0904d77bf719c7f7e066dcf5a10ba118dc6cea8809424f858dad"}, - {file = "rtoml-0.9.0-cp38-none-win_amd64.whl", hash = "sha256:f780f90e3305b5e961dcc8f00c0d3bfa023d7626d64e8fa15c91f9ed6be6d10a"}, - {file = "rtoml-0.9.0-cp39-cp39-macosx_10_7_x86_64.whl", hash = "sha256:39e377e075af4f33a1c60cafdedcb02d7a4d7bf241e6c0bf76998c10ffc8222a"}, - {file = "rtoml-0.9.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:afead84d80f835a5d6194faf1cdae9ebee092dac68f25a69a8fecc0dc26d1720"}, - {file = "rtoml-0.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2c3973f1d22450d5eb3abad65f9c30167c8f6ce475615a9a6364903476b68b56"}, - {file = "rtoml-0.9.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7ea08ba5fc9a03a50e1e783266ff5b84fc81b3af5bf77cb5f190b5a516b53810"}, - {file = "rtoml-0.9.0-cp39-cp39-manylinux_2_24_armv7l.whl", hash = "sha256:ada33f7fc46b24f20e0219b659f3de15c09ea7209657e43770e2f5f0e95ab6ec"}, - {file = "rtoml-0.9.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f4cba47bf407642214a4aea349e91699ea67c6c07ebfa4412a2383837d295ccc"}, - {file = "rtoml-0.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:9f1ab9638aba4027e7cf007dd7f5d497b1bd6b643a7c24bbc09bba76843fa779"}, - {file = "rtoml-0.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:b43f61df97a74a4ebc216d9fdcefb1c631bfa98265655fcc0950fbe206054e8b"}, - {file = "rtoml-0.9.0-cp39-none-win32.whl", hash = "sha256:0eea8963824eb4be5d41c11a2e5dd51c6149f5274f015012f53dd82bf146a16b"}, - {file = "rtoml-0.9.0-cp39-none-win_amd64.whl", hash = "sha256:c539af5d88056a4d53a1f9067fee97bf6015edbb8e82fbde6ba96e19a1b41645"}, - {file = "rtoml-0.9.0.tar.gz", hash = "sha256:113f2e133d152d9424269c475b4a7d0679987078b543e88fcb16c870dc2c460d"}, + {file = "rtoml-0.11.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:bbea5538d8e7a495878717743225bf261b097b42b17558d7f6876ec8ff700649"}, + {file = "rtoml-0.11.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ec72c71ce1eec6a9a75a59c914644a92afed55625f88086418c8f610646f6c31"}, + {file = "rtoml-0.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4161c01ee5cbf173382d4a55b26fc0d4a00ce68b9252c51cf6ee1a7b15d7922b"}, + {file = "rtoml-0.11.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ca19e750d2becefe482bd4ddcc3395816a0d1e69fbc562a18a0fe2f4b688ec70"}, + {file = "rtoml-0.11.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:398a17548248d06844e125fd748f5fd507819652866e833db4114bd32fda30f6"}, + {file = "rtoml-0.11.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cb4c11a82a5ae89a4f5793dceed93e186032f1588e8f7ab3ebc48b8b54665a92"}, + {file = "rtoml-0.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:384a580433edf011d8cdc683996866d0809721b7b9ab055c279a4bd51b5c7300"}, + {file = "rtoml-0.11.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:c55295fac0e18af5a7b91dc8a308dd50fe0dbf26e439a86ff674290823ed010d"}, + {file = "rtoml-0.11.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b00ea0a3f14af57f1bdbb89b71f59c912d4682f9aa6a1a3a6729d210a599c64f"}, + {file = "rtoml-0.11.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2bde7832c792a95d3c2f1a55833d5f5ae745c701ff0c09ad3e935146670403ed"}, + {file = "rtoml-0.11.0-cp310-none-win32.whl", hash = "sha256:dc350452dcdd69b5c247d6a6951f4253a5bec93b9da621da96ced4e1edc1d42d"}, + {file = "rtoml-0.11.0-cp310-none-win_amd64.whl", hash = "sha256:1836518858936ab435fff23805120760b759c7fa441d7150cdc6744d8d28e0ad"}, + {file = "rtoml-0.11.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:abf9a0f729040f99c7b1734c433919b19314843d0f1d597f2d82e448e210c60f"}, + {file = "rtoml-0.11.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:48a3504d58d9a0178947cf988841f2a771b63bb90155ad20ba4da93318ca2195"}, + {file = "rtoml-0.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56421e722d61ff09df0ae1d447ed1f8f109877281a091da1062165093bfe6291"}, + {file = "rtoml-0.11.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a1be1b24c51a0a79beaf13e69603a556a165f27c92c93d284408e44686f82fbc"}, + {file = "rtoml-0.11.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ec5837a2e0e0e3084d243914c11aff602f6840e5c07a7b2e1ca0c89464ed7079"}, + {file = "rtoml-0.11.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:765bb5f226f7694d66af39f23d79b65f6b30744ee1c1396acff303b772f4ba1d"}, + {file = "rtoml-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd6dfbc1830055290e8ee9f7ffb7465106536f54c1465e08c980c38147e3bcf4"}, + {file = "rtoml-0.11.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:068131643b18ee839f1d5798ef5b347d04e101b8b9398b774fc839e6231c63c7"}, + {file = "rtoml-0.11.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:042fc83c225b1075b6e717d156c4c7ecdab255127f875f6188fb062d72e59c5f"}, + {file = "rtoml-0.11.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:bcab62bbf210434dcab736c658911d0182afe33b3920b051978c04ca442504a9"}, + {file = "rtoml-0.11.0-cp311-none-win32.whl", hash = "sha256:8edbf3f0498287557a0a170c9a9331dfb69058729968578c37aad19977ba5722"}, + {file = "rtoml-0.11.0-cp311-none-win_amd64.whl", hash = "sha256:d5e3d8d73a220d06bf2359b13572bdbd198e66f45aeac1e84058e448dc34f85e"}, + {file = "rtoml-0.11.0-cp311-none-win_arm64.whl", hash = "sha256:806e3893555657012fe89774e62999e8cac50df53a7bd27f7c838f606397c3f7"}, + {file = "rtoml-0.11.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:34c4fd6e6465e6de84ac499e19ae3e4b0d4cd3f9763d1a72a75bd2ef4d0e466a"}, + {file = "rtoml-0.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0095bc482788d39c6c3e2f9f3a6f7a8149ee1cefe624129e2afc90512d8f16b7"}, + {file = "rtoml-0.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d90b06a36325c9ae6e273669d811aa0e6b8ae41fa9ffe3949f02ef1870dc0ad5"}, + {file = "rtoml-0.11.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:902148f2bd13b4c64d2c5ed576910c5a0a2c86dc052f4e31ca1855131ee157c8"}, + {file = "rtoml-0.11.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d84bbdad28e24f66b8ad632fb7cbec64b921fdff48bf57f4f7179648726f7e54"}, + {file = "rtoml-0.11.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4b1d4d4b8d765cf5228e5def9c39837d5b70c6e51422e05b975898c8a765fd1e"}, + {file = "rtoml-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8b900dcdf2068105b81b1ded3342dad952e3ea7d4a949473a690c686116a1730"}, + {file = "rtoml-0.11.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4a491ad282b918292812518a61f432d6becf1b4a965d9c6595b7f00b1b722e61"}, + {file = "rtoml-0.11.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:d5ccbe43af82f17efed273b517e29febbd8225dab9a314f5728465b61a34781a"}, + {file = "rtoml-0.11.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4125260584290461825abac23dafb34048dcbedaf9fafea913b5f0b1691c1ad0"}, + {file = "rtoml-0.11.0-cp312-none-win32.whl", hash = "sha256:6e42385f510458f68587051a533cd0161653e1f2b381400a4873eab6f706940b"}, + {file = "rtoml-0.11.0-cp312-none-win_amd64.whl", hash = "sha256:fdce3405e50ba73a45acdf36a793e3563da04fc913c53d54852c5d6cf1eb6d25"}, + {file = "rtoml-0.11.0-cp312-none-win_arm64.whl", hash = "sha256:affc854919b46555f37d1408cb67f06f7453744bf1c5c1c53b69ed8b5227a28d"}, + {file = "rtoml-0.11.0-cp38-cp38-macosx_10_12_x86_64.whl", hash = "sha256:377d24e0c9aac0aa92ff7f4f48d90298c005e4b01a97b532d4a9cc18c180a29c"}, + {file = "rtoml-0.11.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:a557bd7c40afbdad121f952dd4b87a432c8fc50fea795b44889b84d5f8adea7e"}, + {file = "rtoml-0.11.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:91c9d5b3a8f7efcee02cd250cedebe0b02ca65abd7dfc20b5f69a16b68808d53"}, + {file = "rtoml-0.11.0-cp38-cp38-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb53b953925ea0f59d1892307503ceb21b66724b7929186d9dc7a53599075b51"}, + {file = "rtoml-0.11.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4aab5871b86e557087d2042136cde2528ad5d2fd34e4261b43a4e66dcaaacd1d"}, + {file = "rtoml-0.11.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:992646793a06fc6925171301440f56d7c44cd8302a0f1f573935e92e30f50a8e"}, + {file = "rtoml-0.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8dd9e35799ad86aba60a742c73bfe036210f2d504ab40e623d8360e43cc34f4"}, + {file = "rtoml-0.11.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0658ed9376fddb96803e2d042d1b86056f9e8a81e31ee24cca638553ed3aee25"}, + {file = "rtoml-0.11.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:1d15df762e4d513e979158c7dd670bf6df5856b768ac0107bfef0330865229f1"}, + {file = "rtoml-0.11.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d931274a54fc770601735f611f03bc44032226b549536a16c2479a455a86e1d2"}, + {file = "rtoml-0.11.0-cp38-none-win32.whl", hash = "sha256:e8dfb1460d3fc0501720dbee32acf1100d8ca4d02fbf634e956587f8d969632f"}, + {file = "rtoml-0.11.0-cp38-none-win_amd64.whl", hash = "sha256:38f805d8030b276b3ba19561cde1ac0c74b680b550e284a9e85f4d026be7d9ca"}, + {file = "rtoml-0.11.0-cp39-cp39-macosx_10_12_x86_64.whl", hash = "sha256:15511219ff53406b42da8fb14ecf1ab580ff1bdbdb5d76405df3d97c155fb997"}, + {file = "rtoml-0.11.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:faeb038772540ad3344fd73329eae3a9e84614c6b25c848dad3258647b3f4abf"}, + {file = "rtoml-0.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:52b410561af66ca5689a5c21b6bd31036d5839bb97b06cec71ac1147109f8fb6"}, + {file = "rtoml-0.11.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe9938d4793b873e53bb6fc12e4a5b88820b8596a3eaabee67cc3563f080eb85"}, + {file = "rtoml-0.11.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5178ebb7442d9e24448e76d4d32f07aa75acbd765563a2accf50cfb262163b18"}, + {file = "rtoml-0.11.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1d0e6f5c936a5d5e2c26d2443a8c861448885cc099f351982c3f7f3a0d1ce114"}, + {file = "rtoml-0.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b750450e1ac63eb43dfbba3612dbb1830b6d90cc22c6ea78d7f2322ec698727d"}, + {file = "rtoml-0.11.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3d41b865acf22bd547e771dfac3394e7dbf14586f236f20b70d3058a89352027"}, + {file = "rtoml-0.11.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8362905a25f3f3b0a6ca015877811d1bd4131ac3dd16f8acd4229e3f40ebd2e5"}, + {file = "rtoml-0.11.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:e42a8536bce3ce91ee8ea867caf5bbc1caedbf477820b14498e85e6d539592aa"}, + {file = "rtoml-0.11.0-cp39-none-win32.whl", hash = "sha256:84b83f2c57a8c4f65c0a6f0c3dbbe1ecb9082757b1fde02b2eb4781040483725"}, + {file = "rtoml-0.11.0-cp39-none-win_amd64.whl", hash = "sha256:fe6594d1a2f1948abf74ecfa24425b4ed7817b93c3daeb1ec779b5fbf935f388"}, + {file = "rtoml-0.11.0.tar.gz", hash = "sha256:a1d1ec36261c47169934a6c0f713a6cdf917604b3f72a72a809c3a68384255d4"}, ] [[package]] @@ -499,31 +433,31 @@ files = [ [[package]] name = "tomlkit" -version = "0.11.8" +version = "0.12.5" description = "Style preserving TOML library" optional = false python-versions = ">=3.7" files = [ - {file = "tomlkit-0.11.8-py3-none-any.whl", hash = "sha256:8c726c4c202bdb148667835f68d68780b9a003a9ec34167b6c673b38eff2a171"}, - {file = "tomlkit-0.11.8.tar.gz", hash = "sha256:9330fc7faa1db67b541b28e62018c17d20be733177d290a13b24c62d1614e0c3"}, + {file = "tomlkit-0.12.5-py3-none-any.whl", hash = "sha256:af914f5a9c59ed9d0762c7b64d3b5d5df007448eb9cd2edc8a46b1eafead172f"}, + {file = "tomlkit-0.12.5.tar.gz", hash = "sha256:eef34fba39834d4d6b73c9ba7f3e4d1c417a4e56f89a7e96e090dd0d24b8fb3c"}, ] [[package]] name = "zipp" -version = "3.17.0" +version = "3.19.2" description = "Backport of pathlib-compatible object wrapper for zip files" optional = false python-versions = ">=3.8" files = [ - {file = "zipp-3.17.0-py3-none-any.whl", hash = "sha256:0e923e726174922dce09c53c59ad483ff7bbb8e572e00c7f7c46b88556409f31"}, - {file = "zipp-3.17.0.tar.gz", hash = "sha256:84e64a1c28cf7e91ed2078bb8cc8c259cb19b76942096c8d7b84947690cabaf0"}, + {file = "zipp-3.19.2-py3-none-any.whl", hash = "sha256:f091755f667055f2d02b32c53771a7a6c8b47e1fdbc4b72a8b9072b3eef8015c"}, + {file = "zipp-3.19.2.tar.gz", hash = "sha256:bf1dcf6450f873a13e952a29504887c89e6de7506209e5b1bcc3460135d4de19"}, ] [package.extras] -docs = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (<7.2.5)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy (>=0.9.1)", "pytest-ruff"] +doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"] [metadata] lock-version = "2.0" python-versions = "^3.9" -content-hash = "9b40789515ad140c8b3daa2363cbf12525a7fe7b1b2cb7341a63086325adc4f5" +content-hash = "19f12b253b74488979ac892d93fa637e710d96fe3681fe51329447ec2eae4940" diff --git a/pyproject.toml b/pyproject.toml index d6aaecb..55824a0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,26 +1,26 @@ [tool.poetry] name = "toml-bench" -version = "0.3.1" +version = "0.4.0" description = "Benchmarking for python toml libraries" authors = ["pwwang "] license = "MIT" [tool.poetry.dependencies] -benchwork = "^0.0.2" python = "^3.9" -pyparam = "^0.5" +benchwork = "^0.0.2" toml = "^0.10.2" -rtoml = "^0.9.0" +rtoml = "^0.11.0" # pytomlpp does not support python 3.11 yet pytomlpp = {version = "^1.0.13", python = "<3.11"} tomli = "^2.0.1" tomli-w = "^1.0.0" qtoml = "^0.3.1" -tomlkit = "^0.11.8" +tomlkit = "^0.12.5" python-dateutil = "^2.8.2" -importlib-metadata = "^5.0.0" +importlib-metadata = "^7.2.1" # required by tomlkit, but cannot be inferred by poetry -regex = "^2022.10.31" +regex = "^2024.5.15" +argx = "^0.2.10" [tool.poetry.dev-dependencies] diff --git a/reports/with_toml-test_latest.md b/reports/with_toml-test_latest.md index 1b5b44d..5a974c5 100644 --- a/reports/with_toml-test_latest.md +++ b/reports/with_toml-test_latest.md @@ -8,10 +8,10 @@ The verions of the packages tested in this report. |-|-----------------------| |toml|0.10.2| |tomli/tomli_w|2.0.1; **tomli_w**: 1.0.0| -|tomlkit|0.11.8| -|pytomlpp|1.0.13| -|rtoml|0.9.0| +|tomlkit|0.12.5| +|rtoml|0.11.0| |qtoml|0.3.1| +|tomllib|(Python 3.12.2)| ## Dumping `None` value @@ -25,9 +25,9 @@ Literally `.dumps(None)` |toml|'NoneType' object is not iterable| |tomli/tomli_w|'NoneType' object has no attribute 'items'| |tomlkit|Expecting Mapping or TOML Container, given| -|pytomlpp|dumps(): incompatible function arguments. The following argument types are supported:
1. (arg0: dict) -> str

Invoked with: None| |rtoml|"null"| |qtoml|'NoneType' object has no attribute 'items'| +|tomllib|Dumping not supported| ## Dumping key-`None` pair @@ -41,9 +41,9 @@ Literally `.dumps({"key": None})` |toml|| |tomli/tomli_w|Object of type is not TOML serializable| |tomlkit|Invalid type | -|pytomlpp|cannot convert value None to proper toml type
| |rtoml|key = "null"
| |qtoml|TOML cannot encode None| +|tomllib|Dumping not supported| ## Dumping list with `None` value @@ -57,9 +57,9 @@ Literally `.dumps({"key": [1, 2, 3, None, 5]})` |toml|key = [ 1, 2, 3, "None", 5,]
| |tomli/tomli_w|Object of type is not TOML serializable| |tomlkit|Invalid type | -|pytomlpp|not a valid type for conversion None| |rtoml|key = [1, 2, 3, "null", 5]
| |qtoml|bad type '' for dump_value| +|tomllib|Dumping not supported| ## Loading `None`-like values @@ -73,9 +73,9 @@ Literally `.loads('v1 = "null" v2 = "None"')` |toml|{'v1': 'null', 'v2': 'None'}| |tomli/tomli_w|{'v1': 'null', 'v2': 'None'}| |tomlkit|{'v1': 'null', 'v2': 'None'}| -|pytomlpp|{'v1': 'null', 'v2': 'None'}| |rtoml|{'v1': 'null', 'v2': 'None'}| |qtoml|{'v1': 'null', 'v2': 'None'}| +|tomllib|{'v1': 'null', 'v2': 'None'}| ## Dumping a heterogenous array @@ -89,9 +89,9 @@ Literally `.dumps({"v": [1, 1.2, True, "string"]})` |toml|v = \[ 1, 1.2, true, "string",\]
| |tomli/tomli_w|v = \[
    1,
    1.2,
    true,
    "string",
\]
| |tomlkit|v = \[1, 1.2, true, "string"\]
| -|pytomlpp|v = \[ 1, 1.2, 1, 'string' \]| |rtoml|v = \[1, 1.2, true, "string"\]
| |qtoml|v = \[1, 1.2, true, 'string'\]
| +|tomllib|Dumping not supported| ## Loading a heterogenous array @@ -105,9 +105,9 @@ Literally `.loads('v = [1, 1.2, True, "string"]')` |toml|Not a homogeneous array (line 2 column 1 char 1)| |tomli/tomli_w|`{'v': [1, 1.2, True, 'string']}`| |tomlkit|`{'v': [1, 1.2, True, 'string']}`| -|pytomlpp|`{'v': [1, 1.2, True, 'string']}`| |rtoml|`{'v': [1, 1.2, True, 'string']}`| |qtoml|`{'v': [1, 1.2, True, 'string']}`| +|tomllib|`{'v': [1, 1.2, True, 'string']}`| ## Dumping a nested array @@ -121,9 +121,9 @@ Literally `.dumps({"v": [[1], [1, 2]]})` |toml|v = \[ \[ 1,\], \[ 1, 2,\],\]
| |tomli/tomli_w|v = \[
    \[
        1,
    \],
    \[
        1,
        2,
    \],
\]
| |tomlkit|v = \[\[1\], \[1, 2\]\]
| -|pytomlpp|v = \[ \[ 1 \], \[ 1, 2 \] \]| |rtoml|v = \[\[1\], \[1, 2\]\]
| |qtoml|v = \[\[1\], \[1, 2\]\]
| +|tomllib|Dumping not supported| ## Loading a nested array @@ -137,9 +137,9 @@ Literally `.loads('v = [[1], [1, 2]]')` |toml|`{'v': [[1], [1, 2]]}`| |tomli/tomli_w|`{'v': [[1], [1, 2]]}`| |tomlkit|`{'v': [[1], [1, 2]]}`| -|pytomlpp|`{'v': [[1], [1, 2]]}`| |rtoml|`{'v': [[1], [1, 2]]}`| |qtoml|`{'v': [[1], [1, 2]]}`| +|tomllib|`{'v': [[1], [1, 2]]}`| ## Dumping keeps order of keys? @@ -155,9 +155,9 @@ like `c = 1\na = 2\nb = 3\n`. |toml|Kept| |tomli/tomli_w|Kept| |tomlkit|Kept| -|pytomlpp|Lost| |rtoml|Kept| |qtoml|Kept| +|tomllib|Dumping not supported| ## Loading keeps order of keys? @@ -173,9 +173,9 @@ a dictionary with keys in the order of `['c', 'a', 'b']`. |toml|Kept| |tomli/tomli_w|Kept| |tomlkit|Kept| -|pytomlpp|Lost| |rtoml|Kept| |qtoml|Kept| +|tomllib|Kept| ## Dumping unicode @@ -189,9 +189,9 @@ Literally, `.dumps({"你好": "世界"})` |toml|"你好" = "世界"
| |tomli/tomli_w|"你好" = "世界"
| |tomlkit|"你好" = "世界"
| -|pytomlpp|'你好' = '世界'| |rtoml|"你好" = "世界"
| |qtoml|'你好' = '世界'
| +|tomllib|Dumping not supported| ## Loaded unicode @@ -215,9 +215,9 @@ with open(self.datafile, "r", encoding="utf-8") as f: |toml|{'你好': '世界'}| |tomli/tomli_w|File must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`
When loaded with `rb`:
{'你好': '世界'}| |tomlkit|{'你好': '世界'}| -|pytomlpp|{'你好': '世界'}| |rtoml|{'你好': '世界'}| |qtoml|{'你好': '世界'}| +|tomllib|File must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`
When loaded with `rb`:
{'你好': '世界'}| ## Compliance with valid tests in toml-test @@ -230,14 +230,14 @@ The tests come up with a JSON counterpart that can be used to valid whether loading the toml file yields the same result as the JSON counterpart. -| |Result (toml-test v1.3.0)| +| |Result (toml-test v1.5.0)| |-|-----------------------| -|toml|[key/escapes.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/key/escapes.toml) Parsed as unexpected data.
[key/dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/key/dotted.toml) Found invalid character in key name: '"'. Try quoting the key name. (line 12 column 11 char 245)
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/comment/tricky.toml) Parsed as unexpected data.
[inline-table/key-dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/inline-table/key-dotted.toml) Parsed as unexpected data.
[inline-table/multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/inline-table/multiline.toml) Invalid inline table value encountered (line 1 column 1 char 0)
[array/nested-double.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/nested-double.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-string.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-int-string.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-string-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-string-table.toml) list index out of range
[array/mixed-int-array.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-int-array.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-float.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-int-float.toml) Not a homogeneous array (line 1 column 1 char 0)
[float/zero.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/float/zero.toml) Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 47)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Reserved escape sequence used (line 1 column 1 char 0)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/datetime.toml) Parsed as unexpected data.
[datetime/local-time.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/local-time.toml) Parsed as unexpected data.
*86/100 (86.00%) passed*| -|tomli/tomli_w|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Unescaped '\' in a string (at line 1, column 10)
*99/100 (99.00%) passed*| -|tomlkit|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Invalid character 'e' in string at line 1 col 8
*99/100 (99.00%) passed*| -|pytomlpp|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Error while parsing string: escape sequence '\e' is not supported in TOML 1.0.0 and earlier (error occurred at line 1, column 9)
*99/100 (99.00%) passed*| -|rtoml|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) invalid escape character in string: `e` at line 1 column 9
*99/100 (99.00%) passed*| -|qtoml|[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/comment/tricky.toml) can't parse type (line 11, column 7)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/multiline-quotes.toml) Didn't find expected newline (line 4, column 26)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) \e not a valid escape (line 1, column 33)
[datetime/milliseconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/milliseconds.toml) Didn't find expected newline (line 2, column 27)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/datetime.toml) Didn't find expected newline (line 2, column 18)
*95/100 (95.00%) passed*| +|toml|[spec/array-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/spec/array-0.toml) Not a homogeneous array (line 8 column 1 char 261)
[spec/keys-4.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/spec/keys-4.toml) Found invalid character in key name: 'c'. Try quoting the key name. (line 2 column 8 char 57)
[spec/local-time-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/spec/local-time-0.toml) Parsed as unexpected data.
[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/no-seconds.toml) invalid literal for int() with base 0: '13:37' (line 2 column 1 char 46)
[datetime/local-time.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/local-time.toml) Parsed as unexpected data.
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/datetime.toml) Parsed as unexpected data.
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/comment/tricky.toml) Parsed as unexpected data.
[key/dotted-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/dotted-1.toml) Parsed as unexpected data.
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/unicode.toml) Found invalid character in key name: '‍'. Try quoting the key name. (line 5 column 2 char 67)
[key/dotted-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/dotted-2.toml) Found invalid character in key name: '"'. Try quoting the key name. (line 7 column 11 char 166)
[key/quoted-unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/quoted-unicode.toml) Duplicate keys! (line 3 column 1 char 19)
[key/dotted-empty.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/dotted-empty.toml) Duplicate keys! (line 2 column 1 char 17)
[key/escapes.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/escapes.toml) Parsed as unexpected data.
[table/empty-name.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/table/empty-name.toml) Can't have a keygroup with an empty name (line 1 column 1 char 0)
[string/raw-multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/raw-multiline.toml) Unbalanced quotes (line 20 column 50 char 532)
[string/ends-in-whitespace-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/hex-escape.toml) Reserved escape sequence used (line 3 column 1 char 35)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/escape-esc.toml) Reserved escape sequence used (line 1 column 1 char 0)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/multiline-quotes.toml) Unterminated string found. Reached end of file. (line 27 column 1 char 664)
[float/zero.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/float/zero.toml) Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 47)
[array/mixed-int-string.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/array/mixed-int-string.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/nested-double.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/array/nested-double.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/string-with-comma-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/array/string-with-comma-2.toml) string index out of range
[array/mixed-int-float.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/array/mixed-int-float.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-string-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/array/mixed-string-table.toml) list index out of range
[array/mixed-int-array.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/array/mixed-int-array.toml) Not a homogeneous array (line 1 column 1 char 0)
[inline-table/multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/multiline.toml) Invalid inline table value encountered (line 1 column 1 char 0)
[inline-table/key-dotted-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/key-dotted-1.toml) Parsed as unexpected data.
[inline-table/key-dotted-5.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/key-dotted-5.toml) Not a homogeneous array (line 2 column 1 char 20)
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/newline.toml) Key name found without value. Reached end of line. (line 5 column 2 char 98)
*157/187 (83.96%) passed*| +|tomli/tomli_w|[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/no-seconds.toml) Expected newline or end of document after a statement (at line 2, column 23)
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/unicode.toml) Invalid statement (at line 3, column 1)
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/hex-escape.toml) Unescaped '\' in a string (at line 3, column 22)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/escape-esc.toml) Unescaped '\' in a string (at line 1, column 10)
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/newline.toml) Invalid initial character for a key part (at line 3, column 21)
*182/187 (97.33%) passed*| +|tomlkit|[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/no-seconds.toml) Invalid number at line 2 col 25
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/unicode.toml) Empty key at line 3 col 0
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/hex-escape.toml) Invalid character 'x' in string at line 3 col 20
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/escape-esc.toml) Invalid character 'e' in string at line 1 col 8
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/newline.toml) Empty key at line 3 col 20
*182/187 (97.33%) passed*| +|rtoml|[spec/table-9.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/spec/table-9.toml) duplicate key: `apple` for key `fruit` at line 8 column 1
[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/no-seconds.toml) expected a colon, found a newline at line 2 column 26
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/unicode.toml) unexpected character found: `\u{20ac}` at line 3 column 1
[table/array-within-dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/table/array-within-dotted.toml) duplicate key: `apple` for key `fruit` at line 4 column 1
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/hex-escape.toml) invalid escape character in string: `x` at line 3 column 21
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/escape-esc.toml) invalid escape character in string: `e` at line 1 column 9
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/newline.toml) expected a table key, found a newline at line 3 column 21
*180/187 (96.26%) passed*| +|qtoml|[spec/string-4.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/spec/string-4.toml) Didn't find expected newline (line 7, column 62)
[spec/string-7.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/spec/string-7.toml) Didn't find expected newline (line 7, column 50)
[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/no-seconds.toml) can't parse type (line 2, column 20)
[datetime/milliseconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/milliseconds.toml) Didn't find expected newline (line 2, column 27)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/datetime.toml) Didn't find expected newline (line 4, column 18)
[comment/after-literal-no-ws.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/comment/after-literal-no-ws.toml) can't parse type (line 1, column 4)
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/comment/tricky.toml) can't parse type (line 11, column 7)
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/unicode.toml) '€' cannot begin key (line 3, column 0)
[string/raw-multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/raw-multiline.toml) Didn't find expected newline (line 22, column 3)
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/hex-escape.toml) \x not a valid escape (line 3, column 43)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/escape-esc.toml) \e not a valid escape (line 1, column 33)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/multiline-quotes.toml) Didn't find expected newline (line 4, column 26)
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/newline.toml) ' ' cannot begin key (line 3, column 20)
*174/187 (93.05%) passed*| +|tomllib|[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/datetime/no-seconds.toml) Expected newline or end of document after a statement (at line 2, column 23)
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/key/unicode.toml) Invalid statement (at line 3, column 1)
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/hex-escape.toml) Unescaped '\' in a string (at line 3, column 22)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/string/escape-esc.toml) Unescaped '\' in a string (at line 1, column 10)
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//valid/inline-table/newline.toml) Invalid initial character for a key part (at line 3, column 21)
*182/187 (97.33%) passed*| ## Compliance with invalid tests in toml-test @@ -251,14 +251,14 @@ here: parsing error. -| |Result (toml-test v1.3.0)| +| |Result (toml-test v1.5.0)| |-|-----------------------| -|toml|Not OK: [key/start-dot.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/start-dot.toml) incorrectly parsed.
Not OK: [key/escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/escape.toml) incorrectly parsed.
Not OK: [key/special-character.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/special-character.toml) incorrectly parsed.
Not OK: [key/two-equals3.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/two-equals3.toml) incorrectly parsed.
Not OK: [key/two-equals2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/two-equals2.toml) incorrectly parsed.
Not OK: [inline-table/add.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/inline-table/add.toml) incorrectly parsed.
Not OK: [array/no-close-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/array/no-close-2.toml) incorrectly parsed.
Not OK: [array/tables-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/array/tables-1.toml) incorrectly parsed.
Not OK: [array/no-close.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/array/no-close.toml) incorrectly parsed.
Not OK: [array/extending-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/array/extending-table.toml) incorrectly parsed.
Not OK: *39 more items incorrectly parsed.*
*188/237 (79.32%) passed*| -|tomli/tomli_w|OK: [datetime/mday-under.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/datetime/mday-under.toml) Expected newline or end of document after a statement (at line 3, column 9)
*237/237 (100%) passed*| -|tomlkit|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/append-with-dotted-keys-2.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
*233/237 (98.31%) passed*| -|pytomlpp|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
*235/237 (99.16%) passed*| -|rtoml|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [integer/positive-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/positive-hex.toml) incorrectly parsed.
Not OK: [integer/positive-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/positive-bin.toml) incorrectly parsed.
*232/237 (97.89%) passed*| -|qtoml|Not OK: [inline-table/trailing-comma.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/inline-table/trailing-comma.toml) incorrectly parsed.
Not OK: [inline-table/add.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/inline-table/add.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-us.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/duplicate-key-dotted-table.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/duplicate-key-dotted-table2.toml) incorrectly parsed.
Not OK: *2 more items incorrectly parsed.*
*225/237 (94.94%) passed*| +|toml|Not OK: [integer/double-sign-plus.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/double-sign-plus.toml) incorrectly parsed.
Not OK: [integer/us-after-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/us-after-bin.toml) incorrectly parsed.
Not OK: [integer/double-sign-nex.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/double-sign-nex.toml) incorrectly parsed.
Not OK: [integer/us-after-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/us-after-hex.toml) incorrectly parsed.
Not OK: [integer/us-after-oct.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/us-after-oct.toml) incorrectly parsed.
Not OK: [spec/inline-table-2-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/spec/inline-table-2-0.toml) incorrectly parsed.
Not OK: [datetime/offset-overflow-minute.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/datetime/offset-overflow-minute.toml) incorrectly parsed.
Not OK: [datetime/offset-overflow-hour.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/datetime/offset-overflow-hour.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/string-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/string-del.toml) incorrectly parsed.
Not OK: *63 more items incorrectly parsed.*
*298/371 (80.32%) passed*| +|tomli/tomli_w|OK: [inline-table/linebreak-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/inline-table/linebreak-1.toml) Unclosed inline table (at line 3, column 18)
*371/371 (100%) passed*| +|tomlkit|Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/multi-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/multi-cr.toml) incorrectly parsed.
Not OK: [control/rawmulti-cd.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/rawmulti-cd.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
Not OK: [table/overwrite-array-in-parent.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/table/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [table/append-to-array-with-dotted-keys.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/table/append-to-array-with-dotted-keys.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/table/append-with-dotted-keys-2.toml) incorrectly parsed.
Not OK: [array/extend-defined-aot.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/array/extend-defined-aot.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-09.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/inline-table/overwrite-09.toml) incorrectly parsed.
*361/371 (97.30%) passed*| +|rtoml|Not OK: [integer/positive-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/positive-hex.toml) incorrectly parsed.
Not OK: [integer/positive-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/positive-bin.toml) incorrectly parsed.
Not OK: [integer/positive-oct.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/integer/positive-oct.toml) incorrectly parsed.
Not OK: [datetime/offset-overflow-minute.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/datetime/offset-overflow-minute.toml) incorrectly parsed.
Not OK: [datetime/offset-overflow-hour.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/datetime/offset-overflow-hour.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/multi-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/multi-cr.toml) incorrectly parsed.
Not OK: [control/rawmulti-cd.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/rawmulti-cd.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
*361/371 (97.30%) passed*| +|qtoml|Not OK: [spec/inline-table-2-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/spec/inline-table-2-0.toml) incorrectly parsed.
Not OK: [spec/table-9-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/spec/table-9-1.toml) incorrectly parsed.
Not OK: [spec/table-9-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/spec/table-9-0.toml) incorrectly parsed.
Not OK: [datetime/offset-overflow-minute.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/datetime/offset-overflow-minute.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
Not OK: [control/comment-ff.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-ff.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/multi-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/control/multi-cr.toml) incorrectly parsed.
Not OK: *14 more items incorrectly parsed.*
*347/371 (93.53%) passed*| +|tomllib|OK: [inline-table/linebreak-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.5.0/tests//invalid/inline-table/linebreak-1.toml) Unclosed inline table (at line 3, column 18)
*371/371 (100%) passed*| ## Compliance with valid tests in python tomllib test data @@ -271,14 +271,14 @@ The tests come up with a JSON counterpart that can be used to valid whether loading the toml file yields the same result as the JSON counterpart. -| |Result (cpython tag 3.11.0)| +| |Result (cpython tag 3.12.4)| |-|-----------------------| -|toml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Unbalanced quotes (line 1 column 50 char 49)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/five-quotes.toml) Unterminated string found. Reached end of file. (line 7 column 1 char 97)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Parsed as unexpected data.
[multiline-basic-str/ends-in-whitespace-escape.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/multiline-basic-str/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
*8/12 (66.67%) passed*| +|toml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Unbalanced quotes (line 1 column 50 char 49)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/five-quotes.toml) Unterminated string found. Reached end of file. (line 7 column 1 char 97)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Parsed as unexpected data.
[multiline-basic-str/ends-in-whitespace-escape.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/multiline-basic-str/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
*8/12 (66.67%) passed*| |tomli/tomli_w|OK, *12/12 (100%) passed*| |tomlkit|OK, *12/12 (100%) passed*| -|pytomlpp|OK, *12/12 (100%) passed*| |rtoml|OK, *12/12 (100%) passed*| -|qtoml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Didn't find expected newline (line 3, column 3)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/five-quotes.toml) Didn't find expected newline (line 3, column 3)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Didn't find expected newline (line 1, column 19)
*9/12 (75.00%) passed*| +|qtoml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Didn't find expected newline (line 3, column 3)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/five-quotes.toml) Didn't find expected newline (line 3, column 3)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Didn't find expected newline (line 1, column 19)
*9/12 (75.00%) passed*| +|tomllib|OK, *12/12 (100%) passed*| ## Compliance with invalid tests in python tomllib test data @@ -292,31 +292,14 @@ for invalid toml files here: parsing error. -| |Result (cpython tag 3.11.0)| +| |Result (cpython tag 3.12.4)| |-|-----------------------| -|toml|Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [inline-table/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/unclosed-empty.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [array/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/unclosed-empty.toml) incorrectly parsed.
Not OK: [array/unclosed-after-item.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/unclosed-after-item.toml) incorrectly parsed.
Not OK: [array/file-end-after-val.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/file-end-after-val.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*41/50 (82.00%) passed*| -|tomli/tomli_w|OK: [multiline-basic-str/escape-only.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/escape-only.toml) Unterminated string (at end of document)
*50/50 (100%) passed*| -|tomlkit|Not OK: [inline-table/override-val-in-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/override-val-in-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-aot.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-aot.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [array-of-tables/overwrite-array-in-parent.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array-of-tables/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*44/50 (88.00%) passed*| -|pytomlpp|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| -|rtoml|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| -|qtoml|Not OK: [non-scalar-escaped.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/non-scalar-escaped.toml) incorrectly parsed.
Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [inline-table/override-val-with-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/override-val-with-table.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [table/redefine-2.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/table/redefine-2.toml) incorrectly parsed.
Not OK: [table/redefine-1.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/table/redefine-1.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*41/50 (82.00%) passed*| - -## Running speed with data provided by `pytomlpp` - -Test the speed of loading and dumping the loaded -using data provided by `pytomlpp` - -> https://github.com/bobfang1992/pytomlpp/raw/master/benchmark/data.toml - - -| |Loading speed|Dumping speed| -|-|-|-| -|toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|7.55s (1000 iterations)|3.11s (1000 iterations)| -|tomlkit|150.98s (1000 iterations)|2.14s (1000 iterations)| -|pytomlpp|1.41s (1000 iterations)|0.98s (1000 iterations)| -|rtoml|0.98s (1000 iterations)|values must be emitted before tables| -|qtoml|18.39s (1000 iterations)|4.75s (1000 iterations)| +|toml|Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [array/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/unclosed-empty.toml) incorrectly parsed.
Not OK: [array/file-end-after-val.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/file-end-after-val.toml) incorrectly parsed.
Not OK: [array/unclosed-after-item.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/unclosed-after-item.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [inline-table/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/unclosed-empty.toml) incorrectly parsed.
*41/50 (82.00%) passed*| +|tomli/tomli_w|OK: [inline-table/overwrite-implicitly.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-implicitly.toml) Cannot overwrite a value (at line 1, column 21)
*50/50 (100%) passed*| +|tomlkit|Not OK: [array-of-tables/overwrite-array-in-parent.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array-of-tables/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-aot.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-aot.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [inline-table/override-val-in-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/override-val-in-table.toml) incorrectly parsed.
*44/50 (88.00%) passed*| +|rtoml|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| +|qtoml|Not OK: [non-scalar-escaped.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/non-scalar-escaped.toml) incorrectly parsed.
Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [table/redefine-2.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/table/redefine-2.toml) incorrectly parsed.
Not OK: [table/redefine-1.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/table/redefine-1.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [inline-table/override-val-with-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/override-val-with-table.toml) incorrectly parsed.
*41/50 (82.00%) passed*| +|tomllib|OK: [inline-table/overwrite-implicitly.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-implicitly.toml) Cannot overwrite a value (at line 1, column 21)
*50/50 (100%) passed*| ## Running speed with data provided by `rtoml` @@ -329,11 +312,11 @@ provided by `rtoml` | |Loading speed|Dumping speed| |-|-|-| |toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|1.56s (1000 iterations)|0.55s (1000 iterations)| -|tomlkit|29.90s (1000 iterations)|0.75s (1000 iterations)| -|pytomlpp|0.24s (1000 iterations)|0.19s (1000 iterations)| -|rtoml|0.19s (1000 iterations)|0.05s (1000 iterations)| -|qtoml|4.57s (1000 iterations)|1.26s (1000 iterations)| +|tomli/tomli_w|2.14s (5000 iterations)|0.74s (5000 iterations)| +|tomlkit|40.28s (5000 iterations)|1.01s (5000 iterations)| +|rtoml|0.38s (5000 iterations)|0.09s (5000 iterations)| +|qtoml|5.04s (5000 iterations)|1.92s (5000 iterations)| +|tomllib|2.05s (5000 iterations)|Dumping not supported| ## Running speed with data provided by `tomli` @@ -346,9 +329,9 @@ provided by `tomli` | |Loading speed|Dumping speed| |-|-|-| |toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|1.11s (1000 iterations)|0.38s (1000 iterations)| -|tomlkit|19.39s (1000 iterations)|0.37s (1000 iterations)| -|pytomlpp|0.25s (1000 iterations)|0.18s (1000 iterations)| -|rtoml|0.20s (1000 iterations)|0.11s (1000 iterations)| -|qtoml|3.61s (1000 iterations)|0.94s (1000 iterations)| +|tomli/tomli_w|1.40s (5000 iterations)|0.46s (5000 iterations)| +|tomlkit|26.10s (5000 iterations)|0.52s (5000 iterations)| +|rtoml|0.32s (5000 iterations)|0.17s (5000 iterations)| +|qtoml|3.72s (5000 iterations)|1.33s (5000 iterations)| +|tomllib|1.50s (5000 iterations)|Dumping not supported| diff --git a/reports/with_toml-test_v1.0.0.md b/reports/with_toml-test_v1.0.0.md deleted file mode 100644 index bfa945f..0000000 --- a/reports/with_toml-test_v1.0.0.md +++ /dev/null @@ -1,354 +0,0 @@ -# Report - -## Version - -The verions of the packages tested in this report. - -| |Version| -|-|-----------------------| -|toml|0.10.2| -|tomli/tomli_w|2.0.1; **tomli_w**: 1.0.0| -|tomlkit|0.11.8| -|pytomlpp|1.0.13| -|rtoml|0.9.0| -|qtoml|0.3.1| - -## Dumping `None` value - -How the package dumps `None` value in python - -Literally `.dumps(None)` - - -| |Dumped value or error| -|-|-----------------------| -|toml|'NoneType' object is not iterable| -|tomli/tomli_w|'NoneType' object has no attribute 'items'| -|tomlkit|Expecting Mapping or TOML Container, given| -|pytomlpp|dumps(): incompatible function arguments. The following argument types are supported:
1. (arg0: dict) -> str

Invoked with: None| -|rtoml|"null"| -|qtoml|'NoneType' object has no attribute 'items'| - -## Dumping key-`None` pair - -How the package dumps key-value pair with value `None` - -Literally `.dumps({"key": None})` - - -| |Dumped value or error| -|-|-----------------------| -|toml|| -|tomli/tomli_w|Object of type is not TOML serializable| -|tomlkit|Invalid type | -|pytomlpp|cannot convert value None to proper toml type
| -|rtoml|key = "null"
| -|qtoml|TOML cannot encode None| - -## Dumping list with `None` value - -How the package dumps a list with `None` value in it. - -Literally `.dumps({"key": [1, 2, 3, None, 5]})` - - -| |Dumped value or error| -|-|-----------------------| -|toml|key = [ 1, 2, 3, "None", 5,]
| -|tomli/tomli_w|Object of type is not TOML serializable| -|tomlkit|Invalid type | -|pytomlpp|not a valid type for conversion None| -|rtoml|key = [1, 2, 3, "null", 5]
| -|qtoml|bad type '' for dump_value| - -## Loading `None`-like values - -How the package loads `None`-like value in string - -Literally `.loads('v1 = "null" v2 = "None"')` - - -| |Loaded as| -|-|-----------------------| -|toml|{'v1': 'null', 'v2': 'None'}| -|tomli/tomli_w|{'v1': 'null', 'v2': 'None'}| -|tomlkit|{'v1': 'null', 'v2': 'None'}| -|pytomlpp|{'v1': 'null', 'v2': 'None'}| -|rtoml|{'v1': 'null', 'v2': 'None'}| -|qtoml|{'v1': 'null', 'v2': 'None'}| - -## Dumping a heterogenous array - -How the package dumps a python dictionary with a heterogenous array. - -Literally `.dumps({"v": [1, 1.2, True, "string"]})` - - -| |Dumped value or error| -|-|-----------------------| -|toml|v = \[ 1, 1.2, true, "string",\]
| -|tomli/tomli_w|v = \[
    1,
    1.2,
    true,
    "string",
\]
| -|tomlkit|v = \[1, 1.2, true, "string"\]
| -|pytomlpp|v = \[ 1, 1.2, 1, 'string' \]| -|rtoml|v = \[1, 1.2, true, "string"\]
| -|qtoml|v = \[1, 1.2, true, 'string'\]
| - -## Loading a heterogenous array - -How the package loads a toml string with a heterogenous array. - -Literally `.loads('v = [1, 1.2, True, "string"]')` - - -| |Loaded as| -|-|-----------------------| -|toml|Not a homogeneous array (line 2 column 1 char 1)| -|tomli/tomli_w|`{'v': [1, 1.2, True, 'string']}`| -|tomlkit|`{'v': [1, 1.2, True, 'string']}`| -|pytomlpp|`{'v': [1, 1.2, True, 'string']}`| -|rtoml|`{'v': [1, 1.2, True, 'string']}`| -|qtoml|`{'v': [1, 1.2, True, 'string']}`| - -## Dumping a nested array - -How the package dumps a python dictionary with a nested array. - -Literally `.dumps({"v": [[1], [1, 2]]})` - - -| |Dumped value or error| -|-|-----------------------| -|toml|v = \[ \[ 1,\], \[ 1, 2,\],\]
| -|tomli/tomli_w|v = \[
    \[
        1,
    \],
    \[
        1,
        2,
    \],
\]
| -|tomlkit|v = \[\[1\], \[1, 2\]\]
| -|pytomlpp|v = \[ \[ 1 \], \[ 1, 2 \] \]| -|rtoml|v = \[\[1\], \[1, 2\]\]
| -|qtoml|v = \[\[1\], \[1, 2\]\]
| - -## Loading a nested array - -How the package loads a toml string with a nested array. - -Literally `.loads('v = [[1], [1, 2]]')` - - -| |Loaded as| -|-|-----------------------| -|toml|`{'v': [[1], [1, 2]]}`| -|tomli/tomli_w|`{'v': [[1], [1, 2]]}`| -|tomlkit|`{'v': [[1], [1, 2]]}`| -|pytomlpp|`{'v': [[1], [1, 2]]}`| -|rtoml|`{'v': [[1], [1, 2]]}`| -|qtoml|`{'v': [[1], [1, 2]]}`| - -## Dumping keeps order of keys? - -Whether the package preserves the order of the keys while dumps -a python dictionary. - -Thus, whether `.dumps({"c": 1, "a": 2, "b": 3})` yields a string -like `c = 1\na = 2\nb = 3\n`. - - -| |Order kept?| -|-|-----------------------| -|toml|Kept| -|tomli/tomli_w|Kept| -|tomlkit|Kept| -|pytomlpp|Lost| -|rtoml|Kept| -|qtoml|Kept| - -## Loading keeps order of keys? - -Whether the package preserves the order of the keys -while loads a TOML string. - -Thus, whether `.loads('c = 1\na = 2\nb = 3\n')` yields -a dictionary with keys in the order of `['c', 'a', 'b']`. - - -| |Order kept?| -|-|-----------------------| -|toml|Kept| -|tomli/tomli_w|Kept| -|tomlkit|Kept| -|pytomlpp|Lost| -|rtoml|Kept| -|qtoml|Kept| - -## Dumping unicode - -How the package dumps Unicode in python - -Literally, `.dumps({"你好": "世界"})` - - -| |Dumped value| -|-|-----------------------| -|toml|"你好" = "世界"
| -|tomli/tomli_w|"你好" = "世界"
| -|tomlkit|"你好" = "世界"
| -|pytomlpp|'你好' = '世界'| -|rtoml|"你好" = "世界"
| -|qtoml|'你好' = '世界'
| - -## Loaded unicode - -How the package loads a file with unicode. - -The file was created by: - -```python -# Create a file with unicode content -with open(self.datafile, "w", encoding="utf-8") as f: - f.write('"你好" = "世界"\n') - -# Use `.load()` to load the file -with open(self.datafile, "r", encoding="utf-8") as f: - loaded = .load(f) -``` - - -| |Loaded as| -|-|-----------------------| -|toml|{'你好': '世界'}| -|tomli/tomli_w|File must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`
When loaded with `rb`:
{'你好': '世界'}| -|tomlkit|{'你好': '世界'}| -|pytomlpp|{'你好': '世界'}| -|rtoml|{'你好': '世界'}| -|qtoml|{'你好': '世界'}| - -## Compliance with valid tests in toml-test - -Test the compliance with the standard test suites for valid toml files -here: - -> https://github.com/BurntSushi/toml-test/ - -The tests come up with a JSON counterpart that can be used to valid whether -loading the toml file yields the same result as the JSON counterpart. - - -| |Result (toml-test v1.0.0)| -|-|-----------------------| -|toml|[key/escapes.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/key/escapes.toml) Parsed as unexpected data.
[key/dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/key/dotted.toml) Found invalid character in key name: '"'. Try quoting the key name. (line 12 column 11 char 245)
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/comment/tricky.toml) Parsed as unexpected data.
[inline-table/key-dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/inline-table/key-dotted.toml) Parsed as unexpected data.
[inline-table/multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/inline-table/multiline.toml) Invalid inline table value encountered (line 1 column 1 char 0)
[array/nested-double.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/array/nested-double.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-string.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/array/mixed-int-string.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-string-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/array/mixed-string-table.toml) list index out of range
[array/mixed-int-array.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/array/mixed-int-array.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-float.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/array/mixed-int-float.toml) Not a homogeneous array (line 1 column 1 char 0)
[float/zero.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/float/zero.toml) Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 29)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/datetime/datetime.toml) Parsed as unexpected data.
[datetime/local-time.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/datetime/local-time.toml) Parsed as unexpected data.
*83/96 (86.46%) passed*| -|tomli/tomli_w|OK, *96/96 (100%) passed*| -|tomlkit|OK, *96/96 (100%) passed*| -|pytomlpp|OK, *96/96 (100%) passed*| -|rtoml|OK, *96/96 (100%) passed*| -|qtoml|[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/comment/tricky.toml) can't parse type (line 11, column 7)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/string/multiline-quotes.toml) Didn't find expected newline (line 4, column 26)
[datetime/milliseconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/datetime/milliseconds.toml) Didn't find expected newline (line 2, column 27)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//valid/datetime/datetime.toml) Didn't find expected newline (line 2, column 18)
*92/96 (95.83%) passed*| - -## Compliance with invalid tests in toml-test - -Test the compliance with the standard test suites for invalid toml files -here: - -> https://github.com/BurntSushi/toml-test/ - -- `Not OK`: The toml file is parsed without error, but expected to fail. -- `OK`: All files are failed to parse, as expected. Showing the last -parsing error. - - -| |Result (toml-test v1.0.0)| -|-|-----------------------| -|toml|Not OK: [key/escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/key/escape.toml) incorrectly parsed.
Not OK: [key/special-character.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/key/special-character.toml) incorrectly parsed.
Not OK: [key/two-equals3.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/key/two-equals3.toml) incorrectly parsed.
Not OK: [key/two-equals2.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/key/two-equals2.toml) incorrectly parsed.
Not OK: [array/no-close-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/array/no-close-2.toml) incorrectly parsed.
Not OK: [array/tables-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/array/tables-1.toml) incorrectly parsed.
Not OK: [array/no-close.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/array/no-close.toml) incorrectly parsed.
Not OK: [array/no-close-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/array/no-close-table.toml) incorrectly parsed.
Not OK: [array/no-close-table-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/array/no-close-table-2.toml) incorrectly parsed.
Not OK: [float/exp-leading-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/float/exp-leading-us.toml) incorrectly parsed.
Not OK: *29 more items incorrectly parsed.*
*146/185 (78.92%) passed*| -|tomli/tomli_w|OK: [datetime/impossible-date.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/datetime/impossible-date.toml) Expected newline or end of document after a statement (at line 1, column 9)
*185/185 (100%) passed*| -|tomlkit|OK: [datetime/impossible-date.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/datetime/impossible-date.toml) Invalid datetime at line 1 col 24
*185/185 (100%) passed*| -|pytomlpp|OK: [datetime/impossible-date.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/datetime/impossible-date.toml) Error while parsing date: expected day between 1 and 31 (inclusive), saw 50 (error occurred at line 1, column 15)
*185/185 (100%) passed*| -|rtoml|Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [integer/positive-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/integer/positive-hex.toml) incorrectly parsed.
Not OK: [integer/positive-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/integer/positive-bin.toml) incorrectly parsed.
*182/185 (98.38%) passed*| -|qtoml|Not OK: [inline-table/trailing-comma.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/inline-table/trailing-comma.toml) incorrectly parsed.
Not OK: [control/comment-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/control/comment-us.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.0.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
*180/185 (97.30%) passed*| - -## Compliance with valid tests in python tomllib test data - -Test the compliance with python tomllib test data (since python 3.11) -for valid toml files here: - -> https://github.com/python/cpython/tree/3.11/Lib/test/test_tomllib/data/valid - -The tests come up with a JSON counterpart that can be used to valid whether -loading the toml file yields the same result as the JSON counterpart. - - -| |Result (cpython tag 3.11.0)| -|-|-----------------------| -|toml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Unbalanced quotes (line 1 column 50 char 49)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/five-quotes.toml) Unterminated string found. Reached end of file. (line 7 column 1 char 97)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Parsed as unexpected data.
[multiline-basic-str/ends-in-whitespace-escape.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/multiline-basic-str/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
*8/12 (66.67%) passed*| -|tomli/tomli_w|OK, *12/12 (100%) passed*| -|tomlkit|OK, *12/12 (100%) passed*| -|pytomlpp|OK, *12/12 (100%) passed*| -|rtoml|OK, *12/12 (100%) passed*| -|qtoml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Didn't find expected newline (line 3, column 3)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/five-quotes.toml) Didn't find expected newline (line 3, column 3)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Didn't find expected newline (line 1, column 19)
*9/12 (75.00%) passed*| - -## Compliance with invalid tests in python tomllib test data - -Test the compliance with python tomllib test data (since python 3.11) -for invalid toml files here: - -> https://github.com/python/cpython/tree/main/Lib/test/test_tomllib/data/invalid - -- `Not OK`: The toml file is parsed without error, but expected to fail. -- `OK`: All files are failed to parse, as expected. Showing the last -parsing error. - - -| |Result (cpython tag 3.11.0)| -|-|-----------------------| -|toml|Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [inline-table/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/unclosed-empty.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [array/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/unclosed-empty.toml) incorrectly parsed.
Not OK: [array/unclosed-after-item.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/unclosed-after-item.toml) incorrectly parsed.
Not OK: [array/file-end-after-val.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/file-end-after-val.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*41/50 (82.00%) passed*| -|tomli/tomli_w|OK: [multiline-basic-str/escape-only.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/escape-only.toml) Unterminated string (at end of document)
*50/50 (100%) passed*| -|tomlkit|Not OK: [inline-table/override-val-in-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/override-val-in-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-aot.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-aot.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [array-of-tables/overwrite-array-in-parent.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array-of-tables/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*44/50 (88.00%) passed*| -|pytomlpp|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| -|rtoml|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| -|qtoml|Not OK: [non-scalar-escaped.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/non-scalar-escaped.toml) incorrectly parsed.
Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [inline-table/override-val-with-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/override-val-with-table.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [table/redefine-2.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/table/redefine-2.toml) incorrectly parsed.
Not OK: [table/redefine-1.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/table/redefine-1.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*41/50 (82.00%) passed*| - -## Running speed with data provided by `pytomlpp` - -Test the speed of loading and dumping the loaded -using data provided by `pytomlpp` - -> https://github.com/bobfang1992/pytomlpp/raw/master/benchmark/data.toml - - -| |Loading speed|Dumping speed| -|-|-|-| -|toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|7.39s (1000 iterations)|3.16s (1000 iterations)| -|tomlkit|145.48s (1000 iterations)|2.69s (1000 iterations)| -|pytomlpp|1.58s (1000 iterations)|1.05s (1000 iterations)| -|rtoml|0.98s (1000 iterations)|values must be emitted before tables| -|qtoml|19.28s (1000 iterations)|4.84s (1000 iterations)| - -## Running speed with data provided by `rtoml` - -Test the speed of loading and dumping the loaded using data -provided by `rtoml` - -> https://github.com/samuelcolvin/rtoml/raw/main/tests/data.toml - - -| |Loading speed|Dumping speed| -|-|-|-| -|toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|1.60s (1000 iterations)|0.57s (1000 iterations)| -|tomlkit|32.29s (1000 iterations)|0.76s (1000 iterations)| -|pytomlpp|0.27s (1000 iterations)|0.20s (1000 iterations)| -|rtoml|0.19s (1000 iterations)|0.05s (1000 iterations)| -|qtoml|4.87s (1000 iterations)|1.31s (1000 iterations)| - -## Running speed with data provided by `tomli` - -Test the speed of loading and dumping the loaded using data -provided by `tomli` - -> https://github.com/hukkin/tomli/raw/master/benchmark/data.toml - - -| |Loading speed|Dumping speed| -|-|-|-| -|toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|1.06s (1000 iterations)|0.37s (1000 iterations)| -|tomlkit|20.23s (1000 iterations)|0.42s (1000 iterations)| -|pytomlpp|0.27s (1000 iterations)|0.17s (1000 iterations)| -|rtoml|0.18s (1000 iterations)|0.11s (1000 iterations)| -|qtoml|3.29s (1000 iterations)|0.84s (1000 iterations)| - diff --git a/reports/with_toml-test_v1.1.0.md b/reports/with_toml-test_v1.1.0.md deleted file mode 100644 index 801630d..0000000 --- a/reports/with_toml-test_v1.1.0.md +++ /dev/null @@ -1,354 +0,0 @@ -# Report - -## Version - -The verions of the packages tested in this report. - -| |Version| -|-|-----------------------| -|toml|0.10.2| -|tomli/tomli_w|2.0.1; **tomli_w**: 1.0.0| -|tomlkit|0.11.8| -|pytomlpp|1.0.13| -|rtoml|0.9.0| -|qtoml|0.3.1| - -## Dumping `None` value - -How the package dumps `None` value in python - -Literally `.dumps(None)` - - -| |Dumped value or error| -|-|-----------------------| -|toml|'NoneType' object is not iterable| -|tomli/tomli_w|'NoneType' object has no attribute 'items'| -|tomlkit|Expecting Mapping or TOML Container, given| -|pytomlpp|dumps(): incompatible function arguments. The following argument types are supported:
1. (arg0: dict) -> str

Invoked with: None| -|rtoml|"null"| -|qtoml|'NoneType' object has no attribute 'items'| - -## Dumping key-`None` pair - -How the package dumps key-value pair with value `None` - -Literally `.dumps({"key": None})` - - -| |Dumped value or error| -|-|-----------------------| -|toml|| -|tomli/tomli_w|Object of type is not TOML serializable| -|tomlkit|Invalid type | -|pytomlpp|cannot convert value None to proper toml type
| -|rtoml|key = "null"
| -|qtoml|TOML cannot encode None| - -## Dumping list with `None` value - -How the package dumps a list with `None` value in it. - -Literally `.dumps({"key": [1, 2, 3, None, 5]})` - - -| |Dumped value or error| -|-|-----------------------| -|toml|key = [ 1, 2, 3, "None", 5,]
| -|tomli/tomli_w|Object of type is not TOML serializable| -|tomlkit|Invalid type | -|pytomlpp|not a valid type for conversion None| -|rtoml|key = [1, 2, 3, "null", 5]
| -|qtoml|bad type '' for dump_value| - -## Loading `None`-like values - -How the package loads `None`-like value in string - -Literally `.loads('v1 = "null" v2 = "None"')` - - -| |Loaded as| -|-|-----------------------| -|toml|{'v1': 'null', 'v2': 'None'}| -|tomli/tomli_w|{'v1': 'null', 'v2': 'None'}| -|tomlkit|{'v1': 'null', 'v2': 'None'}| -|pytomlpp|{'v1': 'null', 'v2': 'None'}| -|rtoml|{'v1': 'null', 'v2': 'None'}| -|qtoml|{'v1': 'null', 'v2': 'None'}| - -## Dumping a heterogenous array - -How the package dumps a python dictionary with a heterogenous array. - -Literally `.dumps({"v": [1, 1.2, True, "string"]})` - - -| |Dumped value or error| -|-|-----------------------| -|toml|v = \[ 1, 1.2, true, "string",\]
| -|tomli/tomli_w|v = \[
    1,
    1.2,
    true,
    "string",
\]
| -|tomlkit|v = \[1, 1.2, true, "string"\]
| -|pytomlpp|v = \[ 1, 1.2, 1, 'string' \]| -|rtoml|v = \[1, 1.2, true, "string"\]
| -|qtoml|v = \[1, 1.2, true, 'string'\]
| - -## Loading a heterogenous array - -How the package loads a toml string with a heterogenous array. - -Literally `.loads('v = [1, 1.2, True, "string"]')` - - -| |Loaded as| -|-|-----------------------| -|toml|Not a homogeneous array (line 2 column 1 char 1)| -|tomli/tomli_w|`{'v': [1, 1.2, True, 'string']}`| -|tomlkit|`{'v': [1, 1.2, True, 'string']}`| -|pytomlpp|`{'v': [1, 1.2, True, 'string']}`| -|rtoml|`{'v': [1, 1.2, True, 'string']}`| -|qtoml|`{'v': [1, 1.2, True, 'string']}`| - -## Dumping a nested array - -How the package dumps a python dictionary with a nested array. - -Literally `.dumps({"v": [[1], [1, 2]]})` - - -| |Dumped value or error| -|-|-----------------------| -|toml|v = \[ \[ 1,\], \[ 1, 2,\],\]
| -|tomli/tomli_w|v = \[
    \[
        1,
    \],
    \[
        1,
        2,
    \],
\]
| -|tomlkit|v = \[\[1\], \[1, 2\]\]
| -|pytomlpp|v = \[ \[ 1 \], \[ 1, 2 \] \]| -|rtoml|v = \[\[1\], \[1, 2\]\]
| -|qtoml|v = \[\[1\], \[1, 2\]\]
| - -## Loading a nested array - -How the package loads a toml string with a nested array. - -Literally `.loads('v = [[1], [1, 2]]')` - - -| |Loaded as| -|-|-----------------------| -|toml|`{'v': [[1], [1, 2]]}`| -|tomli/tomli_w|`{'v': [[1], [1, 2]]}`| -|tomlkit|`{'v': [[1], [1, 2]]}`| -|pytomlpp|`{'v': [[1], [1, 2]]}`| -|rtoml|`{'v': [[1], [1, 2]]}`| -|qtoml|`{'v': [[1], [1, 2]]}`| - -## Dumping keeps order of keys? - -Whether the package preserves the order of the keys while dumps -a python dictionary. - -Thus, whether `.dumps({"c": 1, "a": 2, "b": 3})` yields a string -like `c = 1\na = 2\nb = 3\n`. - - -| |Order kept?| -|-|-----------------------| -|toml|Kept| -|tomli/tomli_w|Kept| -|tomlkit|Kept| -|pytomlpp|Lost| -|rtoml|Kept| -|qtoml|Kept| - -## Loading keeps order of keys? - -Whether the package preserves the order of the keys -while loads a TOML string. - -Thus, whether `.loads('c = 1\na = 2\nb = 3\n')` yields -a dictionary with keys in the order of `['c', 'a', 'b']`. - - -| |Order kept?| -|-|-----------------------| -|toml|Kept| -|tomli/tomli_w|Kept| -|tomlkit|Kept| -|pytomlpp|Lost| -|rtoml|Kept| -|qtoml|Kept| - -## Dumping unicode - -How the package dumps Unicode in python - -Literally, `.dumps({"你好": "世界"})` - - -| |Dumped value| -|-|-----------------------| -|toml|"你好" = "世界"
| -|tomli/tomli_w|"你好" = "世界"
| -|tomlkit|"你好" = "世界"
| -|pytomlpp|'你好' = '世界'| -|rtoml|"你好" = "世界"
| -|qtoml|'你好' = '世界'
| - -## Loaded unicode - -How the package loads a file with unicode. - -The file was created by: - -```python -# Create a file with unicode content -with open(self.datafile, "w", encoding="utf-8") as f: - f.write('"你好" = "世界"\n') - -# Use `.load()` to load the file -with open(self.datafile, "r", encoding="utf-8") as f: - loaded = .load(f) -``` - - -| |Loaded as| -|-|-----------------------| -|toml|{'你好': '世界'}| -|tomli/tomli_w|File must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`
When loaded with `rb`:
{'你好': '世界'}| -|tomlkit|{'你好': '世界'}| -|pytomlpp|{'你好': '世界'}| -|rtoml|{'你好': '世界'}| -|qtoml|{'你好': '世界'}| - -## Compliance with valid tests in toml-test - -Test the compliance with the standard test suites for valid toml files -here: - -> https://github.com/BurntSushi/toml-test/ - -The tests come up with a JSON counterpart that can be used to valid whether -loading the toml file yields the same result as the JSON counterpart. - - -| |Result (toml-test v1.1.0)| -|-|-----------------------| -|toml|[key/escapes.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/key/escapes.toml) Parsed as unexpected data.
[key/dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/key/dotted.toml) Found invalid character in key name: '"'. Try quoting the key name. (line 12 column 11 char 245)
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/comment/tricky.toml) Parsed as unexpected data.
[inline-table/key-dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/inline-table/key-dotted.toml) Parsed as unexpected data.
[inline-table/multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/inline-table/multiline.toml) Invalid inline table value encountered (line 1 column 1 char 0)
[array/nested-double.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/array/nested-double.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-string.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/array/mixed-int-string.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-string-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/array/mixed-string-table.toml) list index out of range
[array/mixed-int-array.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/array/mixed-int-array.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-float.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/array/mixed-int-float.toml) Not a homogeneous array (line 1 column 1 char 0)
[float/zero.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/float/zero.toml) Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 47)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/datetime/datetime.toml) Parsed as unexpected data.
[datetime/local-time.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/datetime/local-time.toml) Parsed as unexpected data.
*86/99 (86.87%) passed*| -|tomli/tomli_w|OK, *99/99 (100%) passed*| -|tomlkit|OK, *99/99 (100%) passed*| -|pytomlpp|OK, *99/99 (100%) passed*| -|rtoml|OK, *99/99 (100%) passed*| -|qtoml|[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/comment/tricky.toml) can't parse type (line 11, column 7)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/string/multiline-quotes.toml) Didn't find expected newline (line 4, column 26)
[datetime/milliseconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/datetime/milliseconds.toml) Didn't find expected newline (line 2, column 27)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//valid/datetime/datetime.toml) Didn't find expected newline (line 2, column 18)
*95/99 (95.96%) passed*| - -## Compliance with invalid tests in toml-test - -Test the compliance with the standard test suites for invalid toml files -here: - -> https://github.com/BurntSushi/toml-test/ - -- `Not OK`: The toml file is parsed without error, but expected to fail. -- `OK`: All files are failed to parse, as expected. Showing the last -parsing error. - - -| |Result (toml-test v1.1.0)| -|-|-----------------------| -|toml|Not OK: [key/escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/key/escape.toml) incorrectly parsed.
Not OK: [key/special-character.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/key/special-character.toml) incorrectly parsed.
Not OK: [key/two-equals3.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/key/two-equals3.toml) incorrectly parsed.
Not OK: [key/two-equals2.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/key/two-equals2.toml) incorrectly parsed.
Not OK: [inline-table/add.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/inline-table/add.toml) incorrectly parsed.
Not OK: [array/no-close-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/array/no-close-2.toml) incorrectly parsed.
Not OK: [array/tables-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/array/tables-1.toml) incorrectly parsed.
Not OK: [array/no-close.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/array/no-close.toml) incorrectly parsed.
Not OK: [array/no-close-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/array/no-close-table.toml) incorrectly parsed.
Not OK: [array/no-close-table-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/array/no-close-table-2.toml) incorrectly parsed.
Not OK: *35 more items incorrectly parsed.*
*169/214 (78.97%) passed*| -|tomli/tomli_w|OK: [datetime/mday-under.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/datetime/mday-under.toml) Expected newline or end of document after a statement (at line 3, column 9)
*214/214 (100%) passed*| -|tomlkit|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/table/append-with-dotted-keys-2.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
*210/214 (98.13%) passed*| -|pytomlpp|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
*212/214 (99.07%) passed*| -|rtoml|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [integer/positive-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/integer/positive-hex.toml) incorrectly parsed.
Not OK: [integer/positive-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/integer/positive-bin.toml) incorrectly parsed.
*209/214 (97.66%) passed*| -|qtoml|Not OK: [inline-table/trailing-comma.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/inline-table/trailing-comma.toml) incorrectly parsed.
Not OK: [inline-table/add.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/inline-table/add.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/comment-us.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/table/duplicate-key-dotted-table.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table2.toml](https://github.com/BurntSushi/toml-test/blob/v1.1.0/tests//invalid/table/duplicate-key-dotted-table2.toml) incorrectly parsed.
Not OK: *2 more items incorrectly parsed.*
*202/214 (94.39%) passed*| - -## Compliance with valid tests in python tomllib test data - -Test the compliance with python tomllib test data (since python 3.11) -for valid toml files here: - -> https://github.com/python/cpython/tree/3.11/Lib/test/test_tomllib/data/valid - -The tests come up with a JSON counterpart that can be used to valid whether -loading the toml file yields the same result as the JSON counterpart. - - -| |Result (cpython tag 3.11.0)| -|-|-----------------------| -|toml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Unbalanced quotes (line 1 column 50 char 49)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/five-quotes.toml) Unterminated string found. Reached end of file. (line 7 column 1 char 97)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Parsed as unexpected data.
[multiline-basic-str/ends-in-whitespace-escape.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/multiline-basic-str/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
*8/12 (66.67%) passed*| -|tomli/tomli_w|OK, *12/12 (100%) passed*| -|tomlkit|OK, *12/12 (100%) passed*| -|pytomlpp|OK, *12/12 (100%) passed*| -|rtoml|OK, *12/12 (100%) passed*| -|qtoml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Didn't find expected newline (line 3, column 3)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/five-quotes.toml) Didn't find expected newline (line 3, column 3)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Didn't find expected newline (line 1, column 19)
*9/12 (75.00%) passed*| - -## Compliance with invalid tests in python tomllib test data - -Test the compliance with python tomllib test data (since python 3.11) -for invalid toml files here: - -> https://github.com/python/cpython/tree/main/Lib/test/test_tomllib/data/invalid - -- `Not OK`: The toml file is parsed without error, but expected to fail. -- `OK`: All files are failed to parse, as expected. Showing the last -parsing error. - - -| |Result (cpython tag 3.11.0)| -|-|-----------------------| -|toml|Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [inline-table/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/unclosed-empty.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [array/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/unclosed-empty.toml) incorrectly parsed.
Not OK: [array/unclosed-after-item.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/unclosed-after-item.toml) incorrectly parsed.
Not OK: [array/file-end-after-val.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/file-end-after-val.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*41/50 (82.00%) passed*| -|tomli/tomli_w|OK: [multiline-basic-str/escape-only.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/escape-only.toml) Unterminated string (at end of document)
*50/50 (100%) passed*| -|tomlkit|Not OK: [inline-table/override-val-in-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/override-val-in-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-aot.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-aot.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [array-of-tables/overwrite-array-in-parent.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array-of-tables/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*44/50 (88.00%) passed*| -|pytomlpp|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| -|rtoml|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| -|qtoml|Not OK: [non-scalar-escaped.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/non-scalar-escaped.toml) incorrectly parsed.
Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [inline-table/override-val-with-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/override-val-with-table.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [table/redefine-2.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/table/redefine-2.toml) incorrectly parsed.
Not OK: [table/redefine-1.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/table/redefine-1.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*41/50 (82.00%) passed*| - -## Running speed with data provided by `pytomlpp` - -Test the speed of loading and dumping the loaded -using data provided by `pytomlpp` - -> https://github.com/bobfang1992/pytomlpp/raw/master/benchmark/data.toml - - -| |Loading speed|Dumping speed| -|-|-|-| -|toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|7.28s (1000 iterations)|3.27s (1000 iterations)| -|tomlkit|144.16s (1000 iterations)|2.23s (1000 iterations)| -|pytomlpp|1.41s (1000 iterations)|0.95s (1000 iterations)| -|rtoml|0.98s (1000 iterations)|values must be emitted before tables| -|qtoml|18.94s (1000 iterations)|4.87s (1000 iterations)| - -## Running speed with data provided by `rtoml` - -Test the speed of loading and dumping the loaded using data -provided by `rtoml` - -> https://github.com/samuelcolvin/rtoml/raw/main/tests/data.toml - - -| |Loading speed|Dumping speed| -|-|-|-| -|toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|1.79s (1000 iterations)|0.62s (1000 iterations)| -|tomlkit|31.72s (1000 iterations)|0.74s (1000 iterations)| -|pytomlpp|0.26s (1000 iterations)|0.22s (1000 iterations)| -|rtoml|0.20s (1000 iterations)|0.06s (1000 iterations)| -|qtoml|4.90s (1000 iterations)|1.24s (1000 iterations)| - -## Running speed with data provided by `tomli` - -Test the speed of loading and dumping the loaded using data -provided by `tomli` - -> https://github.com/hukkin/tomli/raw/master/benchmark/data.toml - - -| |Loading speed|Dumping speed| -|-|-|-| -|toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|1.12s (1000 iterations)|0.38s (1000 iterations)| -|tomlkit|20.12s (1000 iterations)|0.37s (1000 iterations)| -|pytomlpp|0.25s (1000 iterations)|0.16s (1000 iterations)| -|rtoml|0.17s (1000 iterations)|0.10s (1000 iterations)| -|qtoml|3.34s (1000 iterations)|0.93s (1000 iterations)| - diff --git a/reports/with_toml-test_v1.2.0.md b/reports/with_toml-test_v1.2.0.md index 274b7ed..31d41cd 100644 --- a/reports/with_toml-test_v1.2.0.md +++ b/reports/with_toml-test_v1.2.0.md @@ -8,10 +8,10 @@ The verions of the packages tested in this report. |-|-----------------------| |toml|0.10.2| |tomli/tomli_w|2.0.1; **tomli_w**: 1.0.0| -|tomlkit|0.11.8| -|pytomlpp|1.0.13| -|rtoml|0.9.0| +|tomlkit|0.12.5| +|rtoml|0.11.0| |qtoml|0.3.1| +|tomllib|(Python 3.12.2)| ## Dumping `None` value @@ -25,9 +25,9 @@ Literally `.dumps(None)` |toml|'NoneType' object is not iterable| |tomli/tomli_w|'NoneType' object has no attribute 'items'| |tomlkit|Expecting Mapping or TOML Container, given| -|pytomlpp|dumps(): incompatible function arguments. The following argument types are supported:
1. (arg0: dict) -> str

Invoked with: None| |rtoml|"null"| |qtoml|'NoneType' object has no attribute 'items'| +|tomllib|Dumping not supported| ## Dumping key-`None` pair @@ -41,9 +41,9 @@ Literally `.dumps({"key": None})` |toml|| |tomli/tomli_w|Object of type is not TOML serializable| |tomlkit|Invalid type | -|pytomlpp|cannot convert value None to proper toml type
| |rtoml|key = "null"
| |qtoml|TOML cannot encode None| +|tomllib|Dumping not supported| ## Dumping list with `None` value @@ -57,9 +57,9 @@ Literally `.dumps({"key": [1, 2, 3, None, 5]})` |toml|key = [ 1, 2, 3, "None", 5,]
| |tomli/tomli_w|Object of type is not TOML serializable| |tomlkit|Invalid type | -|pytomlpp|not a valid type for conversion None| |rtoml|key = [1, 2, 3, "null", 5]
| |qtoml|bad type '' for dump_value| +|tomllib|Dumping not supported| ## Loading `None`-like values @@ -73,9 +73,9 @@ Literally `.loads('v1 = "null" v2 = "None"')` |toml|{'v1': 'null', 'v2': 'None'}| |tomli/tomli_w|{'v1': 'null', 'v2': 'None'}| |tomlkit|{'v1': 'null', 'v2': 'None'}| -|pytomlpp|{'v1': 'null', 'v2': 'None'}| |rtoml|{'v1': 'null', 'v2': 'None'}| |qtoml|{'v1': 'null', 'v2': 'None'}| +|tomllib|{'v1': 'null', 'v2': 'None'}| ## Dumping a heterogenous array @@ -89,9 +89,9 @@ Literally `.dumps({"v": [1, 1.2, True, "string"]})` |toml|v = \[ 1, 1.2, true, "string",\]
| |tomli/tomli_w|v = \[
    1,
    1.2,
    true,
    "string",
\]
| |tomlkit|v = \[1, 1.2, true, "string"\]
| -|pytomlpp|v = \[ 1, 1.2, 1, 'string' \]| |rtoml|v = \[1, 1.2, true, "string"\]
| |qtoml|v = \[1, 1.2, true, 'string'\]
| +|tomllib|Dumping not supported| ## Loading a heterogenous array @@ -105,9 +105,9 @@ Literally `.loads('v = [1, 1.2, True, "string"]')` |toml|Not a homogeneous array (line 2 column 1 char 1)| |tomli/tomli_w|`{'v': [1, 1.2, True, 'string']}`| |tomlkit|`{'v': [1, 1.2, True, 'string']}`| -|pytomlpp|`{'v': [1, 1.2, True, 'string']}`| |rtoml|`{'v': [1, 1.2, True, 'string']}`| |qtoml|`{'v': [1, 1.2, True, 'string']}`| +|tomllib|`{'v': [1, 1.2, True, 'string']}`| ## Dumping a nested array @@ -121,9 +121,9 @@ Literally `.dumps({"v": [[1], [1, 2]]})` |toml|v = \[ \[ 1,\], \[ 1, 2,\],\]
| |tomli/tomli_w|v = \[
    \[
        1,
    \],
    \[
        1,
        2,
    \],
\]
| |tomlkit|v = \[\[1\], \[1, 2\]\]
| -|pytomlpp|v = \[ \[ 1 \], \[ 1, 2 \] \]| |rtoml|v = \[\[1\], \[1, 2\]\]
| |qtoml|v = \[\[1\], \[1, 2\]\]
| +|tomllib|Dumping not supported| ## Loading a nested array @@ -137,9 +137,9 @@ Literally `.loads('v = [[1], [1, 2]]')` |toml|`{'v': [[1], [1, 2]]}`| |tomli/tomli_w|`{'v': [[1], [1, 2]]}`| |tomlkit|`{'v': [[1], [1, 2]]}`| -|pytomlpp|`{'v': [[1], [1, 2]]}`| |rtoml|`{'v': [[1], [1, 2]]}`| |qtoml|`{'v': [[1], [1, 2]]}`| +|tomllib|`{'v': [[1], [1, 2]]}`| ## Dumping keeps order of keys? @@ -155,9 +155,9 @@ like `c = 1\na = 2\nb = 3\n`. |toml|Kept| |tomli/tomli_w|Kept| |tomlkit|Kept| -|pytomlpp|Lost| |rtoml|Kept| |qtoml|Kept| +|tomllib|Dumping not supported| ## Loading keeps order of keys? @@ -173,9 +173,9 @@ a dictionary with keys in the order of `['c', 'a', 'b']`. |toml|Kept| |tomli/tomli_w|Kept| |tomlkit|Kept| -|pytomlpp|Lost| |rtoml|Kept| |qtoml|Kept| +|tomllib|Kept| ## Dumping unicode @@ -189,9 +189,9 @@ Literally, `.dumps({"你好": "世界"})` |toml|"你好" = "世界"
| |tomli/tomli_w|"你好" = "世界"
| |tomlkit|"你好" = "世界"
| -|pytomlpp|'你好' = '世界'| |rtoml|"你好" = "世界"
| |qtoml|'你好' = '世界'
| +|tomllib|Dumping not supported| ## Loaded unicode @@ -215,9 +215,9 @@ with open(self.datafile, "r", encoding="utf-8") as f: |toml|{'你好': '世界'}| |tomli/tomli_w|File must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`
When loaded with `rb`:
{'你好': '世界'}| |tomlkit|{'你好': '世界'}| -|pytomlpp|{'你好': '世界'}| |rtoml|{'你好': '世界'}| |qtoml|{'你好': '世界'}| +|tomllib|File must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`
When loaded with `rb`:
{'你好': '世界'}| ## Compliance with valid tests in toml-test @@ -232,12 +232,12 @@ loading the toml file yields the same result as the JSON counterpart. | |Result (toml-test v1.2.0)| |-|-----------------------| -|toml|[key/escapes.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/key/escapes.toml) Parsed as unexpected data.
[key/dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/key/dotted.toml) Found invalid character in key name: '"'. Try quoting the key name. (line 12 column 11 char 245)
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/comment/tricky.toml) Parsed as unexpected data.
[inline-table/key-dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/inline-table/key-dotted.toml) Parsed as unexpected data.
[inline-table/multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/inline-table/multiline.toml) Invalid inline table value encountered (line 1 column 1 char 0)
[array/nested-double.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/array/nested-double.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-string.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/array/mixed-int-string.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-string-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/array/mixed-string-table.toml) list index out of range
[array/mixed-int-array.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/array/mixed-int-array.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-float.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/array/mixed-int-float.toml) Not a homogeneous array (line 1 column 1 char 0)
[float/zero.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/float/zero.toml) Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 47)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/string/escape-esc.toml) Reserved escape sequence used (line 1 column 1 char 0)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/datetime/datetime.toml) Parsed as unexpected data.
[datetime/local-time.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/datetime/local-time.toml) Parsed as unexpected data.
*86/100 (86.00%) passed*| +|toml|[datetime/local-time.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/datetime/local-time.toml) Parsed as unexpected data.
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/datetime/datetime.toml) Parsed as unexpected data.
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/comment/tricky.toml) Parsed as unexpected data.
[key/dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/key/dotted.toml) Found invalid character in key name: '"'. Try quoting the key name. (line 12 column 11 char 245)
[key/escapes.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/key/escapes.toml) Parsed as unexpected data.
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/string/escape-esc.toml) Reserved escape sequence used (line 1 column 1 char 0)
[float/zero.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/float/zero.toml) Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 47)
[array/mixed-int-string.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/array/mixed-int-string.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/nested-double.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/array/nested-double.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-float.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/array/mixed-int-float.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-string-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/array/mixed-string-table.toml) list index out of range
[array/mixed-int-array.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/array/mixed-int-array.toml) Not a homogeneous array (line 1 column 1 char 0)
[inline-table/multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/inline-table/multiline.toml) Invalid inline table value encountered (line 1 column 1 char 0)
[inline-table/key-dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/inline-table/key-dotted.toml) Parsed as unexpected data.
*86/100 (86.00%) passed*| |tomli/tomli_w|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/string/escape-esc.toml) Unescaped '\' in a string (at line 1, column 10)
*99/100 (99.00%) passed*| |tomlkit|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/string/escape-esc.toml) Invalid character 'e' in string at line 1 col 8
*99/100 (99.00%) passed*| -|pytomlpp|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/string/escape-esc.toml) Error while parsing string: escape sequence '\e' is not supported in TOML 1.0.0 and earlier (error occurred at line 1, column 9)
*99/100 (99.00%) passed*| |rtoml|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/string/escape-esc.toml) invalid escape character in string: `e` at line 1 column 9
*99/100 (99.00%) passed*| -|qtoml|[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/comment/tricky.toml) can't parse type (line 11, column 7)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/string/multiline-quotes.toml) Didn't find expected newline (line 4, column 26)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/string/escape-esc.toml) \e not a valid escape (line 1, column 33)
[datetime/milliseconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/datetime/milliseconds.toml) Didn't find expected newline (line 2, column 27)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/datetime/datetime.toml) Didn't find expected newline (line 2, column 18)
*95/100 (95.00%) passed*| +|qtoml|[datetime/milliseconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/datetime/milliseconds.toml) Didn't find expected newline (line 2, column 27)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/datetime/datetime.toml) Didn't find expected newline (line 2, column 18)
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/comment/tricky.toml) can't parse type (line 11, column 7)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/string/escape-esc.toml) \e not a valid escape (line 1, column 33)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/string/multiline-quotes.toml) Didn't find expected newline (line 4, column 26)
*95/100 (95.00%) passed*| +|tomllib|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//valid/string/escape-esc.toml) Unescaped '\' in a string (at line 1, column 10)
*99/100 (99.00%) passed*| ## Compliance with invalid tests in toml-test @@ -253,12 +253,12 @@ parsing error. | |Result (toml-test v1.2.0)| |-|-----------------------| -|toml|Not OK: [key/escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/key/escape.toml) incorrectly parsed.
Not OK: [key/special-character.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/key/special-character.toml) incorrectly parsed.
Not OK: [key/two-equals3.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/key/two-equals3.toml) incorrectly parsed.
Not OK: [key/two-equals2.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/key/two-equals2.toml) incorrectly parsed.
Not OK: [inline-table/add.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/inline-table/add.toml) incorrectly parsed.
Not OK: [array/no-close-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/array/no-close-2.toml) incorrectly parsed.
Not OK: [array/tables-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/array/tables-1.toml) incorrectly parsed.
Not OK: [array/no-close.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/array/no-close.toml) incorrectly parsed.
Not OK: [array/extending-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/array/extending-table.toml) incorrectly parsed.
Not OK: [array/no-close-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/array/no-close-table.toml) incorrectly parsed.
Not OK: *36 more items incorrectly parsed.*
*177/223 (79.37%) passed*| -|tomli/tomli_w|OK: [datetime/mday-under.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/datetime/mday-under.toml) Expected newline or end of document after a statement (at line 3, column 9)
*223/223 (100%) passed*| -|tomlkit|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/table/append-with-dotted-keys-2.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
*219/223 (98.21%) passed*| -|pytomlpp|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
*221/223 (99.10%) passed*| -|rtoml|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [integer/positive-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/integer/positive-hex.toml) incorrectly parsed.
Not OK: [integer/positive-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/integer/positive-bin.toml) incorrectly parsed.
*218/223 (97.76%) passed*| -|qtoml|Not OK: [inline-table/trailing-comma.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/inline-table/trailing-comma.toml) incorrectly parsed.
Not OK: [inline-table/add.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/inline-table/add.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-us.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/table/duplicate-key-dotted-table.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table2.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/table/duplicate-key-dotted-table2.toml) incorrectly parsed.
Not OK: *2 more items incorrectly parsed.*
*211/223 (94.62%) passed*| +|toml|Not OK: [integer/double-sign-plus.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/integer/double-sign-plus.toml) incorrectly parsed.
Not OK: [integer/us-after-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/integer/us-after-bin.toml) incorrectly parsed.
Not OK: [integer/double-sign-nex.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/integer/double-sign-nex.toml) incorrectly parsed.
Not OK: [integer/us-after-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/integer/us-after-hex.toml) incorrectly parsed.
Not OK: [integer/us-after-oct.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/integer/us-after-oct.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/string-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/string-del.toml) incorrectly parsed.
Not OK: [control/multi-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/multi-us.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
Not OK: *36 more items incorrectly parsed.*
*177/223 (79.37%) passed*| +|tomli/tomli_w|OK: [inline-table/linebreak-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/inline-table/linebreak-1.toml) Unclosed inline table (at line 3, column 18)
*223/223 (100%) passed*| +|tomlkit|Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/table/append-with-dotted-keys-2.toml) incorrectly parsed.
*219/223 (98.21%) passed*| +|rtoml|Not OK: [integer/positive-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/integer/positive-hex.toml) incorrectly parsed.
Not OK: [integer/positive-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/integer/positive-bin.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
*218/223 (97.76%) passed*| +|qtoml|Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/comment-us.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/table/duplicate-key-dotted-table.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/table/append-with-dotted-keys-2.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table2.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/table/duplicate-key-dotted-table2.toml) incorrectly parsed.
Not OK: *2 more items incorrectly parsed.*
*211/223 (94.62%) passed*| +|tomllib|OK: [inline-table/linebreak-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.2.0/tests//invalid/inline-table/linebreak-1.toml) Unclosed inline table (at line 3, column 18)
*223/223 (100%) passed*| ## Compliance with valid tests in python tomllib test data @@ -271,14 +271,14 @@ The tests come up with a JSON counterpart that can be used to valid whether loading the toml file yields the same result as the JSON counterpart. -| |Result (cpython tag 3.11.0)| +| |Result (cpython tag 3.12.4)| |-|-----------------------| -|toml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Unbalanced quotes (line 1 column 50 char 49)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/five-quotes.toml) Unterminated string found. Reached end of file. (line 7 column 1 char 97)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Parsed as unexpected data.
[multiline-basic-str/ends-in-whitespace-escape.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/multiline-basic-str/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
*8/12 (66.67%) passed*| +|toml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Unbalanced quotes (line 1 column 50 char 49)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/five-quotes.toml) Unterminated string found. Reached end of file. (line 7 column 1 char 97)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Parsed as unexpected data.
[multiline-basic-str/ends-in-whitespace-escape.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/multiline-basic-str/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
*8/12 (66.67%) passed*| |tomli/tomli_w|OK, *12/12 (100%) passed*| |tomlkit|OK, *12/12 (100%) passed*| -|pytomlpp|OK, *12/12 (100%) passed*| |rtoml|OK, *12/12 (100%) passed*| -|qtoml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Didn't find expected newline (line 3, column 3)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/five-quotes.toml) Didn't find expected newline (line 3, column 3)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Didn't find expected newline (line 1, column 19)
*9/12 (75.00%) passed*| +|qtoml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Didn't find expected newline (line 3, column 3)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/five-quotes.toml) Didn't find expected newline (line 3, column 3)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Didn't find expected newline (line 1, column 19)
*9/12 (75.00%) passed*| +|tomllib|OK, *12/12 (100%) passed*| ## Compliance with invalid tests in python tomllib test data @@ -292,31 +292,14 @@ for invalid toml files here: parsing error. -| |Result (cpython tag 3.11.0)| +| |Result (cpython tag 3.12.4)| |-|-----------------------| -|toml|Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [inline-table/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/unclosed-empty.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [array/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/unclosed-empty.toml) incorrectly parsed.
Not OK: [array/unclosed-after-item.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/unclosed-after-item.toml) incorrectly parsed.
Not OK: [array/file-end-after-val.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/file-end-after-val.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*41/50 (82.00%) passed*| -|tomli/tomli_w|OK: [multiline-basic-str/escape-only.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/escape-only.toml) Unterminated string (at end of document)
*50/50 (100%) passed*| -|tomlkit|Not OK: [inline-table/override-val-in-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/override-val-in-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-aot.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-aot.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [array-of-tables/overwrite-array-in-parent.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array-of-tables/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*44/50 (88.00%) passed*| -|pytomlpp|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| -|rtoml|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| -|qtoml|Not OK: [non-scalar-escaped.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/non-scalar-escaped.toml) incorrectly parsed.
Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [inline-table/override-val-with-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/override-val-with-table.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [table/redefine-2.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/table/redefine-2.toml) incorrectly parsed.
Not OK: [table/redefine-1.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/table/redefine-1.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*41/50 (82.00%) passed*| - -## Running speed with data provided by `pytomlpp` - -Test the speed of loading and dumping the loaded -using data provided by `pytomlpp` - -> https://github.com/bobfang1992/pytomlpp/raw/master/benchmark/data.toml - - -| |Loading speed|Dumping speed| -|-|-|-| -|toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|7.34s (1000 iterations)|3.21s (1000 iterations)| -|tomlkit|146.22s (1000 iterations)|2.32s (1000 iterations)| -|pytomlpp|1.61s (1000 iterations)|1.08s (1000 iterations)| -|rtoml|1.00s (1000 iterations)|values must be emitted before tables| -|qtoml|18.91s (1000 iterations)|5.37s (1000 iterations)| +|toml|Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [array/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/unclosed-empty.toml) incorrectly parsed.
Not OK: [array/file-end-after-val.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/file-end-after-val.toml) incorrectly parsed.
Not OK: [array/unclosed-after-item.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/unclosed-after-item.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [inline-table/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/unclosed-empty.toml) incorrectly parsed.
*41/50 (82.00%) passed*| +|tomli/tomli_w|OK: [inline-table/overwrite-implicitly.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-implicitly.toml) Cannot overwrite a value (at line 1, column 21)
*50/50 (100%) passed*| +|tomlkit|Not OK: [array-of-tables/overwrite-array-in-parent.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array-of-tables/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-aot.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-aot.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [inline-table/override-val-in-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/override-val-in-table.toml) incorrectly parsed.
*44/50 (88.00%) passed*| +|rtoml|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| +|qtoml|Not OK: [non-scalar-escaped.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/non-scalar-escaped.toml) incorrectly parsed.
Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [table/redefine-2.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/table/redefine-2.toml) incorrectly parsed.
Not OK: [table/redefine-1.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/table/redefine-1.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [inline-table/override-val-with-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/override-val-with-table.toml) incorrectly parsed.
*41/50 (82.00%) passed*| +|tomllib|OK: [inline-table/overwrite-implicitly.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-implicitly.toml) Cannot overwrite a value (at line 1, column 21)
*50/50 (100%) passed*| ## Running speed with data provided by `rtoml` @@ -329,11 +312,11 @@ provided by `rtoml` | |Loading speed|Dumping speed| |-|-|-| |toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|1.71s (1000 iterations)|0.56s (1000 iterations)| -|tomlkit|30.65s (1000 iterations)|0.90s (1000 iterations)| -|pytomlpp|0.30s (1000 iterations)|0.24s (1000 iterations)| -|rtoml|0.23s (1000 iterations)|0.06s (1000 iterations)| -|qtoml|5.47s (1000 iterations)|1.47s (1000 iterations)| +|tomli/tomli_w|2.10s (5000 iterations)|0.74s (5000 iterations)| +|tomlkit|40.82s (5000 iterations)|0.99s (5000 iterations)| +|rtoml|0.37s (5000 iterations)|0.09s (5000 iterations)| +|qtoml|5.01s (5000 iterations)|1.88s (5000 iterations)| +|tomllib|2.06s (5000 iterations)|Dumping not supported| ## Running speed with data provided by `tomli` @@ -346,9 +329,9 @@ provided by `tomli` | |Loading speed|Dumping speed| |-|-|-| |toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|1.25s (1000 iterations)|0.42s (1000 iterations)| -|tomlkit|19.34s (1000 iterations)|0.39s (1000 iterations)| -|pytomlpp|0.25s (1000 iterations)|0.16s (1000 iterations)| -|rtoml|0.16s (1000 iterations)|0.10s (1000 iterations)| -|qtoml|3.19s (1000 iterations)|0.87s (1000 iterations)| +|tomli/tomli_w|1.42s (5000 iterations)|0.46s (5000 iterations)| +|tomlkit|25.31s (5000 iterations)|0.50s (5000 iterations)| +|rtoml|0.32s (5000 iterations)|0.16s (5000 iterations)| +|qtoml|3.65s (5000 iterations)|1.28s (5000 iterations)| +|tomllib|1.54s (5000 iterations)|Dumping not supported| diff --git a/reports/with_python3.11.md b/reports/with_toml-test_v1.3.0.md similarity index 55% rename from reports/with_python3.11.md rename to reports/with_toml-test_v1.3.0.md index 473c8fe..c19352d 100644 --- a/reports/with_python3.11.md +++ b/reports/with_toml-test_v1.3.0.md @@ -8,10 +8,10 @@ The verions of the packages tested in this report. |-|-----------------------| |toml|0.10.2| |tomli/tomli_w|2.0.1; **tomli_w**: 1.0.0| -|tomlkit|0.11.8| -|rtoml|0.9.0| +|tomlkit|0.12.5| +|rtoml|0.11.0| |qtoml|0.3.1| -|tomllib|(Python 3.11.2)| +|tomllib|(Python 3.12.2)| ## Dumping `None` value @@ -232,11 +232,11 @@ loading the toml file yields the same result as the JSON counterpart. | |Result (toml-test v1.3.0)| |-|-----------------------| -|toml|[key/escapes.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/key/escapes.toml) Parsed as unexpected data.
[key/dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/key/dotted.toml) Found invalid character in key name: '"'. Try quoting the key name. (line 12 column 11 char 245)
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/comment/tricky.toml) Parsed as unexpected data.
[inline-table/key-dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/inline-table/key-dotted.toml) Parsed as unexpected data.
[inline-table/multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/inline-table/multiline.toml) Invalid inline table value encountered (line 1 column 1 char 0)
[array/nested-double.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/nested-double.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-string.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-int-string.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-string-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-string-table.toml) list index out of range
[array/mixed-int-array.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-int-array.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-float.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-int-float.toml) Not a homogeneous array (line 1 column 1 char 0)
[float/zero.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/float/zero.toml) Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 47)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Reserved escape sequence used (line 1 column 1 char 0)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/datetime.toml) Parsed as unexpected data.
[datetime/local-time.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/local-time.toml) Parsed as unexpected data.
*86/100 (86.00%) passed*| +|toml|[datetime/local-time.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/local-time.toml) Parsed as unexpected data.
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/datetime.toml) Parsed as unexpected data.
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/comment/tricky.toml) Parsed as unexpected data.
[key/dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/key/dotted.toml) Found invalid character in key name: '"'. Try quoting the key name. (line 12 column 11 char 245)
[key/escapes.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/key/escapes.toml) Parsed as unexpected data.
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Reserved escape sequence used (line 1 column 1 char 0)
[float/zero.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/float/zero.toml) Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 47)
[array/mixed-int-string.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-int-string.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/nested-double.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/nested-double.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-int-float.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-int-float.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-string-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-string-table.toml) list index out of range
[array/mixed-int-array.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/array/mixed-int-array.toml) Not a homogeneous array (line 1 column 1 char 0)
[inline-table/multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/inline-table/multiline.toml) Invalid inline table value encountered (line 1 column 1 char 0)
[inline-table/key-dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/inline-table/key-dotted.toml) Parsed as unexpected data.
*86/100 (86.00%) passed*| |tomli/tomli_w|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Unescaped '\' in a string (at line 1, column 10)
*99/100 (99.00%) passed*| |tomlkit|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Invalid character 'e' in string at line 1 col 8
*99/100 (99.00%) passed*| |rtoml|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) invalid escape character in string: `e` at line 1 column 9
*99/100 (99.00%) passed*| -|qtoml|[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/comment/tricky.toml) can't parse type (line 11, column 7)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/multiline-quotes.toml) Didn't find expected newline (line 4, column 26)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) \e not a valid escape (line 1, column 33)
[datetime/milliseconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/milliseconds.toml) Didn't find expected newline (line 2, column 27)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/datetime.toml) Didn't find expected newline (line 2, column 18)
*95/100 (95.00%) passed*| +|qtoml|[datetime/milliseconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/milliseconds.toml) Didn't find expected newline (line 2, column 27)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/datetime/datetime.toml) Didn't find expected newline (line 2, column 18)
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/comment/tricky.toml) can't parse type (line 11, column 7)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) \e not a valid escape (line 1, column 33)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/multiline-quotes.toml) Didn't find expected newline (line 4, column 26)
*95/100 (95.00%) passed*| |tomllib|[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//valid/string/escape-esc.toml) Unescaped '\' in a string (at line 1, column 10)
*99/100 (99.00%) passed*| ## Compliance with invalid tests in toml-test @@ -253,12 +253,12 @@ parsing error. | |Result (toml-test v1.3.0)| |-|-----------------------| -|toml|Not OK: [key/start-dot.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/start-dot.toml) incorrectly parsed.
Not OK: [key/escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/escape.toml) incorrectly parsed.
Not OK: [key/special-character.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/special-character.toml) incorrectly parsed.
Not OK: [key/two-equals3.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/two-equals3.toml) incorrectly parsed.
Not OK: [key/two-equals2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/key/two-equals2.toml) incorrectly parsed.
Not OK: [inline-table/add.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/inline-table/add.toml) incorrectly parsed.
Not OK: [array/no-close-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/array/no-close-2.toml) incorrectly parsed.
Not OK: [array/tables-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/array/tables-1.toml) incorrectly parsed.
Not OK: [array/no-close.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/array/no-close.toml) incorrectly parsed.
Not OK: [array/extending-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/array/extending-table.toml) incorrectly parsed.
Not OK: *39 more items incorrectly parsed.*
*188/237 (79.32%) passed*| -|tomli/tomli_w|OK: [datetime/mday-under.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/datetime/mday-under.toml) Expected newline or end of document after a statement (at line 3, column 9)
*237/237 (100%) passed*| -|tomlkit|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/append-with-dotted-keys-2.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
*233/237 (98.31%) passed*| -|rtoml|Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [integer/positive-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/positive-hex.toml) incorrectly parsed.
Not OK: [integer/positive-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/positive-bin.toml) incorrectly parsed.
*232/237 (97.89%) passed*| -|qtoml|Not OK: [inline-table/trailing-comma.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/inline-table/trailing-comma.toml) incorrectly parsed.
Not OK: [inline-table/add.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/inline-table/add.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [control/comment-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-us.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/duplicate-key-dotted-table.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/duplicate-key-dotted-table2.toml) incorrectly parsed.
Not OK: *2 more items incorrectly parsed.*
*225/237 (94.94%) passed*| -|tomllib|OK: [datetime/mday-under.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/datetime/mday-under.toml) Expected newline or end of document after a statement (at line 3, column 9)
*237/237 (100%) passed*| +|toml|Not OK: [integer/double-sign-plus.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/double-sign-plus.toml) incorrectly parsed.
Not OK: [integer/us-after-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/us-after-bin.toml) incorrectly parsed.
Not OK: [integer/double-sign-nex.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/double-sign-nex.toml) incorrectly parsed.
Not OK: [integer/us-after-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/us-after-hex.toml) incorrectly parsed.
Not OK: [integer/us-after-oct.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/us-after-oct.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/string-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/string-del.toml) incorrectly parsed.
Not OK: [control/multi-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/multi-us.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
Not OK: *39 more items incorrectly parsed.*
*188/237 (79.32%) passed*| +|tomli/tomli_w|OK: [inline-table/linebreak-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/inline-table/linebreak-1.toml) Unclosed inline table (at line 3, column 18)
*237/237 (100%) passed*| +|tomlkit|Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/append-with-dotted-keys-2.toml) incorrectly parsed.
*233/237 (98.31%) passed*| +|rtoml|Not OK: [integer/positive-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/positive-hex.toml) incorrectly parsed.
Not OK: [integer/positive-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/integer/positive-bin.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
*232/237 (97.89%) passed*| +|qtoml|Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/comment-us.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/duplicate-key-dotted-table.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/append-with-dotted-keys-2.toml) incorrectly parsed.
Not OK: [table/duplicate-key-dotted-table2.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/table/duplicate-key-dotted-table2.toml) incorrectly parsed.
Not OK: *2 more items incorrectly parsed.*
*225/237 (94.94%) passed*| +|tomllib|OK: [inline-table/linebreak-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.3.0/tests//invalid/inline-table/linebreak-1.toml) Unclosed inline table (at line 3, column 18)
*237/237 (100%) passed*| ## Compliance with valid tests in python tomllib test data @@ -271,13 +271,13 @@ The tests come up with a JSON counterpart that can be used to valid whether loading the toml file yields the same result as the JSON counterpart. -| |Result (cpython tag 3.11.0)| +| |Result (cpython tag 3.12.4)| |-|-----------------------| -|toml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Unbalanced quotes (line 1 column 50 char 49)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/five-quotes.toml) Unterminated string found. Reached end of file. (line 7 column 1 char 97)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Parsed as unexpected data.
[multiline-basic-str/ends-in-whitespace-escape.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/multiline-basic-str/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
*8/12 (66.67%) passed*| +|toml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Unbalanced quotes (line 1 column 50 char 49)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/five-quotes.toml) Unterminated string found. Reached end of file. (line 7 column 1 char 97)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Parsed as unexpected data.
[multiline-basic-str/ends-in-whitespace-escape.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/multiline-basic-str/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
*8/12 (66.67%) passed*| |tomli/tomli_w|OK, *12/12 (100%) passed*| |tomlkit|OK, *12/12 (100%) passed*| |rtoml|OK, *12/12 (100%) passed*| -|qtoml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Didn't find expected newline (line 3, column 3)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/five-quotes.toml) Didn't find expected newline (line 3, column 3)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Didn't find expected newline (line 1, column 19)
*9/12 (75.00%) passed*| +|qtoml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Didn't find expected newline (line 3, column 3)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/five-quotes.toml) Didn't find expected newline (line 3, column 3)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Didn't find expected newline (line 1, column 19)
*9/12 (75.00%) passed*| |tomllib|OK, *12/12 (100%) passed*| ## Compliance with invalid tests in python tomllib test data @@ -292,31 +292,14 @@ for invalid toml files here: parsing error. -| |Result (cpython tag 3.11.0)| +| |Result (cpython tag 3.12.4)| |-|-----------------------| -|toml|Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [inline-table/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/unclosed-empty.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [array/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/unclosed-empty.toml) incorrectly parsed.
Not OK: [array/unclosed-after-item.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/unclosed-after-item.toml) incorrectly parsed.
Not OK: [array/file-end-after-val.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array/file-end-after-val.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*41/50 (82.00%) passed*| -|tomli/tomli_w|OK: [multiline-basic-str/escape-only.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/escape-only.toml) Unterminated string (at end of document)
*50/50 (100%) passed*| -|tomlkit|Not OK: [inline-table/override-val-in-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/override-val-in-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-aot.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-aot.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [array-of-tables/overwrite-array-in-parent.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/array-of-tables/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*44/50 (88.00%) passed*| -|rtoml|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| -|qtoml|Not OK: [non-scalar-escaped.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/non-scalar-escaped.toml) incorrectly parsed.
Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [inline-table/override-val-with-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/override-val-with-table.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [table/redefine-2.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/table/redefine-2.toml) incorrectly parsed.
Not OK: [table/redefine-1.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/table/redefine-1.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*41/50 (82.00%) passed*| -|tomllib|OK: [multiline-basic-str/escape-only.toml](https://github.com/python/cpython/tree/v3.11.0/Lib/test/test_tomllib/data//invalid/multiline-basic-str/escape-only.toml) Unterminated string (at end of document)
*50/50 (100%) passed*| - -## Running speed with data provided by `pytomlpp` - -Test the speed of loading and dumping the loaded -using data provided by `pytomlpp` - -> https://github.com/bobfang1992/pytomlpp/raw/master/benchmark/data.toml - - -| |Loading speed|Dumping speed| -|-|-|-| -|toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|2.75s (500 iterations)|1.07s (500 iterations)| -|tomlkit|50.32s (500 iterations)|0.76s (500 iterations)| -|rtoml|0.47s (500 iterations)|values must be emitted before tables| -|qtoml|5.56s (500 iterations)|1.75s (500 iterations)| -|tomllib|2.80s (500 iterations)|Dumping not supported| +|toml|Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [array/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/unclosed-empty.toml) incorrectly parsed.
Not OK: [array/file-end-after-val.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/file-end-after-val.toml) incorrectly parsed.
Not OK: [array/unclosed-after-item.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/unclosed-after-item.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [inline-table/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/unclosed-empty.toml) incorrectly parsed.
*41/50 (82.00%) passed*| +|tomli/tomli_w|OK: [inline-table/overwrite-implicitly.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-implicitly.toml) Cannot overwrite a value (at line 1, column 21)
*50/50 (100%) passed*| +|tomlkit|Not OK: [array-of-tables/overwrite-array-in-parent.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array-of-tables/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-aot.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-aot.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [inline-table/override-val-in-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/override-val-in-table.toml) incorrectly parsed.
*44/50 (88.00%) passed*| +|rtoml|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| +|qtoml|Not OK: [non-scalar-escaped.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/non-scalar-escaped.toml) incorrectly parsed.
Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [table/redefine-2.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/table/redefine-2.toml) incorrectly parsed.
Not OK: [table/redefine-1.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/table/redefine-1.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [inline-table/override-val-with-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/override-val-with-table.toml) incorrectly parsed.
*41/50 (82.00%) passed*| +|tomllib|OK: [inline-table/overwrite-implicitly.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-implicitly.toml) Cannot overwrite a value (at line 1, column 21)
*50/50 (100%) passed*| ## Running speed with data provided by `rtoml` @@ -329,11 +312,11 @@ provided by `rtoml` | |Loading speed|Dumping speed| |-|-|-| |toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|0.63s (500 iterations)|0.20s (500 iterations)| -|tomlkit|10.92s (500 iterations)|0.26s (500 iterations)| -|rtoml|0.09s (500 iterations)|0.03s (500 iterations)| -|qtoml|1.38s (500 iterations)|0.46s (500 iterations)| -|tomllib|0.61s (500 iterations)|Dumping not supported| +|tomli/tomli_w|2.15s (5000 iterations)|0.75s (5000 iterations)| +|tomlkit|39.49s (5000 iterations)|0.99s (5000 iterations)| +|rtoml|0.38s (5000 iterations)|0.09s (5000 iterations)| +|qtoml|4.97s (5000 iterations)|1.87s (5000 iterations)| +|tomllib|2.02s (5000 iterations)|Dumping not supported| ## Running speed with data provided by `tomli` @@ -346,9 +329,9 @@ provided by `tomli` | |Loading speed|Dumping speed| |-|-|-| |toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| -|tomli/tomli_w|0.42s (500 iterations)|0.12s (500 iterations)| -|tomlkit|6.64s (500 iterations)|0.13s (500 iterations)| -|rtoml|0.08s (500 iterations)|0.05s (500 iterations)| -|qtoml|1.00s (500 iterations)|0.31s (500 iterations)| -|tomllib|0.41s (500 iterations)|Dumping not supported| +|tomli/tomli_w|1.40s (5000 iterations)|0.47s (5000 iterations)| +|tomlkit|25.86s (5000 iterations)|0.50s (5000 iterations)| +|rtoml|0.32s (5000 iterations)|0.16s (5000 iterations)| +|qtoml|3.71s (5000 iterations)|1.31s (5000 iterations)| +|tomllib|1.49s (5000 iterations)|Dumping not supported| diff --git a/reports/with_toml-test_v1.4.0.md b/reports/with_toml-test_v1.4.0.md new file mode 100644 index 0000000..3ae2a08 --- /dev/null +++ b/reports/with_toml-test_v1.4.0.md @@ -0,0 +1,337 @@ +# Report + +## Version + +The verions of the packages tested in this report. + +| |Version| +|-|-----------------------| +|toml|0.10.2| +|tomli/tomli_w|2.0.1; **tomli_w**: 1.0.0| +|tomlkit|0.12.5| +|rtoml|0.11.0| +|qtoml|0.3.1| +|tomllib|(Python 3.12.2)| + +## Dumping `None` value + +How the package dumps `None` value in python + +Literally `.dumps(None)` + + +| |Dumped value or error| +|-|-----------------------| +|toml|'NoneType' object is not iterable| +|tomli/tomli_w|'NoneType' object has no attribute 'items'| +|tomlkit|Expecting Mapping or TOML Container, given| +|rtoml|"null"| +|qtoml|'NoneType' object has no attribute 'items'| +|tomllib|Dumping not supported| + +## Dumping key-`None` pair + +How the package dumps key-value pair with value `None` + +Literally `.dumps({"key": None})` + + +| |Dumped value or error| +|-|-----------------------| +|toml|| +|tomli/tomli_w|Object of type is not TOML serializable| +|tomlkit|Invalid type | +|rtoml|key = "null"
| +|qtoml|TOML cannot encode None| +|tomllib|Dumping not supported| + +## Dumping list with `None` value + +How the package dumps a list with `None` value in it. + +Literally `.dumps({"key": [1, 2, 3, None, 5]})` + + +| |Dumped value or error| +|-|-----------------------| +|toml|key = [ 1, 2, 3, "None", 5,]
| +|tomli/tomli_w|Object of type is not TOML serializable| +|tomlkit|Invalid type | +|rtoml|key = [1, 2, 3, "null", 5]
| +|qtoml|bad type '' for dump_value| +|tomllib|Dumping not supported| + +## Loading `None`-like values + +How the package loads `None`-like value in string + +Literally `.loads('v1 = "null" v2 = "None"')` + + +| |Loaded as| +|-|-----------------------| +|toml|{'v1': 'null', 'v2': 'None'}| +|tomli/tomli_w|{'v1': 'null', 'v2': 'None'}| +|tomlkit|{'v1': 'null', 'v2': 'None'}| +|rtoml|{'v1': 'null', 'v2': 'None'}| +|qtoml|{'v1': 'null', 'v2': 'None'}| +|tomllib|{'v1': 'null', 'v2': 'None'}| + +## Dumping a heterogenous array + +How the package dumps a python dictionary with a heterogenous array. + +Literally `.dumps({"v": [1, 1.2, True, "string"]})` + + +| |Dumped value or error| +|-|-----------------------| +|toml|v = \[ 1, 1.2, true, "string",\]
| +|tomli/tomli_w|v = \[
    1,
    1.2,
    true,
    "string",
\]
| +|tomlkit|v = \[1, 1.2, true, "string"\]
| +|rtoml|v = \[1, 1.2, true, "string"\]
| +|qtoml|v = \[1, 1.2, true, 'string'\]
| +|tomllib|Dumping not supported| + +## Loading a heterogenous array + +How the package loads a toml string with a heterogenous array. + +Literally `.loads('v = [1, 1.2, True, "string"]')` + + +| |Loaded as| +|-|-----------------------| +|toml|Not a homogeneous array (line 2 column 1 char 1)| +|tomli/tomli_w|`{'v': [1, 1.2, True, 'string']}`| +|tomlkit|`{'v': [1, 1.2, True, 'string']}`| +|rtoml|`{'v': [1, 1.2, True, 'string']}`| +|qtoml|`{'v': [1, 1.2, True, 'string']}`| +|tomllib|`{'v': [1, 1.2, True, 'string']}`| + +## Dumping a nested array + +How the package dumps a python dictionary with a nested array. + +Literally `.dumps({"v": [[1], [1, 2]]})` + + +| |Dumped value or error| +|-|-----------------------| +|toml|v = \[ \[ 1,\], \[ 1, 2,\],\]
| +|tomli/tomli_w|v = \[
    \[
        1,
    \],
    \[
        1,
        2,
    \],
\]
| +|tomlkit|v = \[\[1\], \[1, 2\]\]
| +|rtoml|v = \[\[1\], \[1, 2\]\]
| +|qtoml|v = \[\[1\], \[1, 2\]\]
| +|tomllib|Dumping not supported| + +## Loading a nested array + +How the package loads a toml string with a nested array. + +Literally `.loads('v = [[1], [1, 2]]')` + + +| |Loaded as| +|-|-----------------------| +|toml|`{'v': [[1], [1, 2]]}`| +|tomli/tomli_w|`{'v': [[1], [1, 2]]}`| +|tomlkit|`{'v': [[1], [1, 2]]}`| +|rtoml|`{'v': [[1], [1, 2]]}`| +|qtoml|`{'v': [[1], [1, 2]]}`| +|tomllib|`{'v': [[1], [1, 2]]}`| + +## Dumping keeps order of keys? + +Whether the package preserves the order of the keys while dumps +a python dictionary. + +Thus, whether `.dumps({"c": 1, "a": 2, "b": 3})` yields a string +like `c = 1\na = 2\nb = 3\n`. + + +| |Order kept?| +|-|-----------------------| +|toml|Kept| +|tomli/tomli_w|Kept| +|tomlkit|Kept| +|rtoml|Kept| +|qtoml|Kept| +|tomllib|Dumping not supported| + +## Loading keeps order of keys? + +Whether the package preserves the order of the keys +while loads a TOML string. + +Thus, whether `.loads('c = 1\na = 2\nb = 3\n')` yields +a dictionary with keys in the order of `['c', 'a', 'b']`. + + +| |Order kept?| +|-|-----------------------| +|toml|Kept| +|tomli/tomli_w|Kept| +|tomlkit|Kept| +|rtoml|Kept| +|qtoml|Kept| +|tomllib|Kept| + +## Dumping unicode + +How the package dumps Unicode in python + +Literally, `.dumps({"你好": "世界"})` + + +| |Dumped value| +|-|-----------------------| +|toml|"你好" = "世界"
| +|tomli/tomli_w|"你好" = "世界"
| +|tomlkit|"你好" = "世界"
| +|rtoml|"你好" = "世界"
| +|qtoml|'你好' = '世界'
| +|tomllib|Dumping not supported| + +## Loaded unicode + +How the package loads a file with unicode. + +The file was created by: + +```python +# Create a file with unicode content +with open(self.datafile, "w", encoding="utf-8") as f: + f.write('"你好" = "世界"\n') + +# Use `.load()` to load the file +with open(self.datafile, "r", encoding="utf-8") as f: + loaded = .load(f) +``` + + +| |Loaded as| +|-|-----------------------| +|toml|{'你好': '世界'}| +|tomli/tomli_w|File must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`
When loaded with `rb`:
{'你好': '世界'}| +|tomlkit|{'你好': '世界'}| +|rtoml|{'你好': '世界'}| +|qtoml|{'你好': '世界'}| +|tomllib|File must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`
When loaded with `rb`:
{'你好': '世界'}| + +## Compliance with valid tests in toml-test + +Test the compliance with the standard test suites for valid toml files +here: + +> https://github.com/BurntSushi/toml-test/ + +The tests come up with a JSON counterpart that can be used to valid whether +loading the toml file yields the same result as the JSON counterpart. + + +| |Result (toml-test v1.4.0)| +|-|-----------------------| +|toml|[spec/array-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/spec/array-0.toml) Not a homogeneous array (line 8 column 1 char 261)
[spec/keys-4.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/spec/keys-4.toml) Found invalid character in key name: 'c'. Try quoting the key name. (line 2 column 8 char 57)
[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/datetime/no-seconds.toml) invalid literal for int() with base 0: '13:37' (line 2 column 1 char 46)
[datetime/local-time.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/datetime/local-time.toml) Parsed as unexpected data.
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/datetime/datetime.toml) Parsed as unexpected data.
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/comment/tricky.toml) Parsed as unexpected data.
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/key/unicode.toml) Found invalid character in key name: '‍'. Try quoting the key name. (line 5 column 2 char 67)
[key/quoted-unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/key/quoted-unicode.toml) Duplicate keys! (line 3 column 1 char 19)
[key/dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/key/dotted.toml) Found invalid character in key name: '"'. Try quoting the key name. (line 12 column 11 char 245)
[key/dotted-empty.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/key/dotted-empty.toml) Duplicate keys! (line 2 column 1 char 17)
[key/escapes.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/key/escapes.toml) Parsed as unexpected data.
[table/empty-name.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/table/empty-name.toml) Can't have a keygroup with an empty name (line 1 column 1 char 0)
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/hex-escape.toml) Reserved escape sequence used (line 3 column 1 char 35)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/escape-esc.toml) Reserved escape sequence used (line 1 column 1 char 0)
[float/zero.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/float/zero.toml) Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 47)
[array/mixed-int-string.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/array/mixed-int-string.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/nested-double.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/array/nested-double.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/string-with-comma-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/array/string-with-comma-2.toml) string index out of range
[array/mixed-int-float.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/array/mixed-int-float.toml) Not a homogeneous array (line 1 column 1 char 0)
[array/mixed-string-table.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/array/mixed-string-table.toml) list index out of range
[array/mixed-int-array.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/array/mixed-int-array.toml) Not a homogeneous array (line 1 column 1 char 0)
[inline-table/multiline.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/inline-table/multiline.toml) Invalid inline table value encountered (line 1 column 1 char 0)
[inline-table/key-dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/inline-table/key-dotted.toml) Parsed as unexpected data.
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/inline-table/newline.toml) Key name found without value. Reached end of line. (line 5 column 2 char 98)
*137/161 (85.09%) passed*| +|tomli/tomli_w|[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/datetime/no-seconds.toml) Expected newline or end of document after a statement (at line 2, column 23)
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/key/unicode.toml) Invalid statement (at line 3, column 1)
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/hex-escape.toml) Unescaped '\' in a string (at line 3, column 22)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/escape-esc.toml) Unescaped '\' in a string (at line 1, column 10)
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/inline-table/newline.toml) Invalid initial character for a key part (at line 3, column 21)
*156/161 (96.89%) passed*| +|tomlkit|[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/datetime/no-seconds.toml) Invalid number at line 2 col 25
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/key/unicode.toml) Empty key at line 3 col 0
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/hex-escape.toml) Invalid character 'x' in string at line 3 col 20
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/escape-esc.toml) Invalid character 'e' in string at line 1 col 8
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/inline-table/newline.toml) Empty key at line 3 col 20
*156/161 (96.89%) passed*| +|rtoml|[spec/table-9.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/spec/table-9.toml) duplicate key: `apple` for key `fruit` at line 8 column 1
[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/datetime/no-seconds.toml) expected a colon, found a newline at line 2 column 26
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/key/unicode.toml) unexpected character found: `\u{20ac}` at line 3 column 1
[table/array-within-dotted.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/table/array-within-dotted.toml) duplicate key: `apple` for key `fruit` at line 4 column 1
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/hex-escape.toml) invalid escape character in string: `x` at line 3 column 21
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/escape-esc.toml) invalid escape character in string: `e` at line 1 column 9
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/inline-table/newline.toml) expected a table key, found a newline at line 3 column 21
*154/161 (95.65%) passed*| +|qtoml|[spec/string-4.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/spec/string-4.toml) Didn't find expected newline (line 7, column 62)
[spec/string-7.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/spec/string-7.toml) Didn't find expected newline (line 7, column 50)
[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/datetime/no-seconds.toml) can't parse type (line 2, column 20)
[datetime/milliseconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/datetime/milliseconds.toml) Didn't find expected newline (line 2, column 27)
[datetime/datetime.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/datetime/datetime.toml) Didn't find expected newline (line 2, column 18)
[comment/tricky.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/comment/tricky.toml) can't parse type (line 11, column 7)
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/key/unicode.toml) '€' cannot begin key (line 3, column 0)
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/hex-escape.toml) \x not a valid escape (line 3, column 43)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/escape-esc.toml) \e not a valid escape (line 1, column 33)
[string/multiline-quotes.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/multiline-quotes.toml) Didn't find expected newline (line 4, column 26)
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/inline-table/newline.toml) ' ' cannot begin key (line 3, column 20)
*150/161 (93.17%) passed*| +|tomllib|[datetime/no-seconds.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/datetime/no-seconds.toml) Expected newline or end of document after a statement (at line 2, column 23)
[key/unicode.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/key/unicode.toml) Invalid statement (at line 3, column 1)
[string/hex-escape.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/hex-escape.toml) Unescaped '\' in a string (at line 3, column 22)
[string/escape-esc.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/string/escape-esc.toml) Unescaped '\' in a string (at line 1, column 10)
[inline-table/newline.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//valid/inline-table/newline.toml) Invalid initial character for a key part (at line 3, column 21)
*156/161 (96.89%) passed*| + +## Compliance with invalid tests in toml-test + +Test the compliance with the standard test suites for invalid toml files +here: + +> https://github.com/BurntSushi/toml-test/ + +- `Not OK`: The toml file is parsed without error, but expected to fail. +- `OK`: All files are failed to parse, as expected. Showing the last +parsing error. + + +| |Result (toml-test v1.4.0)| +|-|-----------------------| +|toml|Not OK: [integer/double-sign-plus.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/integer/double-sign-plus.toml) incorrectly parsed.
Not OK: [integer/us-after-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/integer/us-after-bin.toml) incorrectly parsed.
Not OK: [integer/double-sign-nex.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/integer/double-sign-nex.toml) incorrectly parsed.
Not OK: [integer/us-after-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/integer/us-after-hex.toml) incorrectly parsed.
Not OK: [integer/us-after-oct.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/integer/us-after-oct.toml) incorrectly parsed.
Not OK: [spec/inline-table-2-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/spec/inline-table-2-0.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/string-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/string-del.toml) incorrectly parsed.
Not OK: [control/multi-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/multi-us.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: *44 more items incorrectly parsed.*
*205/259 (79.15%) passed*| +|tomli/tomli_w|OK: [inline-table/linebreak-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/inline-table/linebreak-1.toml) Unclosed inline table (at line 3, column 18)
*259/259 (100%) passed*| +|tomlkit|Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
Not OK: [table/append-to-array-with-dotted-keys.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/table/append-to-array-with-dotted-keys.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-2.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/table/append-with-dotted-keys-2.toml) incorrectly parsed.
*254/259 (98.07%) passed*| +|rtoml|Not OK: [integer/positive-hex.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/integer/positive-hex.toml) incorrectly parsed.
Not OK: [integer/positive-bin.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/integer/positive-bin.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
*254/259 (98.07%) passed*| +|qtoml|Not OK: [spec/inline-table-2-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/spec/inline-table-2-0.toml) incorrectly parsed.
Not OK: [spec/table-9-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/spec/table-9-1.toml) incorrectly parsed.
Not OK: [spec/table-9-0.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/spec/table-9-0.toml) incorrectly parsed.
Not OK: [control/comment-del.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/comment-del.toml) incorrectly parsed.
Not OK: [control/comment-lf.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/comment-lf.toml) incorrectly parsed.
Not OK: [control/comment-null.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/comment-null.toml) incorrectly parsed.
Not OK: [control/comment-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/comment-cr.toml) incorrectly parsed.
Not OK: [control/comment-us.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/comment-us.toml) incorrectly parsed.
Not OK: [control/bare-cr.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/control/bare-cr.toml) incorrectly parsed.
Not OK: [table/append-with-dotted-keys-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/table/append-with-dotted-keys-1.toml) incorrectly parsed.
Not OK: *6 more items incorrectly parsed.*
*243/259 (93.82%) passed*| +|tomllib|OK: [inline-table/linebreak-1.toml](https://github.com/BurntSushi/toml-test/blob/v1.4.0/tests//invalid/inline-table/linebreak-1.toml) Unclosed inline table (at line 3, column 18)
*259/259 (100%) passed*| + +## Compliance with valid tests in python tomllib test data + +Test the compliance with python tomllib test data (since python 3.11) +for valid toml files here: + +> https://github.com/python/cpython/tree/3.11/Lib/test/test_tomllib/data/valid + +The tests come up with a JSON counterpart that can be used to valid whether +loading the toml file yields the same result as the JSON counterpart. + + +| |Result (cpython tag 3.12.4)| +|-|-----------------------| +|toml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Unbalanced quotes (line 1 column 50 char 49)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/five-quotes.toml) Unterminated string found. Reached end of file. (line 7 column 1 char 97)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Parsed as unexpected data.
[multiline-basic-str/ends-in-whitespace-escape.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/multiline-basic-str/ends-in-whitespace-escape.toml) Reserved escape sequence used (line 6 column 1 char 28)
*8/12 (66.67%) passed*| +|tomli/tomli_w|OK, *12/12 (100%) passed*| +|tomlkit|OK, *12/12 (100%) passed*| +|rtoml|OK, *12/12 (100%) passed*| +|qtoml|[apostrophes-in-literal-string.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/apostrophes-in-literal-string.toml) Didn't find expected newline (line 3, column 3)
[five-quotes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/five-quotes.toml) Didn't find expected newline (line 3, column 3)
[dates-and-times/datetimes.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//valid/dates-and-times/datetimes.toml) Didn't find expected newline (line 1, column 19)
*9/12 (75.00%) passed*| +|tomllib|OK, *12/12 (100%) passed*| + +## Compliance with invalid tests in python tomllib test data + +Test the compliance with python tomllib test data (since python 3.11) +for invalid toml files here: + +> https://github.com/python/cpython/tree/main/Lib/test/test_tomllib/data/invalid + +- `Not OK`: The toml file is parsed without error, but expected to fail. +- `OK`: All files are failed to parse, as expected. Showing the last +parsing error. + + +| |Result (cpython tag 3.12.4)| +|-|-----------------------| +|toml|Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [array/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/unclosed-empty.toml) incorrectly parsed.
Not OK: [array/file-end-after-val.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/file-end-after-val.toml) incorrectly parsed.
Not OK: [array/unclosed-after-item.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array/unclosed-after-item.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [inline-table/unclosed-empty.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/unclosed-empty.toml) incorrectly parsed.
*41/50 (82.00%) passed*| +|tomli/tomli_w|OK: [inline-table/overwrite-implicitly.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-implicitly.toml) Cannot overwrite a value (at line 1, column 21)
*50/50 (100%) passed*| +|tomlkit|Not OK: [array-of-tables/overwrite-array-in-parent.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/array-of-tables/overwrite-array-in-parent.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-aot.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-aot.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [inline-table/override-val-in-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/override-val-in-table.toml) incorrectly parsed.
*44/50 (88.00%) passed*| +|rtoml|Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
*49/50 (98.00%) passed*| +|qtoml|Not OK: [non-scalar-escaped.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/non-scalar-escaped.toml) incorrectly parsed.
Not OK: [invalid-comment-char.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/invalid-comment-char.toml) incorrectly parsed.
Not OK: [table/redefine-2.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/table/redefine-2.toml) incorrectly parsed.
Not OK: [table/redefine-1.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/table/redefine-1.toml) incorrectly parsed.
Not OK: [multiline-basic-str/carriage-return.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/multiline-basic-str/carriage-return.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table.toml) incorrectly parsed.
Not OK: [dotted-keys/extend-defined-table-with-subtable.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/dotted-keys/extend-defined-table-with-subtable.toml) incorrectly parsed.
Not OK: [inline-table/overwrite-value-in-inner-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-value-in-inner-table.toml) incorrectly parsed.
Not OK: [inline-table/override-val-with-table.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/override-val-with-table.toml) incorrectly parsed.
*41/50 (82.00%) passed*| +|tomllib|OK: [inline-table/overwrite-implicitly.toml](https://github.com/python/cpython/tree/v3.12.4/Lib/test/test_tomllib/data//invalid/inline-table/overwrite-implicitly.toml) Cannot overwrite a value (at line 1, column 21)
*50/50 (100%) passed*| + +## Running speed with data provided by `rtoml` + +Test the speed of loading and dumping the loaded using data +provided by `rtoml` + +> https://github.com/samuelcolvin/rtoml/raw/main/tests/data.toml + + +| |Loading speed|Dumping speed| +|-|-|-| +|toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| +|tomli/tomli_w|2.05s (5000 iterations)|0.73s (5000 iterations)| +|tomlkit|40.15s (5000 iterations)|1.00s (5000 iterations)| +|rtoml|0.38s (5000 iterations)|0.08s (5000 iterations)| +|qtoml|5.04s (5000 iterations)|1.89s (5000 iterations)| +|tomllib|2.03s (5000 iterations)|Dumping not supported| + +## Running speed with data provided by `tomli` + +Test the speed of loading and dumping the loaded using data +provided by `tomli` + +> https://github.com/hukkin/tomli/raw/master/benchmark/data.toml + + +| |Loading speed|Dumping speed| +|-|-|-| +|toml|Excluded (heterogeneous arrays not supported)|Excluded (heterogeneous arrays not supported)| +|tomli/tomli_w|1.39s (5000 iterations)|0.46s (5000 iterations)| +|tomlkit|25.00s (5000 iterations)|0.50s (5000 iterations)| +|rtoml|0.32s (5000 iterations)|0.16s (5000 iterations)| +|qtoml|3.64s (5000 iterations)|1.25s (5000 iterations)| +|tomllib|1.42s (5000 iterations)|Dumping not supported| + diff --git a/run-tests.py b/run-tests.py index 97c48de..250ce40 100644 --- a/run-tests.py +++ b/run-tests.py @@ -4,10 +4,10 @@ from pathlib import Path REPORTS = { - "latest": "1.3.0", + "latest": "1.5.0", + "v1.4.0": "1.4.0", + "v1.3.0": "1.3.0", "v1.2.0": "1.2.0", - "v1.1.0": "1.1.0", - "v1.0.0": "1.0.0", } @@ -16,7 +16,7 @@ def run_test(comver): outfile = f"reports/with_toml-test_{comver}.md" - cmd = f"python -m toml_bench --iter 1000 --comver {REPORTS[comver]} --report {outfile}" + cmd = f"python -m toml_bench --iter 5000 --comver {REPORTS[comver]} --report {outfile}" os.system(cmd) diff --git a/toml_bench/__main__.py b/toml_bench/__main__.py index eef3c7a..37b82eb 100644 --- a/toml_bench/__main__.py +++ b/toml_bench/__main__.py @@ -1,57 +1,59 @@ from benchwork import run_suite -from pyparam import Params +from argx import ArgumentParser from .suite import BenchSuite -def init_params() -> Params: - params = Params( +def init_params() -> ArgumentParser: + """Init the parameters""" + parser = ArgumentParser( prog="toml_bench", - help_on_void=False, - desc="Benchmarking on toml packages in python", + description="Benchmarking on toml packages in python", ) - params.add_param( - "datadir", + parser.add_argument( + "--datadir", type="path", default="/tmp/toml-bench", - desc="Where to put the test-data", + help="Where to put the test-data", ) - params.add_param( - "report", - default="", - desc="If provided, the report will be written to this file", + parser.add_argument( + "--report", + type="path", + default="/dev/stdout", + help="If provided, the report will be written to this file", ) - params.add_param( - "title", + parser.add_argument( + "--title", default="Report", - desc="The title of the report", + help="The title of the report", ) - params.add_param( - "comver", - default="1.3.0", - desc="The version of the toml-test to use in compliance tests", + parser.add_argument( + "--comver", + default="1.5.0", + help="The version of the toml-test to use in compliance tests", ) - params.add_param( - "cpyver", - default="3.11.0", - desc="The version (tag) of cpython to grab the tomllib test data", + parser.add_argument( + "--cpyver", + default="3.12.4", + help="The version (tag) of cpython to grab the tomllib test data", ) - params.add_param( - "nocache", - default=False, - desc="Do not use cached data, re-download them.", + parser.add_argument( + "--nocache", + action="store_true", + help="Do not use cached data, re-download them.", ) - params.add_param( - "iter", + parser.add_argument( + "--iter", + type="int", default=5000, - desc="The number of iterations to run in speed tests", + help="The number of iterations to run in speed tests", ) - return params + return parser def main(): """Main entrance""" - args = init_params().parse() + args = init_params().parse_args() run_suite( BenchSuite, args=args, diff --git a/toml_bench/suite.py b/toml_bench/suite.py index 4f33e37..ba524dc 100644 --- a/toml_bench/suite.py +++ b/toml_bench/suite.py @@ -18,7 +18,7 @@ BenchSetComplianceInvalid, BenchSetTomllibComplianceValid, BenchSetTomllibComplianceInvalid, - BenchSetSpeedWithPytomlppData, + # BenchSetSpeedWithPytomlppData, BenchSetSpeedWithRtomlData, BenchSetSpeedWithTomliData, ) @@ -43,7 +43,7 @@ class BenchSuite(BenchSuite): BenchSetComplianceInvalid, BenchSetTomllibComplianceValid, BenchSetTomllibComplianceInvalid, - BenchSetSpeedWithPytomlppData, + # BenchSetSpeedWithPytomlppData, BenchSetSpeedWithRtomlData, BenchSetSpeedWithTomliData, ]