Skip to main content

enum, meta, EnumException

Project description

lifehacks.metaclasses version

sponsor publish

Structure

📦 lifehacks.metaclasses
├── meta
├── enum
└── EnumException

Installation

pip install lifehacks.metaclasses

Usage

meta metaclass

There are a few ways to make an meta class.

from lifehacks.metaclasses import meta

class myenum0(metaclass=meta): ...

@meta  		# preferred method
class myenum1: ...

@meta()		# do not use this method
class myenum2: ...

enum metaclass

Same with meta metaclass from above, there are a few ways to make an enum class.

from lifehacks.metaclasses import enum

# with typing
class MyPalette0(metaclass=enum[Colour]): ...

@enum  		# preferred method
class MyPalette1: ...

@enum[Colour]	# syntax only allowed python>=3.9
class MyPalette2: ...

@enum()		# do not use this method
class MyPalette3: ...

usage example:

from lifehacks.metaclasses import enum

@enum
class BasePalette:
	BLACK = ...
	WHITE = ...

# extending base palette enum
class SubPalette(BasePalette):
	RED = ...
	GREEN = ...

# can be used in type hinting
def print_colours(palette:enum) -> None:
	for name, value in palette:
		print(name, value)

print_colours(BasePalette) # BLACK, WHITE
print_colours(SubPalette)  # BLACK, WHITE, RED, GREEN
print(BasePalette.BLACK in SubPalette) # True

enum classes are not instantiable, more on that below.

EnumException

enum classes are not instantiable. If you try to, you get an EnumException

@enum
class Palette: ...

p = Palette()	# illegal, raises EnumException

Contributors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lifehacks.metaclasses-1.2.4.tar.gz (4.1 kB view hashes)

Uploaded Source

Built Distribution

lifehacks.metaclasses-1.2.4-py3-none-any.whl (8.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page