Source code for orkgnlp.common.util.decorators

# -*- coding: utf-8 -*-
""" Defines decorators used within the package """
from typing import Type


[docs] def singleton(_): """ This decorator can only be used above the __new__ function of a class. It's responsible for returning a pre-created instance of the respective class or create a new one, if not have happened before. :param _: The __new__ function. """ def apply_pattern(cls: Type, *args, **kwargs): # attention: *args and **kwargs must be included even if not used! if not hasattr(cls, "instance"): cls.instance = super(cls.__class__, cls).__new__(cls) return cls.instance return apply_pattern
[docs] def sanitize_text(f): """ This decorator can only be used above functions having the argument ``text`` at first position. The wrapper function returns the passed text if it's not empty or an empty string in case of empty or None passed argument. :param f: The decorated function. """ def wrapper(text: str, *args): if not text: return f("", *args) return f(text, *args) return wrapper