On Fri, May 28, 2021 at 10:26 PM Ethan Furman <ethan@stoneleaf.us> wrote:
On 5/28/21 12:43 AM, Petr Viktorin wrote:
 > On 28. 05. 21 5:24, Ethan Furman wrote:

 >>      class FlagWithMasks(IntFlag):
 >>          DEFAULT = 0x0
 >>
 >>          FIRST_MASK = 0xF
 >>          FIRST_ROUND = 0x0
 >>          FIRST_CEIL = 0x1
 >>          FIRST_TRUNC = 0x2
 >>
 >>          SECOND_MASK = 0xF0
 >>          SECOND_RECALC = 0x00
 >>          SECOND_NO_RECALC = 0x10
 >>
 >>          THIRD_MASK = 0xF00
 >>          THIRD_DISCARD = 0x000
 >>          THIRD_KEEP = 0x100
 >>
 >> Here we have three flags (FIRST_MASK, SECOND_MASK, THIRD_MASK) that are aliasing values
 >> that don't exist, but it seems intentional and not an error.
 >
 > Are you looking for a decorator for the whole Enum, or a way to mark individual *values* as masks?

The decorator is for whole enum.  The issue is not that some values are masks, but whether the absence of named bits
covered by the mask is an error.

If all masked bits must be defined by individual values then it's a completely_masked  enum? This is quite a bikeshed we're painting here! ;-)

Kind regards,
Steve


Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/OM5M774MP5QPLFXZ7OVGBPR7ZFB6X35A/