toml version 65bab75
FAIL valid/array/mixed-string-table
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
         ret = decoder.load_line(line, currentlevel, multikey,
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 778, in load_line
         value, vtype = self.load_value(pair[1], strictly_valid)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 880, in load_value
         return (self.load_array(v), "array")
                 ^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 1001, in load_array
         a[b] = a[b] + ',' + a[b + 1]
                             ~^^^^^^^
     IndexError: list index out of range
 
     Exit 1

     input sent to parser-cmd:
       contributors = [
         "Foo Bar ",
         { name = "Baz Qux", email = "bazqux@example.com", url = "https://example.com/bazqux" }
       ]

       # Start with a table as the first element. This tests a case that some libraries
       # might have where they will check if the first entry is a table/map/hash/assoc
       # array and then encode it as a table array. This was a reasonable thing to do
       # before TOML 1.0 since arrays could only contain one type, but now it's no
       # longer.
       mixed = [{k="a"}, "b", 1]

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
           ret = decoder.load_line(line, currentlevel, multikey,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 778, in load_line
           value, vtype = self.load_value(pair[1], strictly_valid)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 880, in load_value
           return (self.load_array(v), "array")
                   ^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 1001, in load_array
           a[b] = a[b] + ',' + a[b + 1]
                               ~^^^^^^^
       IndexError: list index out of range

       Exit 1

     want:
          

FAIL valid/array/string-with-comma-2
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
         ret = decoder.load_line(line, currentlevel, multikey,
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 767, in load_line
         k, koffset = self._load_line_multiline_str(pair[1])
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 797, in _load_line_multiline_str
         while len(newp) > 1 and newp[-1][0] != '"' and newp[-1][0] != "'":
                                 ~~~~~~~~^^^
     IndexError: string index out of range
 
     Exit 1

     input sent to parser-cmd:
       title = [
       """Client: XXXX,
       Job: XXXX""",
       "Code: XXXX"
       ]

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
           ret = decoder.load_line(line, currentlevel, multikey,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 767, in load_line
           k, koffset = self._load_line_multiline_str(pair[1])
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 797, in _load_line_multiline_str
           while len(newp) > 1 and newp[-1][0] != '"' and newp[-1][0] != "'":
                                   ~~~~~~~~^^^
       IndexError: string index out of range

       Exit 1

     want:
          

FAIL valid/comment/tricky
     Could not find key "hash#tag" in parser output.

     input sent to parser-cmd:
       [section]#attached comment
       #[notsection]
       one = "11"#cmt
       two = "22#"
       three = '#'

       four = """# no comment
       # nor this
       #also not comment"""#is_comment

       five = 5.5#66
       six = 6#7
       8 = "eight"
       #nine = 99
       ten = 10e2#1
       eleven = 1.11e1#23

       ["hash#tag"]
       "#!" = "hash bang"
       arr3 = [ "#", '#', """###""" ]
       arr4 = [ 1,# 9, 9,
       2#,9
       ,#9
       3#]
       ,4]
       arr5 = [[[[#["#"],
       ["#"]]]]#]
       ]
       tbl1 = { "#" = '}#'}#}}

     output from parser-cmd (stdout):
       {
         "section": {
           "one":   {"type": "string", "value": "11"},
           "three": {"type": "string", "value": "#"},
           "two":   {"type": "string", "value": "22#"}
         }
       }

     want:
       {
           "hash#tag": {
               "#!":   {"type": "string", "value": "hash bang"},
               "arr5": [[[[[{"type": "string", "value": "#"}]]]]],
               "arr3": [
                   {"type": "string", "value": "#"},
                   {"type": "string", "value": "#"},
                   {"type": "string", "value": "###"}
               ],
               "arr4": [
                   {"type": "integer", "value": "1"},
                   {"type": "integer", "value": "2"},
                   {"type": "integer", "value": "3"},
                   {"type": "integer", "value": "4"}
               ],
               "tbl1": {
                   "#": {"type": "string", "value": "}#"}
               }
           },
           "section": {
               "8":      {"type": "string", "value": "eight"},
               "eleven": {"type": "float", "value": "11.1"},
               "five":   {"type": "float", "value": "5.5"},
               "four":   {"type": "string", "value": "# no comment\n# nor this\n#also not comment"},
               "one":    {"type": "string", "value": "11"},
               "six":    {"type": "integer", "value": "6"},
               "ten":    {"type": "float", "value": "1000.0"},
               "three":  {"type": "string", "value": "#"},
               "two":    {"type": "string", "value": "22#"}
           }
       }

FAIL valid/float/zero
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
         ret = decoder.load_line(line, currentlevel, multikey,
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 778, in load_line
         value, vtype = self.load_value(pair[1], strictly_valid)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 894, in load_value
         raise ValueError("Weirdness with leading zeroes or "
     ValueError: Weirdness with leading zeroes or underscores in your number.
 
     During handling of the above exception, another exception occurred:
 
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 514, in loads
         raise TomlDecodeError(str(err), original, pos)
     toml.decoder.TomlDecodeError: Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 47)
 
     Exit 1

     input sent to parser-cmd:
       zero = 0.0
       signed-pos = +0.0
       signed-neg = -0.0
       exponent = 0e0
       exponent-two-0 = 0e00
       exponent-signed-pos = +0e0
       exponent-signed-neg = -0e0

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
           ret = decoder.load_line(line, currentlevel, multikey,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 778, in load_line
           value, vtype = self.load_value(pair[1], strictly_valid)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 894, in load_value
           raise ValueError("Weirdness with leading zeroes or "
       ValueError: Weirdness with leading zeroes or underscores in your number.

       During handling of the above exception, another exception occurred:

       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 514, in loads
           raise TomlDecodeError(str(err), original, pos)
       toml.decoder.TomlDecodeError: Weirdness with leading zeroes or underscores in your number. (line 4 column 1 char 47)

       Exit 1

     want:
          

FAIL valid/inline-table/key-dotted-1
     Could not find key "c.a" in parser output.

     input sent to parser-cmd:
       a = {   a.b  =  1   }
       b = {   "a"."b"  =  1   }
       c = {   a   .   b  =  1   }
       d = {   'a'   .   "b"  =  1   }
       e = {a.b=1}

     output from parser-cmd (stdout):
       {
         "a": {
           "a": {
             "b": {"type": "integer", "value": "1"}
           }
         },
         "b": {
           "a": {
             "b": {"type": "integer", "value": "1"}
           }
         },
         "c": {
           "a   ": {
             "b": {"type": "integer", "value": "1"}
           }
         },
         "d": {
           "a": {
             "b": {"type": "integer", "value": "1"}
           }
         },
         "e": {
           "a": {
             "b": {"type": "integer", "value": "1"}
           }
         }
       }

     want:
       {
           "a": {
               "a": {
                   "b": {"type": "integer", "value": "1"}
               }
           },
           "b": {
               "a": {
                   "b": {"type": "integer", "value": "1"}
               }
           },
           "c": {
               "a": {
                   "b": {"type": "integer", "value": "1"}
               }
           },
           "d": {
               "a": {
                   "b": {"type": "integer", "value": "1"}
               }
           },
           "e": {
               "a": {
                   "b": {"type": "integer", "value": "1"}
               }
           }
       }

FAIL valid/inline-table/key-dotted-5
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
         ret = decoder.load_line(line, currentlevel, multikey,
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 778, in load_line
         value, vtype = self.load_value(pair[1], strictly_valid)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 880, in load_value
         return (self.load_array(v), "array")
                 ^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 1001, in load_array
         a[b] = a[b] + ',' + a[b + 1]
                             ~^^^^^^^
     IndexError: list index out of range
 
     Exit 1

     input sent to parser-cmd:
       arr-1 = [{a.b = 1}]
       arr-2 = ["str", {a.b = 1}]

       arr-3 = [{a.b = 1}, {a.b = 2}]
       arr-4 = ["str", {a.b = 1}, {a.b = 2}]

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
           ret = decoder.load_line(line, currentlevel, multikey,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 778, in load_line
           value, vtype = self.load_value(pair[1], strictly_valid)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 880, in load_value
           return (self.load_array(v), "array")
                   ^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 1001, in load_array
           a[b] = a[b] + ',' + a[b + 1]
                               ~^^^^^^^
       IndexError: list index out of range

       Exit 1

     want:
          

FAIL valid/inline-table/multiline
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
         ret = decoder.load_line(line, currentlevel, multikey,
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 778, in load_line
         value, vtype = self.load_value(pair[1], strictly_valid)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 883, in load_value
         self.load_inline_object(v, inline_object)
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 677, in load_inline_object
         raise ValueError("Invalid inline table value encountered")
     ValueError: Invalid inline table value encountered
 
     During handling of the above exception, another exception occurred:
 
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 514, in loads
         raise TomlDecodeError(str(err), original, pos)
     toml.decoder.TomlDecodeError: Invalid inline table value encountered (line 1 column 1 char 0)
 
     Exit 1

     input sent to parser-cmd:
       tbl_multiline = { a = 1, b = """
       multiline
       """, c = """and yet
       another line""", d = 4 }

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
           ret = decoder.load_line(line, currentlevel, multikey,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 778, in load_line
           value, vtype = self.load_value(pair[1], strictly_valid)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 883, in load_value
           self.load_inline_object(v, inline_object)
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 677, in load_inline_object
           raise ValueError("Invalid inline table value encountered")
       ValueError: Invalid inline table value encountered

       During handling of the above exception, another exception occurred:

       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 514, in loads
           raise TomlDecodeError(str(err), original, pos)
       toml.decoder.TomlDecodeError: Invalid inline table value encountered (line 1 column 1 char 0)

       Exit 1

     want:
          

FAIL valid/key/dotted-1
     Could not find key "name.last" in parser output.

     input sent to parser-cmd:
       name.first = "Arthur"
       "name".'last' = "Dent"

       many.dots.dot.dot.dot = 42

     output from parser-cmd (stdout):
       {
         "many": {
           "dots": {
             "dot": {
               "dot": {
                 "dot": {"type": "integer", "value": "42"}
               }
             }
           }
         },
         "name": {
           "'last'": {"type": "string", "value": "Dent"},
           "first":  {"type": "string", "value": "Arthur"}
         }
       }

     want:
       {
           "many": {
               "dots": {
                   "dot": {
                       "dot": {
                           "dot": {"type": "integer", "value": "42"}
                       }
                   }
               }
           },
           "name": {
               "first": {"type": "string", "value": "Arthur"},
               "last":  {"type": "string", "value": "Dent"}
           }
       }

FAIL valid/key/dotted-2
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 260, in loads
         raise TomlDecodeError("Found invalid character in key name: '" +
     toml.decoder.TomlDecodeError: Found invalid character in key name: '"'. Try quoting the key name. (line 7 column 11 char 166)
 
     Exit 1

     input sent to parser-cmd:
       # Note: this file contains literal tab characters.

       # Space are ignored, and key parts can be quoted.
       count.a       = 1
       count . b     = 2
       "count"."c"   = 3
       "count" . "d" = 4
       'count'.'e'   = 5
       'count' . 'f' = 6
       "count".'g'   = 7
       "count" . 'h' = 8
       count.'i'     = 9
       count 	.	 'j'	   = 10
       "count".k     = 11
       "count" . l   = 12

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 260, in loads
           raise TomlDecodeError("Found invalid character in key name: '" +
       toml.decoder.TomlDecodeError: Found invalid character in key name: '"'. Try quoting the key name. (line 7 column 11 char 166)

       Exit 1

     want:
          

FAIL valid/key/dotted-empty
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
         ret = decoder.load_line(line, currentlevel, multikey,
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 781, in load_line
         raise ValueError("Duplicate keys!")
     ValueError: Duplicate keys!
 
     During handling of the above exception, another exception occurred:
 
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 514, in loads
         raise TomlDecodeError(str(err), original, pos)
     toml.decoder.TomlDecodeError: Duplicate keys! (line 2 column 1 char 17)
 
     Exit 1

     input sent to parser-cmd:
       ''.x = "empty.x"
       x."" = "x.empty"
       [a]
       "".'' = "empty.empty"

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
           ret = decoder.load_line(line, currentlevel, multikey,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 781, in load_line
           raise ValueError("Duplicate keys!")
       ValueError: Duplicate keys!

       During handling of the above exception, another exception occurred:

       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 514, in loads
           raise TomlDecodeError(str(err), original, pos)
       toml.decoder.TomlDecodeError: Duplicate keys! (line 2 column 1 char 17)

       Exit 1

     want:
          

FAIL valid/key/escapes
     Could not find key "\"quoted\"" in parser output.

     input sent to parser-cmd:
       "\n" = "newline"
       "\b" = "bell"
       "\u00c0" = "latin capital letter A with grave"
       "\"" = "just a quote"

       ["backsp\b\b"]

       ["\"quoted\""]
       quote = true

       ["a.b"."\u00c0"]

     output from parser-cmd (stdout):
       {
         "\b":         {"type": "string", "value": "bell"},
         "\n":         {"type": "string", "value": "newline"},
         "\"":         {"type": "string", "value": "just a quote"},
         "\\u00c0":    {"type": "string", "value": "latin capital letter A with grave"},
         "backsp\\b\\b": {},
         "\\\"quoted\\\"": {
           "quote": {"type": "bool", "value": "true"}
         },
         "a.b": {
           "\\u00c0": {}
         }
       }

     want:
       {
           "\b":         {"type": "string", "value": "bell"},
           "\n":         {"type": "string", "value": "newline"},
           "\"":         {"type": "string", "value": "just a quote"},
           "backsp\b\b": {},
           "À":          {"type": "string", "value": "latin capital letter A with grave"},
           "\"quoted\"": {
               "quote": {"type": "bool", "value": "true"}
           },
           "a.b": {
               "À": {}
           }
       }

FAIL valid/key/quoted-unicode
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
         ret = decoder.load_line(line, currentlevel, multikey,
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 781, in load_line
         raise ValueError("Duplicate keys!")
     ValueError: Duplicate keys!
 
     During handling of the above exception, another exception occurred:
 
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 514, in loads
         raise TomlDecodeError(str(err), original, pos)
     toml.decoder.TomlDecodeError: Duplicate keys! (line 3 column 1 char 19)
 
     Exit 1

     input sent to parser-cmd:

       "\u0000" = "null"
       '\u0000' = "different key"
       "\u0008 \u000c \U00000041 \u007f \u0080 \u00ff \ud7ff \ue000 \uffff \U00010000 \U0010ffff" = "escaped key"

       "~ € ÿ ퟿  ￿ 𐀀 􏿿" = "basic key"
       'l ~ € ÿ ퟿  ￿ 𐀀 􏿿' = "literal key"

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
           ret = decoder.load_line(line, currentlevel, multikey,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 781, in load_line
           raise ValueError("Duplicate keys!")
       ValueError: Duplicate keys!

       During handling of the above exception, another exception occurred:

       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 514, in loads
           raise TomlDecodeError(str(err), original, pos)
       toml.decoder.TomlDecodeError: Duplicate keys! (line 3 column 1 char 19)

       Exit 1

     want:
          

FAIL valid/spec/array-0
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
         ret = decoder.load_line(line, currentlevel, multikey,
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 778, in load_line
         value, vtype = self.load_value(pair[1], strictly_valid)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 880, in load_value
         return (self.load_array(v), "array")
                 ^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 1001, in load_array
         a[b] = a[b] + ',' + a[b + 1]
                             ~^^^^^^^
     IndexError: list index out of range
 
     Exit 1

     input sent to parser-cmd:
       integers = [ 1, 2, 3 ]
       colors = [ "red", "yellow", "green" ]
       nested_arrays_of_ints = [ [ 1, 2 ], [3, 4, 5] ]
       nested_mixed_array = [ [ 1, 2 ], ["a", "b", "c"] ]
       string_array = [ "all", 'strings', """are the same""", '''type''' ]

       # Mixed-type arrays are allowed
       numbers = [ 0.1, 0.2, 0.5, 1, 2, 5 ]
       contributors = [
         "Foo Bar ",
         { name = "Baz Qux", email = "bazqux@example.com", url = "https://example.com/bazqux" }
       ]

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 511, in loads
           ret = decoder.load_line(line, currentlevel, multikey,
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 778, in load_line
           value, vtype = self.load_value(pair[1], strictly_valid)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 880, in load_value
           return (self.load_array(v), "array")
                   ^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 1001, in load_array
           a[b] = a[b] + ',' + a[b + 1]
                               ~^^^^^^^
       IndexError: list index out of range

       Exit 1

     want:
          

FAIL valid/spec/keys-4
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 260, in loads
         raise TomlDecodeError("Found invalid character in key name: '" +
     toml.decoder.TomlDecodeError: Found invalid character in key name: 'c'. Try quoting the key name. (line 2 column 8 char 57)
 
     Exit 1

     input sent to parser-cmd:
       fruit.name = "banana"     # this is best practice
       fruit. color = "yellow"    # same as fruit.color
       fruit . flavor = "banana"   # same as fruit.flavor

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 260, in loads
           raise TomlDecodeError("Found invalid character in key name: '" +
       toml.decoder.TomlDecodeError: Found invalid character in key name: 'c'. Try quoting the key name. (line 2 column 8 char 57)

       Exit 1

     want:
          

FAIL valid/string/ends-in-whitespace-escape
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 395, in loads
         value, vtype = decoder.load_value(multilinestr)
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 866, in load_value
         raise ValueError("Reserved escape sequence used")
     ValueError: Reserved escape sequence used
 
     During handling of the above exception, another exception occurred:
 
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 397, in loads
         raise TomlDecodeError(str(err), original, pos)
     toml.decoder.TomlDecodeError: Reserved escape sequence used (line 6 column 1 char 28)
 
     Exit 1

     input sent to parser-cmd:
       beee = """
       heeee
       geeee\


             """

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 395, in loads
           value, vtype = decoder.load_value(multilinestr)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 866, in load_value
           raise ValueError("Reserved escape sequence used")
       ValueError: Reserved escape sequence used

       During handling of the above exception, another exception occurred:

       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 397, in loads
           raise TomlDecodeError(str(err), original, pos)
       toml.decoder.TomlDecodeError: Reserved escape sequence used (line 6 column 1 char 28)

       Exit 1

     want:
          

FAIL valid/string/multiline-quotes
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 362, in loads
         raise TomlDecodeError("Unterminated string found."
     toml.decoder.TomlDecodeError: Unterminated string found. Reached end of file. (line 27 column 1 char 664)
 
     Exit 1

     input sent to parser-cmd:
       # Make sure that quotes inside multiline strings are allowed, including right
       # after the opening '''/""" and before the closing '''/"""

       lit_one = ''''one quote''''
       lit_two = '''''two quotes'''''
       lit_one_space = ''' 'one quote' '''
       lit_two_space = ''' ''two quotes'' '''

       one = """"one quote""""
       two = """""two quotes"""""
       one_space = """ "one quote" """
       two_space = """ ""two quotes"" """

       mismatch1 = """aaa'''bbb"""
       mismatch2 = '''aaa"""bbb'''

       # Three opening """, then one escaped ", then two "" (allowed), and then three
       # closing """
       escaped = """lol\""""""

       five-quotes = """
       Closing with five quotes
       """""
       four-quotes = """
       Closing with four quotes
       """"

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 362, in loads
           raise TomlDecodeError("Unterminated string found."
       toml.decoder.TomlDecodeError: Unterminated string found. Reached end of file. (line 27 column 1 char 664)

       Exit 1

     want:
          

FAIL valid/string/raw-multiline
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 340, in loads
         raise TomlDecodeError("Unbalanced quotes", original, i)
     toml.decoder.TomlDecodeError: Unbalanced quotes (line 20 column 50 char 532)
 
     Exit 1

     input sent to parser-cmd:
       # Single ' should be allowed.
       oneline = '''This string has a ' quote character.'''

       # A newline immediately following the opening delimiter will be trimmed.
       firstnl = '''
       This string has a ' quote character.'''

       # All other whitespace and newline characters remain intact.
       multiline = '''
       This string
       has ' a quote character
       and more than
       one newline
       in it.'''

       # Tab character in literal string does not need to be escaped
       multiline_with_tab = '''First line
       	 Followed by a tab'''

       this-str-has-apostrophes='''' there's one already
       '' two more
       '''''

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 340, in loads
           raise TomlDecodeError("Unbalanced quotes", original, i)
       toml.decoder.TomlDecodeError: Unbalanced quotes (line 20 column 50 char 532)

       Exit 1

     want:
          

FAIL valid/table/empty-name
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
         tdata = toml.loads(sys.stdin.read())
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 463, in loads
         raise TomlDecodeError("Can't have a keygroup with an empty "
     toml.decoder.TomlDecodeError: Can't have a keygroup with an empty name (line 1 column 1 char 0)
 
     Exit 1

     input sent to parser-cmd:
       ['']
       x = 1

       ["".a]
       x = 2

       [a.'']
       x = 3

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/decoding_test.py", line 37, in 
           tdata = toml.loads(sys.stdin.read())
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/decoder.py", line 463, in loads
           raise TomlDecodeError("Can't have a keygroup with an empty "
       toml.decoder.TomlDecodeError: Can't have a keygroup with an empty name (line 1 column 1 char 0)

       Exit 1

     want:
          

FAIL invalid/array/double-comma-1
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       double-comma-1 = [1,,2]

     output from parser-cmd (stdout):
       {
         "double-comma-1": [
           {"type": "integer", "value": "1"},
           {"type": "integer", "value": "2"}
         ]
       }

     want:
       Exit code 1

FAIL invalid/array/double-comma-2
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       double-comma-2 = [1,2,,]

     output from parser-cmd (stdout):
       {
         "double-comma-2": [
           {"type": "integer", "value": "1"},
           {"type": "integer", "value": "2"}
         ]
       }

     want:
       Exit code 1

FAIL invalid/array/extending-table
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       a = [{ b = 1 }]

       # Cannot extend tables within static arrays
       # https://github.com/toml-lang/toml/issues/908
       [a.c]
       foo = 1

     output from parser-cmd (stdout):
       {
         "a": [{
           "b": {"type": "integer", "value": "1"},
           "c": {
             "foo": {"type": "integer", "value": "1"}
           }
         }]
       }

     want:
       Exit code 1

FAIL invalid/array/no-close-1
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       no-close-1 = [ 1, 2, 3

     output from parser-cmd (stdout):
       {
         "no-close-1": [
           {"type": "integer", "value": "1"},
           {"type": "integer", "value": "2"}
         ]
       }

     want:
       Exit code 1

FAIL invalid/array/no-close-2
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       no-close-2 = [1,

     output from parser-cmd (stdout):
       {
         "no-close-2": [{"type": "integer", "value": "1"}]
       }

     want:
       Exit code 1

FAIL invalid/array/no-close-3
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       no-close-3 = [42 #]

     output from parser-cmd (stdout):
       {
         "no-close-3": [{"type": "integer", "value": "4"}]
       }

     want:
       Exit code 1

FAIL invalid/array/no-close-4
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       no-close-4 = [{ key = 42

     output from parser-cmd (stdout):
       {
         "no-close-4": []
       }

     want:
       Exit code 1

FAIL invalid/array/no-close-5
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       no-close-5 = [{ key = 42}

     output from parser-cmd (stdout):
       {
         "no-close-5": []
       }

     want:
       Exit code 1

FAIL invalid/array/no-close-6
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       no-close-6 = [{ key = 42 #}]

     output from parser-cmd (stdout):
       {
         "no-close-6": []
       }

     want:
       Exit code 1

FAIL invalid/array/no-close-7
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       no-close-7 = [{ key = 42} #]

     output from parser-cmd (stdout):
       {
         "no-close-7": []
       }

     want:
       Exit code 1

FAIL invalid/array/no-close-8
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       no-close-8 = [

     output from parser-cmd (stdout):
       {
         "no-close-8": []
       }

     want:
       Exit code 1

FAIL invalid/array/no-close-table-1
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       x = [{ key = 42

     output from parser-cmd (stdout):
       {
         "x": []
       }

     want:
       Exit code 1

FAIL invalid/array/no-close-table-2
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       x = [{ key = 42 #

     output from parser-cmd (stdout):
       {
         "x": []
       }

     want:
       Exit code 1

FAIL invalid/array/no-comma-3
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       no-comma-3 = [ 1 #,]

     output from parser-cmd (stdout):
       {
         "no-comma-3": []
       }

     want:
       Exit code 1

FAIL invalid/array/only-comma-1
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       only-comma-1 = [,]

     output from parser-cmd (stdout):
       {
         "only-comma-1": []
       }

     want:
       Exit code 1

FAIL invalid/array/only-comma-2
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       only-comma-2 = [,,]

     output from parser-cmd (stdout):
       {
         "only-comma-2": []
       }

     want:
       Exit code 1

FAIL invalid/array/tables-1
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       # INVALID TOML DOC
       fruit = []

       [[fruit]] # Not allowed

     output from parser-cmd (stdout):
       {
         "fruit": [{}]
       }

     want:
       Exit code 1

FAIL invalid/control/comment-cr
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       comment-cr   = "Carriage return in comment" # 
a=1

     output from parser-cmd (stdout):
       {
         "comment-cr": {"type": "string", "value": "Carriage return in comment"}
       }

     want:
       Exit code 1

FAIL invalid/control/comment-del
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       comment-del  = "0x7f"   # 

     output from parser-cmd (stdout):
       {
         "comment-del": {"type": "string", "value": "0x7f"}
       }

     want:
       Exit code 1

FAIL invalid/control/comment-ff
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       comment-ff   = "0x7f"   # 

     output from parser-cmd (stdout):
       {
         "comment-ff": {"type": "string", "value": "0x7f"}
       }

     want:
       Exit code 1

FAIL invalid/control/comment-lf
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       comment-lf   = "ctrl-P" # 

     output from parser-cmd (stdout):
       {
         "comment-lf": {"type": "string", "value": "ctrl-P"}
       }

     want:
       Exit code 1

FAIL invalid/control/comment-null
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       comment-null = "null"   # 

     output from parser-cmd (stdout):
       {
         "comment-null": {"type": "string", "value": "null"}
       }

     want:
       Exit code 1

FAIL invalid/control/comment-us
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       comment-us   = "ctrl-_" # 

     output from parser-cmd (stdout):
       {
         "comment-us": {"type": "string", "value": "ctrl-_"}
       }

     want:
       Exit code 1

FAIL invalid/control/multi-cr
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       multi-cr   = """null
"""

     output from parser-cmd (stdout):
       {
         "multi-cr": {"type": "string", "value": "null\r"}
       }

     want:
       Exit code 1

FAIL invalid/control/multi-del
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       multi-del  = """null"""

     output from parser-cmd (stdout):
       {
         "multi-del": {"type": "string", "value": "null"}
       }

     want:
       Exit code 1

FAIL invalid/control/multi-lf
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       multi-lf   = """null"""

     output from parser-cmd (stdout):
       {
         "multi-lf": {"type": "string", "value": "null\u0010"}
       }

     want:
       Exit code 1

FAIL invalid/control/multi-null
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       multi-null = """null"""

     output from parser-cmd (stdout):
       {
         "multi-null": {"type": "string", "value": "null\u0000"}
       }

     want:
       Exit code 1

FAIL invalid/control/multi-us
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       multi-us   = """null"""

     output from parser-cmd (stdout):
       {
         "multi-us": {"type": "string", "value": "null\u001f"}
       }

     want:
       Exit code 1

FAIL invalid/control/rawmulti-cd
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       rawmulti-cd   = '''null
'''

     output from parser-cmd (stdout):
       {
         "rawmulti-cd": {"type": "string", "value": "null\r"}
       }

     want:
       Exit code 1

FAIL invalid/control/rawmulti-del
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       rawmulti-del  = '''null'''

     output from parser-cmd (stdout):
       {
         "rawmulti-del": {"type": "string", "value": "null"}
       }

     want:
       Exit code 1

FAIL invalid/control/rawmulti-lf
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       rawmulti-lf   = '''null'''

     output from parser-cmd (stdout):
       {
         "rawmulti-lf": {"type": "string", "value": "null\u0010"}
       }

     want:
       Exit code 1

FAIL invalid/control/rawmulti-null
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       rawmulti-null = '''null'''

     output from parser-cmd (stdout):
       {
         "rawmulti-null": {"type": "string", "value": "null\u0000"}
       }

     want:
       Exit code 1

FAIL invalid/control/rawmulti-us
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       rawmulti-us   = '''null'''

     output from parser-cmd (stdout):
       {
         "rawmulti-us": {"type": "string", "value": "null\u001f"}
       }

     want:
       Exit code 1

FAIL invalid/control/rawstring-cr
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       rawstring-cr   = 'null
'

     output from parser-cmd (stdout):
       {
         "rawstring-cr": {"type": "string", "value": "null\r"}
       }

     want:
       Exit code 1

FAIL invalid/control/rawstring-del
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       rawstring-del  = 'null'

     output from parser-cmd (stdout):
       {
         "rawstring-del": {"type": "string", "value": "null"}
       }

     want:
       Exit code 1

FAIL invalid/control/rawstring-lf
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       rawstring-lf   = 'null'

     output from parser-cmd (stdout):
       {
         "rawstring-lf": {"type": "string", "value": "null\u0010"}
       }

     want:
       Exit code 1

FAIL invalid/control/rawstring-null
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       rawstring-null = 'null'

     output from parser-cmd (stdout):
       {
         "rawstring-null": {"type": "string", "value": "null\u0000"}
       }

     want:
       Exit code 1

FAIL invalid/control/rawstring-us
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       rawstring-us   = 'null'

     output from parser-cmd (stdout):
       {
         "rawstring-us": {"type": "string", "value": "null\u001f"}
       }

     want:
       Exit code 1

FAIL invalid/control/string-bs
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       string-bs   = "backspace"

     output from parser-cmd (stdout):
       {
         "string-bs": {"type": "string", "value": "backspace\b"}
       }

     want:
       Exit code 1

FAIL invalid/control/string-cr
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       string-cr   = "null
"

     output from parser-cmd (stdout):
       {
         "string-cr": {"type": "string", "value": "null\r"}
       }

     want:
       Exit code 1

FAIL invalid/control/string-del
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       string-del  = "null"

     output from parser-cmd (stdout):
       {
         "string-del": {"type": "string", "value": "null"}
       }

     want:
       Exit code 1

FAIL invalid/control/string-lf
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       string-lf   = "null"

     output from parser-cmd (stdout):
       {
         "string-lf": {"type": "string", "value": "null\u0010"}
       }

     want:
       Exit code 1

FAIL invalid/control/string-null
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       string-null = "null"

     output from parser-cmd (stdout):
       {
         "string-null": {"type": "string", "value": "null\u0000"}
       }

     want:
       Exit code 1

FAIL invalid/control/string-us
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       string-us   = "null"

     output from parser-cmd (stdout):
       {
         "string-us": {"type": "string", "value": "null\u001f"}
       }

     want:
       Exit code 1

FAIL invalid/datetime/offset-overflow-minute
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       # Minute must be 00-59; we allow 60 too because some people do write offsets of
       # 60 minutes
       d = 1985-06-18 17:04:07+12:61

     output from parser-cmd (stdout):
       {
         "d": {"type": "datetime", "value": "1985-06-18T17:04:07+13:01"}
       }

     want:
       Exit code 1

FAIL invalid/float/exp-leading-us
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       exp-leading-us = 1e_23

     output from parser-cmd (stdout):
       {
         "exp-leading-us": {"type": "float", "value": "1e+23"}
       }

     want:
       Exit code 1

FAIL invalid/float/exp-point-2
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       exp-point-2 = 1.e2

     output from parser-cmd (stdout):
       {
         "exp-point-2": {"type": "float", "value": "100.0"}
       }

     want:
       Exit code 1

FAIL invalid/float/exp-point-3
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       exp-point-3 = 3.e+20

     output from parser-cmd (stdout):
       {
         "exp-point-3": {"type": "float", "value": "3e+20"}
       }

     want:
       Exit code 1

FAIL invalid/float/exp-trailing-us-1
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       exp-trailing-us-1 = 1_e2

     output from parser-cmd (stdout):
       {
         "exp-trailing-us-1": {"type": "float", "value": "100.0"}
       }

     want:
       Exit code 1

FAIL invalid/float/exp-trailing-us-2
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       exp-trailing-us-2 = 1.2_e2

     output from parser-cmd (stdout):
       {
         "exp-trailing-us-2": {"type": "float", "value": "120.0"}
       }

     want:
       Exit code 1

FAIL invalid/float/inf-capital
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       v = Inf

     output from parser-cmd (stdout):
       {
         "v": {"type": "float", "value": "inf"}
       }

     want:
       Exit code 1

FAIL invalid/float/inf_underscore
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       inf_underscore = in_f

     output from parser-cmd (stdout):
       {
         "inf_underscore": {"type": "float", "value": "inf"}
       }

     want:
       Exit code 1

FAIL invalid/float/nan-capital
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       v = NaN

     output from parser-cmd (stdout):
       {
         "v": {"type": "float", "value": "nan"}
       }

     want:
       Exit code 1

FAIL invalid/float/nan_underscore
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       nan_underscore = na_n

     output from parser-cmd (stdout):
       {
         "nan_underscore": {"type": "float", "value": "nan"}
       }

     want:
       Exit code 1

FAIL invalid/float/trailing-us-exp-1
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       trailing-us-exp-1 = 1_e2

     output from parser-cmd (stdout):
       {
         "trailing-us-exp-1": {"type": "float", "value": "100.0"}
       }

     want:
       Exit code 1

FAIL invalid/float/trailing-us-exp-2
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       trailing-us-exp-2 = 1.2_e2

     output from parser-cmd (stdout):
       {
         "trailing-us-exp-2": {"type": "float", "value": "120.0"}
       }

     want:
       Exit code 1

FAIL invalid/inline-table/duplicate-key-3
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       tbl = { fruit = { apple.color = "red" }, fruit.apple.texture = { smooth = true } }

     output from parser-cmd (stdout):
       {
         "tbl": {
           "fruit": {
             "apple": {
               "color": {"type": "string", "value": "red"},
               "texture": {
                 "smooth": {"type": "bool", "value": "true"}
               }
             }
           }
         }
       }

     want:
       Exit code 1

FAIL invalid/inline-table/no-close-1
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       a={

     output from parser-cmd (stdout):
       {
         "a": {}
       }

     want:
       Exit code 1

FAIL invalid/inline-table/overwrite-02
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       a={}
       # Inline tables are immutable and can't be extended
       [a.b]

     output from parser-cmd (stdout):
       {
         "a": {
           "b": {}
         }
       }

     want:
       Exit code 1

FAIL invalid/inline-table/overwrite-08
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       tab = { inner = { dog = "best" }, inner.cat = "worst" }

     output from parser-cmd (stdout):
       {
         "tab": {
           "inner": {
             "cat": {"type": "string", "value": "worst"},
             "dog": {"type": "string", "value": "best"}
           }
         }
       }

     want:
       Exit code 1

FAIL invalid/integer/double-sign-nex
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       double-sign-nex = --99

     output from parser-cmd (stdout):
       {
         "double-sign-nex": {"type": "integer", "value": "99"}
       }

     want:
       Exit code 1

FAIL invalid/integer/double-sign-plus
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       double-sign-plus = ++99

     output from parser-cmd (stdout):
       {
         "double-sign-plus": {"type": "integer", "value": "99"}
       }

     want:
       Exit code 1

FAIL invalid/integer/us-after-bin
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       us-after-bin = 0b_1

     output from parser-cmd (stdout):
       {
         "us-after-bin": {"type": "integer", "value": "1"}
       }

     want:
       Exit code 1

FAIL invalid/integer/us-after-hex
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       us-after-hex = 0x_1

     output from parser-cmd (stdout):
       {
         "us-after-hex": {"type": "integer", "value": "1"}
       }

     want:
       Exit code 1

FAIL invalid/integer/us-after-oct
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       us-after-oct = 0o_1

     output from parser-cmd (stdout):
       {
         "us-after-oct": {"type": "integer", "value": "1"}
       }

     want:
       Exit code 1

FAIL invalid/key/escape
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       \u00c0 = "latin capital letter A with grave"

     output from parser-cmd (stdout):
       {
         "\\u00c0": {"type": "string", "value": "latin capital letter A with grave"}
       }

     want:
       Exit code 1

FAIL invalid/key/special-character
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       μ = "greek small letter mu"

     output from parser-cmd (stdout):
       {
         "μ": {"type": "string", "value": "greek small letter mu"}
       }

     want:
       Exit code 1

FAIL invalid/key/start-dot
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       .key = 1

     output from parser-cmd (stdout):
       {
         "key": {"type": "integer", "value": "1"}
       }

     want:
       Exit code 1

FAIL invalid/key/two-equals-2
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       a==1

     output from parser-cmd (stdout):
       {
         "a=": {"type": "integer", "value": "1"}
       }

     want:
       Exit code 1

FAIL invalid/key/two-equals-3
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       a=b=1

     output from parser-cmd (stdout):
       {
         "a=b": {"type": "integer", "value": "1"}
       }

     want:
       Exit code 1

FAIL invalid/spec/inline-table-2-0
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       [product]
       type = { name = "Nail" }
       type.edible = false  # INVALID

     output from parser-cmd (stdout):
       {
         "product": {
           "type": {
             "edible": {"type": "bool", "value": "false"},
             "name":   {"type": "string", "value": "Nail"}
           }
         }
       }

     want:
       Exit code 1

FAIL invalid/table/append-with-dotted-keys-1
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       # First a.b.c defines a table: a.b.c = {z=9}
       #
       # Then we define a.b.c.t = "str" to add a str to the above table, making it:
       #
       #   a.b.c = {z=9, t="..."}
       #
       # While this makes sense, logically, it was decided this is not valid TOML as
       # it's too confusing/convoluted.
       #
       # See: https://github.com/toml-lang/toml/issues/846
       #      https://github.com/toml-lang/toml/pull/859

       [a.b.c]
         z = 9

       [a]
         b.c.t = "Using dotted keys to add to [a.b.c] after explicitly defining it above is not allowed"

     output from parser-cmd (stdout):
       {
         "a": {
           "b": {
             "c": {
               "z": {"type": "integer", "value": "9"},
               "t": {
                 "type":  "string",
                 "value": "Using dotted keys to add to [a.b.c] after explicitly defining it above is not allowed"
               }
             }
           }
         }
       }

     want:
       Exit code 1

FAIL invalid/table/append-with-dotted-keys-2
     Expected an error, but no error was reported.

     input sent to parser-cmd:
       # This is the same issue as in injection-1.toml, except that nests one level
       # deeper. See that file for a more complete description.

       [a.b.c.d]
         z = 9

       [a]
         b.c.d.k.t = "Using dotted keys to add to [a.b.c.d] after explicitly defining it above is not allowed"

     output from parser-cmd (stdout):
       {
         "a": {
           "b": {
             "c": {
               "d": {
                 "z": {"type": "integer", "value": "9"},
                 "k": {
                   "t": {
                     "type":  "string",
                     "value": "Using dotted keys to add to [a.b.c.d] after explicitly defining it above is not allowed"
                   }
                 }
               }
             }
           }
         }
       }

     want:
       Exit code 1

toml-test v2024-05-31 [./src/python-toml/tests/decoding_test.py]: using embedded tests
  valid tests: 164 passed, 18 failed
invalid tests: 298 passed, 73 failed

==> ENCODER TESTS
FAIL valid/array/mixed-string-table
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
         print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
         addtoretval, sections = encoder.dump_sections(o, "")
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 203, in dump_sections
         s, d = self.dump_sections(a, sup + qsection)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 193, in dump_sections
         if not isinstance(o[section], dict):
                           ~^^^^^^^^^
     TypeError: string indices must be integers, not 'str'
 
     Exit 1

     input sent to parser-cmd:
       {
           "contributors": [
               {"type": "string", "value": "Foo Bar \u003cfoo@example.com\u003e"},
               {
                   "email": {"type": "string", "value": "bazqux@example.com"},
                   "name":  {"type": "string", "value": "Baz Qux"},
                   "url":   {"type": "string", "value": "https://example.com/bazqux"}
               }
           ],
           "mixed": [
               {
                   "k": {"type": "string", "value": "a"}
               },
               {"type": "string", "value": "b"},
               {"type": "integer", "value": "1"}
           ]
       }

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
           print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
           addtoretval, sections = encoder.dump_sections(o, "")
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 203, in dump_sections
           s, d = self.dump_sections(a, sup + qsection)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 193, in dump_sections
           if not isinstance(o[section], dict):
                             ~^^^^^^^^^
       TypeError: string indices must be integers, not 'str'

       Exit 1

     want:
          

FAIL valid/array/nested-inline-table
     Could not find key "a.b" in encoder output

     input sent to parser-cmd:
       {
           "a": [{
               "b": {}
           }]
       }

     output from parser-cmd (stdout):
       [[a]]

     want:
       a = [ { b = {} } ]

FAIL valid/datetime/local-time
     Values for key "milliseconds" differ:
       Expected:     0000-01-01 10:32:00.555 +0100 time-local (time.Time)
       Your encoder: 0000-01-01 10:32:00.000555 +0100 time-local (time.Time)

     input sent to parser-cmd:
       {
           "besttimeever": {"type": "time-local", "value": "17:45:00"},
           "milliseconds": {"type": "time-local", "value": "10:32:00.555"}
       }

     output from parser-cmd (stdout):
       besttimeever = 17:45:00
       milliseconds = 10:32:00.000555

     want:
       besttimeever = 17:45:00
       milliseconds = 10:32:00.555

FAIL valid/inline-table/key-dotted-5
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
         print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
         addtoretval, sections = encoder.dump_sections(o, "")
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 203, in dump_sections
         s, d = self.dump_sections(a, sup + qsection)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 193, in dump_sections
         if not isinstance(o[section], dict):
                           ~^^^^^^^^^
     TypeError: string indices must be integers, not 'str'
 
     Exit 1

     input sent to parser-cmd:
       {
           "arr-1": [{
               "a": {
                   "b": {"type": "integer", "value": "1"}
               }
           }],
           "arr-2": [
               {"type": "string", "value": "str"},
               {
                   "a": {
                       "b": {"type": "integer", "value": "1"}
                   }
               }
           ],
           "arr-3": [
               {
                   "a": {
                       "b": {"type": "integer", "value": "1"}
                   }
               },
               {
                   "a": {
                       "b": {"type": "integer", "value": "2"}
                   }
               }
           ],
           "arr-4": [
               {"type": "string", "value": "str"},
               {
                   "a": {
                       "b": {"type": "integer", "value": "1"}
                   }
               },
               {
                   "a": {
                       "b": {"type": "integer", "value": "2"}
                   }
               }
           ]
       }

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
           print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
           addtoretval, sections = encoder.dump_sections(o, "")
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 203, in dump_sections
           s, d = self.dump_sections(a, sup + qsection)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 193, in dump_sections
           if not isinstance(o[section], dict):
                             ~^^^^^^^^^
       TypeError: string indices must be integers, not 'str'

       Exit 1

     want:
          

FAIL valid/inline-table/nest
     Key "arr_arr_tbl_empty" (type "table"):
       Expected:     map[string]any(nil)
       Your encoder: map[string]any

     input sent to parser-cmd:
       {
           "arr_arr_tbl_empty": [[{}]],
           "arr_arr_tbl_val":   [[{
               "one": {"type": "integer", "value": "1"}
           }]],
           "arr_arr_tbls":      [[
               {
                   "one": {"type": "integer", "value": "1"}
               },
               {
                   "two": {"type": "integer", "value": "2"}
               }
           ]],
           "arr_tbl_tbl":       [{
               "tbl": {
                   "one": {"type": "integer", "value": "1"}
               }
           }],
           "tbl_arr_tbl":       {"arr_tbl": [{
               "one": {"type": "integer", "value": "1"}
           }]},
           "tbl_tbl_empty": {
               "tbl_0": {}
           },
           "tbl_tbl_val": {
               "tbl_1": {
                   "one": {"type": "integer", "value": "1"}
               }
           }
       }

     output from parser-cmd (stdout):
       arr_arr_tbl_empty = [ [ [],],]
       arr_arr_tbl_val = [ [ [ "one",],],]
       arr_arr_tbls = [ [ [ "one",], [ "two",],],]
       [[arr_tbl_tbl]]

       [arr_tbl_tbl.tbl]
       one = 1

       [tbl_arr_tbl]
       [[tbl_arr_tbl.arr_tbl]]
       one = 1

       [tbl_tbl_empty.tbl_0]

       [tbl_tbl_val.tbl_1]
       one = 1

     want:
       tbl_tbl_empty = { tbl_0 = {} }
       tbl_tbl_val   = { tbl_1 = { one = 1 } }
       tbl_arr_tbl   = { arr_tbl = [ { one = 1 } ] }
       arr_tbl_tbl   = [ { tbl = { one = 1 } } ]

       # Array-of-array-of-table is interesting because it can only
       # be represented in inline form.
       arr_arr_tbl_empty = [ [ {} ] ]
       arr_arr_tbl_val = [ [ { one = 1 } ] ]
       arr_arr_tbls  = [ [ { one = 1 }, { two = 2 } ] ]

FAIL valid/key/escapes
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
         print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
         addtoretval, sections = encoder.dump_sections(o, "")
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 192, in dump_sections
         qsection = _dump_str(section)
                    ^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 113, in _dump_str
         v = [v[0] + joiner + v[1]] + v[2:]
                              ~^^^
     IndexError: list index out of range
 
     Exit 1

     input sent to parser-cmd:
       {
           "\b":         {"type": "string", "value": "bell"},
           "\n":         {"type": "string", "value": "newline"},
           "\"":         {"type": "string", "value": "just a quote"},
           "backsp\b\b": {},
           "À":          {"type": "string", "value": "latin capital letter A with grave"},
           "\"quoted\"": {
               "quote": {"type": "bool", "value": "true"}
           },
           "a.b": {
               "À": {}
           }
       }

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
           print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
           addtoretval, sections = encoder.dump_sections(o, "")
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 192, in dump_sections
           qsection = _dump_str(section)
                      ^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 113, in _dump_str
           v = [v[0] + joiner + v[1]] + v[2:]
                                ~^^^
       IndexError: list index out of range

       Exit 1

     want:
          

FAIL valid/key/quoted-unicode
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
         print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
         addtoretval, sections = encoder.dump_sections(o, "")
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 192, in dump_sections
         qsection = _dump_str(section)
                    ^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 113, in _dump_str
         v = [v[0] + joiner + v[1]] + v[2:]
                              ~^^^
     IndexError: list index out of range
 
     Exit 1

     input sent to parser-cmd:
       {
           "\u0000":               {"type": "string", "value": "null"},
           "\b \f A  € ÿ ퟿  ￿ 𐀀 􏿿": {"type": "string", "value": "escaped key"},
           "\\u0000":              {"type": "string", "value": "different key"},
           "l ~ € ÿ ퟿  ￿ 𐀀 􏿿":      {"type": "string", "value": "literal key"},
           "~ € ÿ ퟿  ￿ 𐀀 􏿿":        {"type": "string", "value": "basic key"}
       }

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
           print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
           addtoretval, sections = encoder.dump_sections(o, "")
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 192, in dump_sections
           qsection = _dump_str(section)
                      ^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 113, in _dump_str
           v = [v[0] + joiner + v[1]] + v[2:]
                                ~^^^
       IndexError: list index out of range

       Exit 1

     want:
          

FAIL valid/spec/array-0
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
         print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
         addtoretval, sections = encoder.dump_sections(o, "")
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 203, in dump_sections
         s, d = self.dump_sections(a, sup + qsection)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 193, in dump_sections
         if not isinstance(o[section], dict):
                           ~^^^^^^^^^
     TypeError: string indices must be integers, not 'str'
 
     Exit 1

     input sent to parser-cmd:
       {
           "colors": [
               {"type": "string", "value": "red"},
               {"type": "string", "value": "yellow"},
               {"type": "string", "value": "green"}
           ],
           "contributors": [
               {"type": "string", "value": "Foo Bar \u003cfoo@example.com\u003e"},
               {
                   "email": {"type": "string", "value": "bazqux@example.com"},
                   "name":  {"type": "string", "value": "Baz Qux"},
                   "url":   {"type": "string", "value": "https://example.com/bazqux"}
               }
           ],
           "integers": [
               {"type": "integer", "value": "1"},
               {"type": "integer", "value": "2"},
               {"type": "integer", "value": "3"}
           ],
           "nested_arrays_of_ints": [
               [
                   {"type": "integer", "value": "1"},
                   {"type": "integer", "value": "2"}
               ],
               [
                   {"type": "integer", "value": "3"},
                   {"type": "integer", "value": "4"},
                   {"type": "integer", "value": "5"}
               ]
           ],
           "nested_mixed_array": [
               [
                   {"type": "integer", "value": "1"},
                   {"type": "integer", "value": "2"}
               ],
               [
                   {"type": "string", "value": "a"},
                   {"type": "string", "value": "b"},
                   {"type": "string", "value": "c"}
               ]
           ],
           "numbers": [
               {"type": "float", "value": "0.1"},
               {"type": "float", "value": "0.2"},
               {"type": "float", "value": "0.5"},
               {"type": "integer", "value": "1"},
               {"type": "integer", "value": "2"},
               {"type": "integer", "value": "5"}
           ],
           "string_array": [
               {"type": "string", "value": "all"},
               {"type": "string", "value": "strings"},
               {"type": "string", "value": "are the same"},
               {"type": "string", "value": "type"}
           ]
       }

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
           print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
           addtoretval, sections = encoder.dump_sections(o, "")
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 203, in dump_sections
           s, d = self.dump_sections(a, sup + qsection)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 193, in dump_sections
           if not isinstance(o[section], dict):
                             ~^^^^^^^^^
       TypeError: string indices must be integers, not 'str'

       Exit 1

     want:
          

FAIL valid/spec/local-time-0
     Values for key "lt2" differ:
       Expected:     0000-01-01 00:32:00.999 +0100 time-local (time.Time)
       Your encoder: 0000-01-01 00:32:00.000999 +0100 time-local (time.Time)

     input sent to parser-cmd:
       {
           "lt1": {"type": "time-local", "value": "07:32:00"},
           "lt2": {"type": "time-local", "value": "00:32:00.999"}
       }

     output from parser-cmd (stdout):
       lt1 = 07:32:00
       lt2 = 00:32:00.000999

     want:
       lt1 = 07:32:00
       lt2 = 00:32:00.999

FAIL valid/string/escape-tricky
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
         print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
         addtoretval, sections = encoder.dump_sections(o, "")
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 226, in dump_sections
         unicode(self.dump_value(o[section])) + '\n')
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 180, in dump_value
         return dump_fn(v) if dump_fn is not None else self.dump_funcs[str](v)
                ^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 113, in _dump_str
         v = [v[0] + joiner + v[1]] + v[2:]
                              ~^^^
     IndexError: list index out of range
 
     Exit 1

     input sent to parser-cmd:
       {
           "end_esc":                   {"type": "string", "value": "String does not end here\" but ends here\\"},
           "lit_end_esc":               {"type": "string", "value": "String ends here\\"},
           "lit_multiline_end":         {"type": "string", "value": "There is no escape\\"},
           "lit_multiline_not_unicode": {"type": "string", "value": "\\u007f"},
           "multiline_end_esc":         {"type": "string", "value": "When will it end? \"\"\"...\"\"\" should be here\""},
           "multiline_not_unicode":     {"type": "string", "value": "\\u0041"},
           "multiline_unicode":         {"type": "string", "value": " "}
       }

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
           print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
           addtoretval, sections = encoder.dump_sections(o, "")
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 226, in dump_sections
           unicode(self.dump_value(o[section])) + '\n')
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 180, in dump_value
           return dump_fn(v) if dump_fn is not None else self.dump_funcs[str](v)
                  ^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 113, in _dump_str
           v = [v[0] + joiner + v[1]] + v[2:]
                                ~^^^
       IndexError: list index out of range

       Exit 1

     want:
          

FAIL valid/string/escaped-escape
     Values for key "answer" differ:
       Expected:     \x64 (string)
       Your encoder: d (string)

     input sent to parser-cmd:
       {
           "answer": {"type": "string", "value": "\\x64"}
       }

     output from parser-cmd (stdout):
       answer = "\u0064"

     want:
       answer = "\\x64"

FAIL valid/string/escapes
     Values for key "backspace" differ:
       Expected:     |. (string)
       Your encoder: |x08. (string)

     input sent to parser-cmd:
       {
           "backslash":     {"type": "string", "value": "|\\."},
           "backspace":     {"type": "string", "value": "|\b."},
           "carriage":      {"type": "string", "value": "|\r."},
           "delete":        {"type": "string", "value": "|."},
           "formfeed":      {"type": "string", "value": "|\f."},
           "newline":       {"type": "string", "value": "|\n."},
           "notunicode1":   {"type": "string", "value": "|\\u."},
           "notunicode2":   {"type": "string", "value": "|\\u."},
           "notunicode3":   {"type": "string", "value": "|\\u0075."},
           "notunicode4":   {"type": "string", "value": "|\\u."},
           "quote":         {"type": "string", "value": "|\"."},
           "tab":           {"type": "string", "value": "|\t."},
           "unitseparator": {"type": "string", "value": "|\u001f."}
       }

     output from parser-cmd (stdout):
       backslash = "|\\."
       backspace = "|x08."
       carriage = "|\r."
       delete = "|x7f."
       formfeed = "|x0c."
       newline = "|\n."
       notunicode1 = "|\\u."
       notunicode2 = "|\\u."
       notunicode3 = "|\\u0075."
       notunicode4 = "|\\u."
       quote = "|\"."
       tab = "|\t."
       unitseparator = "|x1f."

     want:
       backspace     = "|\b."
       tab           = "|\t."
       newline       = "|\n."
       formfeed      = "|\f."
       carriage      = "|\r."
       quote         = "|\"."
       backslash     = "|\\."
       delete        = "|\u007F."
       unitseparator = "|\u001F."

       # \u is escaped, so should NOT be interperted as a \u escape.
       notunicode1   = "|\\u."
       notunicode2   = "|\u005Cu."
       notunicode3   = "|\\u0075."
       notunicode4   = "|\\\u0075."

FAIL valid/string/quoted-unicode
     Values for key "basic_string" differ:
       Expected:     ~ € ÿ ퟿  ￿ 𐀀 􏿿 (string)
       Your encoder: ~ x80 ÿ ퟿  ￿ 𐀀 􏿿 (string)

     input sent to parser-cmd:
       {
           "basic_string":   {"type": "string", "value": "~ € ÿ ퟿  ￿ 𐀀 􏿿"},
           "escaped_string": {"type": "string", "value": "\u0000 \b \f A  € ÿ ퟿  ￿ 𐀀 􏿿"},
           "literal_string": {"type": "string", "value": "~ € ÿ ퟿  ￿ 𐀀 􏿿"},
           "not_escaped_string": {
               "type":  "string",
               "value": "\\u0000 \\u0008 \\u000c \\U00000041 \\u007f \\u0080 \\u00ff \\ud7ff \\ue000 \\uffff \\U00010000 \\U0010ffff"
           }
       }

     output from parser-cmd (stdout):
       basic_string = "~ x80 ÿ \ud7ff \ue000 \uffff 𐀀 \U0010ffff"
       escaped_string = "00 x08 x0c A x7f x80 ÿ \ud7ff \ue000 \uffff 𐀀 \U0010ffff"
       literal_string = "~ x80 ÿ \ud7ff \ue000 \uffff 𐀀 \U0010ffff"
       not_escaped_string = "\\u0000 \\u0008 \\u000c \\U00000041 \\u007f \\u0080 \\u00ff \\ud7ff \\ue000 \\uffff \\U00010000 \\U0010ffff"

     want:

       escaped_string = "\u0000 \u0008 \u000c \U00000041 \u007f \u0080 \u00ff \ud7ff \ue000 \uffff \U00010000 \U0010ffff"
       not_escaped_string = '\u0000 \u0008 \u000c \U00000041 \u007f \u0080 \u00ff \ud7ff \ue000 \uffff \U00010000 \U0010ffff'

       basic_string = "~ € ÿ ퟿  ￿ 𐀀 􏿿"
       literal_string = '~ € ÿ ퟿  ￿ 𐀀 􏿿'

FAIL valid/string/unicode-escape
     Traceback (most recent call last):
       File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
         print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
         addtoretval, sections = encoder.dump_sections(o, "")
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 226, in dump_sections
         unicode(self.dump_value(o[section])) + '\n')
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 180, in dump_value
         return dump_fn(v) if dump_fn is not None else self.dump_funcs[str](v)
                ^^^^^^^^^^
       File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 113, in _dump_str
         v = [v[0] + joiner + v[1]] + v[2:]
                              ~^^^
     IndexError: list index out of range
 
     Exit 1

     input sent to parser-cmd:
       {
           "a":          {"type": "string", "value": "a"},
           "b":          {"type": "string", "value": "b"},
           "c":          {"type": "string", "value": "c"},
           "delta-1":    {"type": "string", "value": "δ"},
           "delta-2":    {"type": "string", "value": "δ"},
           "ml-a":       {"type": "string", "value": "a"},
           "ml-b":       {"type": "string", "value": "b"},
           "ml-c":       {"type": "string", "value": "c"},
           "ml-delta-1": {"type": "string", "value": "δ"},
           "ml-delta-2": {"type": "string", "value": "δ"},
           "ml-null-1":  {"type": "string", "value": "\u0000"},
           "ml-null-2":  {"type": "string", "value": "\u0000"},
           "null-1":     {"type": "string", "value": "\u0000"},
           "null-2":     {"type": "string", "value": "\u0000"}
       }

     output from parser-cmd (stderr):
       Traceback (most recent call last):
         File "/home/martin/code/Toml/toml-test-matrix/./src/python-toml/tests/encoding_test.py", line 28, in 
           print(toml.dumps({k: convert(v) for (k, v) in j.items()}))
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 60, in dumps
           addtoretval, sections = encoder.dump_sections(o, "")
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 226, in dump_sections
           unicode(self.dump_value(o[section])) + '\n')
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 180, in dump_value
           return dump_fn(v) if dump_fn is not None else self.dump_funcs[str](v)
                  ^^^^^^^^^^
         File "/home/martin/code/Toml/toml-test-matrix/src/python-toml/toml/encoder.py", line 113, in _dump_str
           v = [v[0] + joiner + v[1]] + v[2:]
                                ~^^^
       IndexError: list index out of range

       Exit 1

     want:
          

toml-test v2024-05-31 [./src/python-toml/tests/encoding_test.py]: using embedded tests
encoder tests: 168 passed, 14 failed
took 3.7 1.80