cpython: 8e9d3a5d47d5 (original) (raw)

Mercurial > cpython

changeset 103033:8e9d3a5d47d5

issue23591: more docs; slight change to repr [#23591]

Ethan Furman ethan@stoneleaf.us
date Sun, 04 Sep 2016 11:39:01 -0700
parents 1bd1e31a3298
children ffc915a55a72
files Doc/library/enum.rst Lib/enum.py Lib/test/test_enum.py
diffstat 3 files changed, 23 insertions(+), 15 deletions(-)[+] [-] Doc/library/enum.rst 13 Lib/enum.py 13 Lib/test/test_enum.py 12

line wrap: on

line diff

--- a/Doc/library/enum.rst +++ b/Doc/library/enum.rst @@ -574,7 +574,7 @@ It is also possible to name the combinat >>> Perm.RWX <Perm.RWX: 7> >>> ~Perm.RWX

Another important difference between :class:IntFlag and :class:Enum is that if no flags are set (the value is 0), its boolean evaluation is :data:False:: @@ -615,6 +615,17 @@ flags being set, the boolean evaluation >>> bool(Color.red & Color.green) False +Individual flags should have values that are powers of two (1, 2, 4, 8, ...), +while combinations of flags won't:: +

+ Giving a name to the "no flags set" condition does not change its boolean value::

--- a/Lib/enum.py +++ b/Lib/enum.py @@ -692,14 +692,11 @@ class Flag(Enum): if self.name is not None: return '<%s.%s: %r>' % (cls.name, self.name, self.value) members = self.decompose()

def str(self): cls = self.class

--- a/Lib/test/test_enum.py +++ b/Lib/test/test_enum.py @@ -1688,12 +1688,12 @@ class TestFlag(unittest.TestCase): self.assertEqual(repr(Perm.X), '<Perm.X: 1>') self.assertEqual(repr(Perm.R | Perm.W), '<Perm.R|W: 6>') self.assertEqual(repr(Perm.R | Perm.W | Perm.X), '<Perm.R|W|X: 7>')

Open = self.Open @@ -1933,13 +1933,13 @@ class TestIntFlag(unittest.TestCase): self.assertEqual(repr(Perm.R | Perm.W), '<Perm.R|W: 6>') self.assertEqual(repr(Perm.R | Perm.W | Perm.X), '<Perm.R|W|X: 7>') self.assertEqual(repr(Perm.R | 8), '<Perm.8|R: 12>')

@@ -1950,7 +1950,7 @@ class TestIntFlag(unittest.TestCase): self.assertEqual(repr(Open.AC), '<Open.AC: 3>') self.assertEqual(repr(Open.RO | Open.CE), '<Open.CE: 524288>') self.assertEqual(repr(Open.WO | Open.CE), '<Open.CE|WO: 524289>')