Open
Description
The current way of using True/False/None is confusing even to me.
I propose we use an Enum (probably just class on legacy Python) a la:
class Hashing(Enum):
SMART = "smart" # None → new default
BY_ID = "by_id" # False
WRITE_FOR_ALL = "write_for_all" # True
WRITE_FOR_NONE = "write_for_none" # True, but the default on attr.ibs is False
The last two names are terrible of course.
I probably could be talked into depending on https://pypi.org/project/enum34/ on legacy Python.
Opinions?
P.S. Now while typing this out I realized that this could solve a long-standing complaint both I and many users have: assuming you want an attrs-generated method based on a small subset of attr.ibs, you have to write a lot of hash|init|repr=False
. Ditching bools for enums would allow for that. 🤔 But let’s talk about that in a different ticket.