[issue44356] Abstract enum mixins not allowed

2021-06-11 Thread Jordan Ephron
Jordan Ephron added the comment: On 10.06.2021 15:33, Ethan Furman wrote: >Since I like puzzles, here is a working LenientStrEnum: >... Oh indeed, that's really cool! -- title: Multiple enum mixins not allowed even when they have the same datatype -> Abstract enum mixins not allowed

[issue44356] Abstract enum mixins not allowed

2021-06-10 Thread Ethan Furman
Ethan Furman added the comment: Since I like puzzles, here is a working LenientStrEnum: class LenientStrEnum(str, Enum): # def __init__(self, *args): self._valid = True # @classmethod def _missing_(cls, value):

[issue44356] Abstract enum mixins not allowed

2021-06-09 Thread Jordan Ephron
Jordan Ephron added the comment: Oh, on further investigation I see that the example wouldn't have worked on 3.8 anyway, due to issue34536 adding some checks to the type returned by _missing_, so maybe I'm pushing Enum too far in that case. --

[issue44356] Abstract enum mixins not allowed

2021-06-09 Thread Jordan Ephron
Jordan Ephron added the comment: > But what is an `UnexpectedString()` Sorry, that’s maybe less relevant to the example. It’s just a subclass of string with some marker to make it detectable later on, similar to schemes that taint user input to prevent sql injection or whatever > On Jun 8,

[issue44356] Abstract enum mixins not allowed

2021-06-09 Thread Ethan Furman
Ethan Furman added the comment: Excellent bug report. But what is an `UnexpectedString()` ? -- ___ Python tracker ___ ___

[issue44356] Abstract enum mixins not allowed

2021-06-08 Thread Ethan Furman
Change by Ethan Furman : -- assignee: -> ethan.furman nosy: +ethan.furman versions: +Python 3.10, Python 3.11 ___ Python tracker ___

[issue44356] Abstract enum mixins not allowed

2021-06-08 Thread Jordan Ephron
New submission from Jordan Ephron : Prior to 3.8 it was possible to create "abstract" enums (without members) and mix them together. To motivate with an example, perhaps we're modeling an API and want to be robust in the face of inconsistent casing class CaseInsensitiveStrEnum(str, Enum):