diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2024-05-30 03:28:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-30 01:28:31 +0000 |
commit | 06c62d697a87822690342cd0d99d1cdbeca4ce9d (patch) | |
tree | 5c654d18a4cecf0af6e9d2ff7dc4570a834ee4d6 | |
parent | [3.13] gh-117398: Add multiphase support to _datetime (gh-119694) (diff) | |
download | cpython-06c62d697a87822690342cd0d99d1cdbeca4ce9d.tar.gz cpython-06c62d697a87822690342cd0d99d1cdbeca4ce9d.tar.bz2 cpython-06c62d697a87822690342cd0d99d1cdbeca4ce9d.zip |
[3.13] gh-119260: Clarify is_dataclass Behavior for Subclasses in Documentation and Tests (GH-119480) (#119760)
gh-119260: Clarify is_dataclass Behavior for Subclasses in Documentation and Tests (GH-119480)
(cherry picked from commit bf4ff3ad2e362801e87c85fffd9e140b774cef26)
Co-authored-by: Aditya Borikar <adityaborikar2@gmail.com>
Co-authored-by: Carl Meyer <carl@oddbird.net>
-rw-r--r-- | Doc/library/dataclasses.rst | 4 | ||||
-rw-r--r-- | Lib/test/test_dataclasses/__init__.py | 18 |
2 files changed, 20 insertions, 2 deletions
diff --git a/Doc/library/dataclasses.rst b/Doc/library/dataclasses.rst index cf707ca5b68..fcb5e8bad29 100644 --- a/Doc/library/dataclasses.rst +++ b/Doc/library/dataclasses.rst @@ -461,8 +461,8 @@ Module contents .. function:: is_dataclass(obj) - Return ``True`` if its parameter is a dataclass or an instance of one, - otherwise return ``False``. + Return ``True`` if its parameter is a dataclass (including subclasses of a + dataclass) or an instance of one, otherwise return ``False``. If you need to know if a class is an instance of a dataclass (and not a dataclass itself), then add a further check for ``not diff --git a/Lib/test/test_dataclasses/__init__.py b/Lib/test/test_dataclasses/__init__.py index 04dd9f3265b..ffb8bbe75c5 100644 --- a/Lib/test/test_dataclasses/__init__.py +++ b/Lib/test/test_dataclasses/__init__.py @@ -1547,6 +1547,24 @@ class TestCase(unittest.TestCase): self.assertTrue(is_dataclass(type(a))) self.assertTrue(is_dataclass(a)) + def test_is_dataclass_inheritance(self): + @dataclass + class X: + y: int + + class Z(X): + pass + + self.assertTrue(is_dataclass(X), "X should be a dataclass") + self.assertTrue( + is_dataclass(Z), + "Z should be a dataclass because it inherits from X", + ) + z_instance = Z(y=5) + self.assertTrue( + is_dataclass(z_instance), + "z_instance should be a dataclass because it is an instance of Z", + ) def test_helper_fields_with_class_instance(self): # Check that we can call fields() on either a class or instance, |