]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] typing: Add missing test case for Protocol inheritance (GH-132597) (#132603)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 16 Apr 2025 15:45:29 +0000 (17:45 +0200)
committerGitHub <noreply@github.com>
Wed, 16 Apr 2025 15:45:29 +0000 (15:45 +0000)
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Lib/test/test_typing.py

index 9dc719a27575a32a8b6398658688077bac9aeaf4..e1115809d4f390f70728dffc0bfb7f07b0f0245d 100644 (file)
@@ -2935,6 +2935,23 @@ class ProtocolTests(BaseTestCase):
         self.assertNotIsInstance(D(), E)
         self.assertNotIsInstance(E(), D)
 
+    def test_inheritance_from_object(self):
+        # Inheritance from object is specifically allowed, unlike other nominal classes
+        class P(Protocol, object):
+            x: int
+
+        self.assertEqual(typing.get_protocol_members(P), {'x'})
+
+        class OldGeneric(Protocol, Generic[T], object):
+            y: T
+
+        self.assertEqual(typing.get_protocol_members(OldGeneric), {'y'})
+
+        class NewGeneric[T](Protocol, object):
+            z: T
+
+        self.assertEqual(typing.get_protocol_members(NewGeneric), {'z'})
+
     def test_no_instantiation(self):
         class P(Protocol): pass