From 44e580f448016b86807465a186d03d9074e2b589 Mon Sep 17 00:00:00 2001 From: Ethan Furman Date: Wed, 3 Mar 2021 09:54:30 -0800 Subject: bpo-43162: [Enum] update docs, renable doc tests (GH-24487) * update docs, renable doc tests * make deprecation warning active for two releases --- Doc/library/enum.rst | 11 ++++++----- Lib/enum.py | 2 +- Lib/test/test_enum.py | 6 +++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/Doc/library/enum.rst b/Doc/library/enum.rst index b7f2694..73b77cb 100644 --- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -1222,17 +1222,18 @@ Private names are not converted to Enum members, but remain normal attributes. :class:`Enum` members are instances of their :class:`Enum` class, and are normally accessed as ``EnumClass.member``. In Python versions ``3.5`` to ``3.9`` you could access members from other members -- this practice was -discouraged, and in ``3.10`` :class:`Enum` has returned to not allowing it:: +discouraged, and in ``3.12`` :class:`Enum` will return to not allowing it, +while in ``3.10`` and ``3.11`` it will raise a :exc:`DeprecationWarning`:: >>> class FieldTypes(Enum): ... name = 0 ... value = 1 ... size = 2 ... - >>> FieldTypes.value.size - Traceback (most recent call last): - ... - AttributeError: FieldTypes: no attribute 'size' + >>> FieldTypes.value.size # doctest: +SKIP + DeprecationWarning: accessing one member from another is not supported, + and will be disabled in 3.12 + .. versionchanged:: 3.5 .. versionchanged:: 3.10 diff --git a/Lib/enum.py b/Lib/enum.py index 55299c5..84c7b0d 100644 --- a/Lib/enum.py +++ b/Lib/enum.py @@ -148,7 +148,7 @@ class property(DynamicClassAttribute): import warnings warnings.warn( "accessing one member from another is not supported, " - " and will be disabled in 3.11", + " and will be disabled in 3.12", DeprecationWarning, stacklevel=2, ) diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index 3982d1d..69392e0 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -18,7 +18,7 @@ from datetime import timedelta def load_tests(loader, tests, ignore): tests.addTests(doctest.DocTestSuite(enum)) - if os.path.exists('../../Doc/library/enum.rst'): + if os.path.exists('Doc/library/enum.rst'): tests.addTests(doctest.DocFileSuite( '../../Doc/library/enum.rst', optionflags=doctest.ELLIPSIS|doctest.NORMALIZE_WHITESPACE, @@ -2186,7 +2186,7 @@ class TestEnum(unittest.TestCase): self.assertEqual(Private._Private__major_, 'Hoolihan') @unittest.skipUnless( - sys.version_info[:2] == (3, 10), + sys.version_info[:2] < (3, 12), 'member-member access now raises an exception', ) def test_warning_for_member_from_member_access(self): @@ -2198,7 +2198,7 @@ class TestEnum(unittest.TestCase): self.assertIs(Di.NO, nope) @unittest.skipUnless( - sys.version_info[:2] > (3, 10), + sys.version_info[:2] >= (3, 12), 'member-member access currently issues a warning', ) def test_exception_for_member_from_member_access(self): -- cgit v0.12