Source code for crappy.modifier.meta_modifier.meta_modifier
# coding: utf-8
from ..._global import DefinitionError
[docs]
class MetaModifier(type):
"""Metaclass keeping track of all the Modifiers, including the custom
user-defined ones.
.. versionadded:: 1.4.0
.. versionchanged:: 1.5.10
not checking anymore for mandatory method in :meth:`__init__`
"""
classes = {}
def __new__(mcs, name: str, bases: tuple, dct: dict) -> type:
return super().__new__(mcs, name, bases, dct)
[docs]
def __init__(cls, name: str, bases: tuple, dct: dict) -> None:
super().__init__(name, bases, dct)
if hasattr(cls, 'evaluate'):
raise DefinitionError("The evaluate method is deprecated for Modifiers "
"since version 2.0.0, just rename it to __call__ "
"to get your Modifier working again.")
# Checking that a Modifier with the same name doesn't already exist
if name in cls.classes:
raise DefinitionError(f"The {name} class is already defined !")
# Otherwise, saving the class
cls.classes[name] = cls