On 5/29/2021 6:33 PM, Nick Coghlan wrote:
On Sat, 29 May 2021, 7:27 am Ethan Furman, <et...@stoneleaf.us <mailto:et...@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 you were prepared to incur a deprecation period, then you could make the decorator "@allow_masks" and flip the default behaviour to emit Deprecation Warning for masks, eventually upgrading it to Value Error.

Otherwise, maybe something like "@no_masks"?

"Mask" is one typical usage for combined flags, but not the only one.  I would not recommend using "mask" in the name of the decorator.
_______________________________________________
Python-Dev mailing list -- python-dev@python.org
To unsubscribe send an email to python-dev-le...@python.org
https://mail.python.org/mailman3/lists/python-dev.python.org/
Message archived at 
https://mail.python.org/archives/list/python-dev@python.org/message/LJ4NAGIKVG3PTJBBXWUVZM77S7K5JI7R/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to