=== Format spec edge cases === Empty fmt: Template(strings=('', ''), interpolations=(Interpolation(42, '42', None, ''),)) Width: 'Template(strings=('', ''), interpolations=(Interpolation(42, '42', None, '10'),))' Conv+fmt: 'Template(strings=('', ''), interpolations=(Interpolation(42, '42', 'r', '>10'),))' Interp fmt: 'Template(strings=('', ''), interpolations=(Interpolation(3.14, '3.14', None, '10.2f'),))' Escaped braces: 'Template(strings=('Hello {name} and {{value}}',), interpolations=())' Conv empty fmt: 'Template(strings=('', ''), interpolations=(Interpolation(42, '42', 'r', ''),))' === Format spec edge cases === Full format: 'Template(strings=('', ''), interpolations=(Interpolation(42, 'x', 'r', '0>+#10.5'),))' === Format spec with special characters === Format spec '!r': True Conversion is None: True Coverage tests completed! === Debug format edge cases === Debug with conv: 'Template(strings=('x=', ''), interpolations=(Interpolation(42, 'x', 'r', ''),))' === Debug specifier tests === Debug basic: strings=('value=', ''), conv=r Debug !s: strings=('value=', ''), conv=s Debug fmt: strings=('value=', ''), fmt_spec='>10' === Large number of interpolations === 62 True 63 True 64 True 65 True === Malformed format specs (valid in CPython) === Malformed 1: format_spec: '10!r', conversion: None Malformed 2: format_spec: '^10!s', conversion: None Malformed 3: format_spec: '>!10', conversion: None Invalid unicode: SyntaxError - invalid syntax Custom exception re-raised: Test exception NULL lexer: Tested in heapalloc_fail_tstring.py \N{} escape: SyntaxError Raw Unicode escapes: '\u0041\U00000042' CR LF handling: OK Deep indent: OK Trailing backslash: SyntaxError === Empty format spec node === Empty format after colon: OK === Format spec with special characters (coverage) === Double quotes expr: format_spec='^^^^^' Backslash raw: format_spec='<5\\\\' Backslash non-raw: format_spec='<5\\' Multiple escapes: format_spec='<5\n\t\r'