diff options
| author | Ethan Furman <ethan@stoneleaf.us> | 2018-01-22 07:56:37 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-01-22 07:56:37 -0800 |
| commit | a4b1bb4801f7a941ff9e86b96da539be1c288833 (patch) | |
| tree | a5cd81d18b3d10dc8f8b6cdf7d51e8172d5f7ff9 /Lib/test | |
| parent | 579e0b80b953b8a47385bc50844dbaac45d6f437 (diff) | |
| download | cpython-git-a4b1bb4801f7a941ff9e86b96da539be1c288833.tar.gz | |
bpo-31801: Enum: add _ignore_ as class option (#5237)
* bpo-31801: Enum: add _ignore_ as class option
_ignore_ is a list, or white-space seperated str, of names that will not
be candidates for members; these names, and _ignore_ itself, are removed
from the final class.
* bpo-31801: Enum: add documentation for _ignore_
* bpo-31801: Enum: remove trailing whitespace
* bpo-31801: Enum: fix bulleted list format
* bpo-31801: add version added for _ignore_
Diffstat (limited to 'Lib/test')
| -rw-r--r-- | Lib/test/test_enum.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/Lib/test/test_enum.py b/Lib/test/test_enum.py index e6324d4d8c..97559712b1 100644 --- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -8,7 +8,12 @@ from enum import Enum, IntEnum, EnumMeta, Flag, IntFlag, unique, auto from io import StringIO from pickle import dumps, loads, PicklingError, HIGHEST_PROTOCOL from test import support +from datetime import timedelta +try: + import threading +except ImportError: + threading = None # for pickle tests try: @@ -1547,6 +1552,34 @@ class TestEnum(unittest.TestCase): self.assertEqual(round(Planet.EARTH.surface_gravity, 2), 9.80) self.assertEqual(Planet.EARTH.value, (5.976e+24, 6.37814e6)) + def test_ignore(self): + class Period(timedelta, Enum): + ''' + different lengths of time + ''' + def __new__(cls, value, period): + obj = timedelta.__new__(cls, value) + obj._value_ = value + obj.period = period + return obj + _ignore_ = 'Period i' + Period = vars() + for i in range(13): + Period['month_%d' % i] = i*30, 'month' + for i in range(53): + Period['week_%d' % i] = i*7, 'week' + for i in range(32): + Period['day_%d' % i] = i, 'day' + OneDay = day_1 + OneWeek = week_1 + OneMonth = month_1 + self.assertFalse(hasattr(Period, '_ignore_')) + self.assertFalse(hasattr(Period, 'Period')) + self.assertFalse(hasattr(Period, 'i')) + self.assertTrue(isinstance(Period.day_1, timedelta)) + self.assertTrue(Period.month_1 is Period.day_30) + self.assertTrue(Period.week_4 is Period.day_28) + def test_nonhash_value(self): class AutoNumberInAList(Enum): def __new__(cls): |
