OwlEnum

Note

Usage on each methods are valid on the premise that the following classes is defined in advance.

# coding: utf-8

from owlmixin import OwlMixin, TOption
from owlmixin.owlcollections import TDict, TList
from owlmixin.owlenum import OwlEnum, OwlObjectEnum


class Animal(OwlObjectEnum):  # pragma: no cover
    DOG = ("dog", {"cry": "bow-wow"})
    CAT = ("cat", {"cry": "mewing"})

    def cry(self):
        return self.object["cry"]


class Color(OwlEnum):  # pragma: no cover
    RED = "red"
    GREEN = "green"
    BLUE = "blue"


class Food(OwlMixin):  # pragma: no cover
    name: str
    names_by_lang: TOption[TDict[str]]


class Human(OwlMixin):  # pragma: no cover
    id: int
    name: str
    favorites: TList[Food]


class Machine(OwlMixin):  # pragma: no cover
    id: int
    name: str


class Japanese(OwlMixin):  # pragma: no cover
    name: str
    language: str = "japanese"

OwlEnum

class owlmixin.owlenum.OwlEnum(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

This class is similar to Enum except that can dump as json or yaml

OwlObjectEnum

class owlmixin.owlenum.OwlObjectEnum(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

This class is similar to OwlEnum except that can have additional object.

Use case example:
class Animal(OwlObjectEnum):

DOG = (“dog”, {“cry”: “bow-wow”}) CAT = (“cat”, {“cry”: “mewing”})

def cry(self):

return self.object[“cry”]

classmethod from_value(value: str) T[source]

Create instance from symbol :param value: unique symbol :return: This instance

Usage:

>>> from owlmixin.samples import Animal
>>> Animal.from_value('cat').cry()
'mewing'