print("\n=== Format spec edge cases ===") print(f"Empty fmt: {t'{42:}'}") print(f"Width: '{t'{42:10}'}'") print(f"Conv+fmt: '{t'{42!r:>10}'}'") width = 10 print(f"Interp fmt: '{t'{3.14:{width}.2f}'}'") try: t_escaped = t"Hello {{name}} and {{{{value}}}}" print(f"Escaped braces: '{t_escaped}'") except Exception as e: print(f"Escaped braces error: {e}") try: t_conv_fmt = t"{42!r:}" print(f"Conv empty fmt: '{t_conv_fmt}'") except Exception as e: print(f"Conv fmt error: {e}") print("\n=== Format spec edge cases ===") try: x = 42 result = t'{x!r:0>+#10.5}' print(f"Full format: '{result}'") except Exception as e: print(f"Full format error: {e}") print("\n=== Format spec with special characters ===") try: x = 42 result = t"{x:!r}" print(f"Format spec '!r': {result.interpolations[0].format_spec == '!r'}") print(f"Conversion is None: {result.interpolations[0].conversion is None}") except Exception as e: print(f"Format spec error: {type(e).__name__}") print("\nCoverage tests completed!") print("\n=== Debug format edge cases ===") try: x = 42 result = t'{x=!r}' print(f"Debug with conv: '{result}'") except SyntaxError as e: print(f"Debug conv: SyntaxError - {e}") print("\n=== Debug specifier tests ===") try: value = 42 t1 = t'{value=}' print(f"Debug basic: strings={t1.strings}, conv={t1.interpolations[0].conversion}") t2 = t'{value=!s}' print(f"Debug !s: strings={t2.strings}, conv={t2.interpolations[0].conversion}") t3 = t'{value=:>10}' print(f"Debug fmt: strings={t3.strings}, fmt_spec='{t3.interpolations[0].format_spec}'") except Exception as e: print(f"Debug format error: {e}") print("\n=== Large number of interpolations ===") for N in (62, 63, 64, 65): x = 1 code = 'result = str(t"' + '{x}' * N + '")' exec(code) expected = "Template(strings=" + repr(tuple("" for _ in range(N + 1))) + ", interpolations=(" + ", ".join("Interpolation(1, 'x', None, '')" for _ in range(N)) + "))" print(N, result == expected) print("\n=== Malformed format specs (valid in CPython) ===") x = 42 value = 42 result = t'{x:10!r}' print(f"Malformed 1: format_spec: '{result.interpolations[0].format_spec}', conversion: {result.interpolations[0].conversion}") result = t'{value:^10!s}' print(f"Malformed 2: format_spec: '{result.interpolations[0].format_spec}', conversion: {result.interpolations[0].conversion}") result = t'{x:>!10}' print(f"Malformed 3: format_spec: '{result.interpolations[0].format_spec}', conversion: {result.interpolations[0].conversion}") try: exec(r"t'\U00110000'") print("ERROR: Should have failed") except SyntaxError as e: print(f"Invalid unicode: SyntaxError - {e}") class CustomException(Exception): pass class BadClass: def __getattr__(self, name): raise CustomException("Test exception") try: bad_obj = BadClass() result = t"{bad_obj.attr}" print("ERROR: Should have raised exception") except CustomException as e: print(f"Custom exception re-raised: {e}") except Exception as e: print(f"Other exception: {type(e).__name__} - {e}") print("\nNULL lexer: Tested in heapalloc_fail_tstring.py") try: exec(r"t'\N{LATIN SMALL LETTER A}'") print("ERROR: \\N{{}} should not be supported") except (SyntaxError, NotImplementedError) as e: print(f"\\N{{}} escape: SyntaxError") try: result = rt'\u0041\U00000042' print(f"Raw Unicode escapes: '{result.strings[0]}'") except Exception as e: print(f"Raw Unicode error: {e}") try: code_with_crlf = 't"line1\\r\\nline2"' exec(code_with_crlf) print("CR LF handling: OK") except Exception as e: print(f"CR LF error: {e}") try: code = "" for i in range(20): code += " " * i + "if True:\n" code += " " * 20 + "x = t'deep indent'" exec(code) print("Deep indent: OK") except Exception as e: print(f"Deep indent error: {e}") try: exec("t'test\\") print("ERROR: Trailing backslash should fail") except SyntaxError as e: print(f"Trailing backslash: SyntaxError") print("\n=== Empty format spec node ===") try: x = 42 result = t'{x:}' print(f"Empty format after colon: OK") except Exception as e: print(f"Empty format spec error: {e}") print("\n=== Format spec with special characters (coverage) ===") try: align = "<" width = 5 value = "test" result = t'{value:{"^"*width}}' print(f"Double quotes expr: format_spec={repr(result.interpolations[0].format_spec)}") except Exception as e: print(f"Double quotes expr error: {type(e).__name__}: {e}") try: align = "<" width = 5 value = "test" result = rt"{value:{align}{width}\\}" print(f"Backslash raw: format_spec={repr(result.interpolations[0].format_spec)}") except Exception as e: print(f"Backslash raw error: {type(e).__name__}: {e}") try: align = "<" width = 5 value = "test" result = t"{value:{align}{width}\\}" print(f"Backslash non-raw: format_spec={repr(result.interpolations[0].format_spec)}") except Exception as e: print(f"Backslash non-raw error: {type(e).__name__}: {e}") try: align = "<" width = 5 value = "test" result = t"{value:{align}{width}\n\t\r}" print(f"Multiple escapes: format_spec={repr(result.interpolations[0].format_spec)}") except Exception as e: print(f"Multiple escapes error: {type(e).__name__}: {e}")