diff --git a/src/tomli/_parser.py b/src/tomli/_parser.py
index e251c70..47f467e 100644
--- a/src/tomli/_parser.py
+++ b/src/tomli/_parser.py
@@ -6,7 +6,6 @@
 
 import sys
 from types import MappingProxyType
-from typing import IO, TYPE_CHECKING, Any, Final, NamedTuple
 
 from ._re import (
     RE_DATETIME,
@@ -17,8 +16,10 @@
     match_to_number,
 )
 
+TYPE_CHECKING = False
 if TYPE_CHECKING:
     from collections.abc import Iterable
+    from typing import IO, Any, Final
 
     from ._types import Key, ParseFloat, Pos
 
@@ -156,7 +157,7 @@ def loads(__s: str, *, parse_float: ParseFloat = float) -> dict[str, Any]:  # no
             f"Expected str object, not '{type(__s).__qualname__}'"
         ) from None
     pos = 0
-    out = Output(NestedDict(), Flags())
+    out = Output()
     header: Key = ()
     parse_float = make_safe_parse_float(parse_float)
 
@@ -307,9 +308,10 @@ def append_nest_to_list(self, key: Key) -> None:
             cont[last_key] = [{}]
 
 
-class Output(NamedTuple):
-    data: NestedDict
-    flags: Flags
+class Output:
+    def __init__(self) -> None:
+        self.data = NestedDict()
+        self.flags = Flags()
 
 
 def skip_chars(src: str, pos: Pos, chars: Iterable[str]) -> Pos:
diff --git a/src/tomli/_re.py b/src/tomli/_re.py
index fff272f..6734196 100644
--- a/src/tomli/_re.py
+++ b/src/tomli/_re.py
@@ -7,9 +7,11 @@
 from datetime import date, datetime, time, timedelta, timezone, tzinfo
 from functools import lru_cache
 import re
-from typing import TYPE_CHECKING, Any, Final
 
+TYPE_CHECKING = False
 if TYPE_CHECKING:
+    from typing import Any, Final
+
     from ._types import ParseFloat
 
 # E.g.