Fix tests on Python 3.13, add note on TypedDict kwargs (#212)

Fixes #204
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8d36fe6..39bf2b5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,9 @@
 # Unreleased
 
 - Declare support for Python 3.12. Patch by Jelle Zijlstra.
+- Fix tests on Python 3.13, which removes support for creating
+  `TypedDict` classes through the keyword-argument syntax. Patch by
+  Jelle Zijlstra.
 
 # Release 4.6.3 (June 1, 2023)
 
diff --git a/doc/index.rst b/doc/index.rst
index 6b1a6f0..177f8a1 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -276,6 +276,13 @@
    ``typing_extensions`` backport provides all of these features and bugfixes on
    all Python versions.
 
+   Historically, ``TypedDict`` has supported an alternative creation syntax
+   where the fields are supplied as keyword arguments (e.g.,
+   ``TypedDict("TD", a=int, b=str)``). In CPython, this feature was deprecated
+   in Python 3.11 and removed in Python 3.13. ``typing_extensions.TypedDict``
+   raises a :py:exc:`DeprecationWarning` when this syntax is used in Python 3.12
+   or lower and fails with a :py:exc:`TypeError` in Python 3.13 and higher.
+
    .. versionchanged:: 4.3.0
 
       Added support for generic ``TypedDict``\ s.
diff --git a/src/test_typing_extensions.py b/src/test_typing_extensions.py
index f9c3389..62c70be 100644
--- a/src/test_typing_extensions.py
+++ b/src/test_typing_extensions.py
@@ -2879,6 +2879,12 @@
         self.assertEqual(Emp.__annotations__, {'name': str, 'id': int})
         self.assertEqual(Emp.__total__, True)
 
+    @skipIf(sys.version_info < (3, 13), "Change in behavior in 3.13")
+    def test_keywords_syntax_raises_on_3_13(self):
+        with self.assertRaises(TypeError):
+            Emp = TypedDict('Emp', name=str, id=int)
+
+    @skipIf(sys.version_info >= (3, 13), "3.13 removes support for kwargs")
     def test_basics_keywords_syntax(self):
         with self.assertWarns(DeprecationWarning):
             Emp = TypedDict('Emp', name=str, id=int)
@@ -2895,6 +2901,7 @@
         self.assertEqual(Emp.__annotations__, {'name': str, 'id': int})
         self.assertEqual(Emp.__total__, True)
 
+    @skipIf(sys.version_info >= (3, 13), "3.13 removes support for kwargs")
     def test_typeddict_special_keyword_names(self):
         with self.assertWarns(DeprecationWarning):
             TD = TypedDict("TD", cls=type, self=object, typename=str, _typename=int,