xoa.misc.DefaultEnumMeta

class xoa.misc.DefaultEnumMeta(cls, bases, classdict, *, boundary=None, _simple=False, **kwds)[source]

Enum meta-class that support default value and None

When the item is not provided or equal to None, the first declared item is returned

Inspired from: https://stackoverflow.com/questions/44867597/is-there-a-way-to-specify-a-default-value-for-python-enums

Example

In [1]: from enum import IntEnum

In [2]: class regrid_methods(IntEnum, metaclass=DefaultEnumMeta):
   ...:     linear = 1
   ...:     bilinear = 1
   ...:     nearest = 0
   ...:     cellave = -1
   ...: 

In [3]: regrid_methods() # default method
Out[3]: <regrid_methods.linear: 1>

In [4]: regrid_methods(None) # default method
Out[4]: <regrid_methods.linear: 1>

In [5]: regrid_methods(1)
Out[5]: <regrid_methods.linear: 1>

In [6]: regrid_methods[None] # default method
Out[6]: <regrid_methods.linear: 1>

In [7]: regrid_methods['linear']
Out[7]: <regrid_methods.linear: 1>

In [8]: regrid_methods['cellave']
Out[8]: <regrid_methods.cellave: -1>
__init__(*args, **kwargs)

Methods

get_rst([with_links, link_module])

mro()

Return a type's method resolution order.

Attributes

default

rst

rst_with_links