aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/enum.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/enum.py')
-rw-r--r--Lib/enum.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/Lib/enum.py b/Lib/enum.py
index c1ccf53dc63..f6c34ea06d2 100644
--- a/Lib/enum.py
+++ b/Lib/enum.py
@@ -114,9 +114,12 @@ def _make_class_unpicklable(obj):
setattr(obj, '__module__', '<unknown>')
def _iter_bits_lsb(num):
- # num must be an integer
+ # num must be a positive integer
+ original = num
if isinstance(num, Enum):
num = num.value
+ if num < 0:
+ raise ValueError('%r is not a positive integer' % original)
while num:
b = num & (~num + 1)
yield b
@@ -1839,6 +1842,9 @@ class verify:
if name in member_names:
# not an alias
continue
+ if alias.value < 0:
+ # negative numbers are not checked
+ continue
values = list(_iter_bits_lsb(alias.value))
missed = [v for v in values if v not in member_values]
if missed: