|
23 | 23 | # cython: language_level=3
|
24 | 24 |
|
25 | 25 | from enum import Enum, Flag
|
| 26 | +import inspect |
26 | 27 |
|
| 28 | +try: |
| 29 | + from enum import EnumMeta as EnumType |
| 30 | +except ImportError: |
| 31 | + from enum import EnumType |
27 | 32 |
|
28 |
| -class SlurmEnum(str, Enum): |
| 33 | + |
| 34 | +class DocstringSupport(EnumType): |
| 35 | + def __new__(metacls, clsname, bases, classdict): |
| 36 | + cls = super().__new__(metacls, clsname, bases, classdict) |
| 37 | + |
| 38 | + # In the future, if we want to properly document enum members, |
| 39 | + # implement this: |
| 40 | + # source = inspect.getdoc(cls) |
| 41 | + # docstrings = source.replace(" ", "").split("\n") |
| 42 | + |
| 43 | + for member in cls: |
| 44 | + member.__doc__ = "" |
| 45 | + |
| 46 | + return cls |
| 47 | + |
| 48 | + |
| 49 | +class SlurmEnum(str, Enum, metaclass=DocstringSupport): |
29 | 50 |
|
30 | 51 | def __new__(cls, name, *args):
|
31 | 52 | # https://docs.python.org/3/library/enum.html
|
@@ -63,7 +84,7 @@ class SlurmEnum(str, Enum):
|
63 | 84 | return out
|
64 | 85 |
|
65 | 86 |
|
66 |
| -class SlurmFlag(Flag): |
| 87 | +class SlurmFlag(Flag, metaclass=DocstringSupport): |
67 | 88 |
|
68 | 89 | def __new__(cls, flag, *args):
|
69 | 90 | obj = super()._new_member_(cls)
|
|
0 commit comments