From c201f3dacee853076869b9fae55a1f5d555197ea Mon Sep 17 00:00:00 2001 From: Himadri Bhattacharjee <107522312+lavafroth@users.noreply.github.com> Date: Mon, 3 Nov 2025 08:42:42 +0530 Subject: [PATCH] feat: algebraic python enums (draft 5) --- content/post/algebraic-python-enums.md | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/content/post/algebraic-python-enums.md b/content/post/algebraic-python-enums.md index b698a631..0a579637 100644 --- a/content/post/algebraic-python-enums.md +++ b/content/post/algebraic-python-enums.md @@ -231,12 +231,10 @@ We can define a decorator that takes all of the nested dataclasses and makes the {{< collapsable-explanation >}} ```python -import inspect - def AlgebraicEnum(cls): - for subclass_name, subclass in inspect.getmembers(cls, predicate=inspect.isclass): - if subclass_name != "__class__": - setattr(cls, subclass_name, type(subclass_name, (cls, subclass), {})) + for name, nested in cls.__dict__.items(): + if isinstance(nested, type): + setattr(cls, name, type(name, (cls, nested), {})) return cls ``` @@ -292,14 +290,13 @@ print(empty.is_empty()) ``` ```python -import inspect from dataclasses import dataclass def AlgebraicEnum(cls): - for subclass_name, subclass in inspect.getmembers(cls, predicate=inspect.isclass): - if subclass_name != "__class__": - setattr(cls, subclass_name, type(subclass_name, (cls, subclass), {})) + for name, nested in cls.__dict__.items(): + if isinstance(nested, type): + setattr(cls, name, type(name, (cls, nested), {})) return cls