From f597e60488371e67eb0292fe84ea6909e60c2498 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Wed, 29 Nov 2023 12:47:19 +0100 Subject: [PATCH] gh-112451: Make C-extension datetime.timezone acceptable as a base class. --- Lib/test/test_types.py | 5 +++++ .../Library/2024-01-15-13-45-26.gh-issue-112451.KFFlYs.rst | 1 + Modules/_datetimemodule.c | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2024-01-15-13-45-26.gh-issue-112451.KFFlYs.rst diff --git a/Lib/test/test_types.py b/Lib/test/test_types.py index 1acb2a4d81adf3..cd32cae6b90e03 100644 --- a/Lib/test/test_types.py +++ b/Lib/test/test_types.py @@ -642,6 +642,11 @@ def test_traceback_and_frame_types(self): def test_capsule_type(self): self.assertIsInstance(_datetime.datetime_CAPI, types.CapsuleType) + def test_timezone_base_type(self): + class MyTimezone(_datetime.timezone): + pass + + self.assertIs(issubclass(MyTimezone, _datetime.timezone), True) class UnionTests(unittest.TestCase): diff --git a/Misc/NEWS.d/next/Library/2024-01-15-13-45-26.gh-issue-112451.KFFlYs.rst b/Misc/NEWS.d/next/Library/2024-01-15-13-45-26.gh-issue-112451.KFFlYs.rst new file mode 100644 index 00000000000000..c55d4f66fe415c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2024-01-15-13-45-26.gh-issue-112451.KFFlYs.rst @@ -0,0 +1 @@ +Make C-extension ``datetime.timezone`` acceptable as a base class. diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index cb5403e8461ff0..38802f806d3537 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -4107,7 +4107,7 @@ static PyTypeObject PyDateTime_TimeZoneType = { 0, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT, /* tp_flags */ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ timezone_doc, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */