From 96b1c59c71534db3f0f3799cd84e2006923a5098 Mon Sep 17 00:00:00 2001 From: t k Date: Thu, 19 Sep 2019 09:34:41 -0400 Subject: [PATCH] bpo-38155: Add __all__ to datetime module (GH-16203) https://bugs.python.org/issue38155 --- Lib/datetime.py | 4 ++++ Lib/test/datetimetester.py | 6 ++++++ .../next/Library/2019-09-16-21-47-48.bpo-38155.d92lRc.rst | 1 + 3 files changed, 11 insertions(+) create mode 100644 Misc/NEWS.d/next/Library/2019-09-16-21-47-48.bpo-38155.d92lRc.rst diff --git a/Lib/datetime.py b/Lib/datetime.py index 0adf1dd67df..67555191d02 100644 --- a/Lib/datetime.py +++ b/Lib/datetime.py @@ -4,6 +4,10 @@ See http://www.iana.org/time-zones/repository/tz-link.html for time zone and DST data sources. """ +__all__ = ("date", "datetime", "time", "timedelta", "timezone", "tzinfo", + "MINYEAR", "MAXYEAR") + + import time as _time import math as _math import sys diff --git a/Lib/test/datetimetester.py b/Lib/test/datetimetester.py index 32977b12eba..42e2cecaeb7 100644 --- a/Lib/test/datetimetester.py +++ b/Lib/test/datetimetester.py @@ -62,6 +62,12 @@ class TestModule(unittest.TestCase): self.assertEqual(datetime.MINYEAR, 1) self.assertEqual(datetime.MAXYEAR, 9999) + def test_all(self): + """Test that __all__ only points to valid attributes.""" + all_attrs = dir(datetime_module) + for attr in datetime_module.__all__: + self.assertIn(attr, all_attrs) + def test_name_cleanup(self): if '_Pure' in self.__class__.__name__: self.skipTest('Only run for Fast C implementation') diff --git a/Misc/NEWS.d/next/Library/2019-09-16-21-47-48.bpo-38155.d92lRc.rst b/Misc/NEWS.d/next/Library/2019-09-16-21-47-48.bpo-38155.d92lRc.rst new file mode 100644 index 00000000000..14b6e2da67f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2019-09-16-21-47-48.bpo-38155.d92lRc.rst @@ -0,0 +1 @@ +Add ``__all__`` to :mod:`datetime`. Patch by Tahia Khan.