summaryrefslogtreecommitdiff
path: root/Lib/test
diff options
context:
space:
mode:
authorEthan Furman <ethan@stoneleaf.us>2018-01-22 07:56:37 -0800
committerGitHub <noreply@github.com>2018-01-22 07:56:37 -0800
commita4b1bb4801f7a941ff9e86b96da539be1c288833 (patch)
treea5cd81d18b3d10dc8f8b6cdf7d51e8172d5f7ff9 /Lib/test
parent579e0b80b953b8a47385bc50844dbaac45d6f437 (diff)
downloadcpython-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.py33
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):