From 697a1adce1e463079e640b55d6386cf82d7bd6bc Mon Sep 17 00:00:00 2001 From: Malik Talha Date: Sun, 22 Oct 2023 21:06:23 +0500 Subject: Add Snips Inference Module Add slightly modified version of the original Snips NLU library. This module adds support for Python upto version 3.10. Bug-AGL: SPEC-4856 Signed-off-by: Malik Talha Change-Id: I6d7e9eb181e6ff4aed9b6291027877ccb9f0d846 --- snips_inference_agl/common/abc_utils.py | 36 +++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 snips_inference_agl/common/abc_utils.py (limited to 'snips_inference_agl/common/abc_utils.py') diff --git a/snips_inference_agl/common/abc_utils.py b/snips_inference_agl/common/abc_utils.py new file mode 100644 index 0000000..db7b933 --- /dev/null +++ b/snips_inference_agl/common/abc_utils.py @@ -0,0 +1,36 @@ +class abstractclassmethod(classmethod): # pylint: disable=invalid-name + __isabstractmethod__ = True + + def __init__(self, callable): + callable.__isabstractmethod__ = True + super(abstractclassmethod, self).__init__(callable) + + +class ClassPropertyDescriptor(object): + def __init__(self, fget, fset=None): + self.fget = fget + self.fset = fset + + def __get__(self, obj, klass=None): + if klass is None: + klass = type(obj) + return self.fget.__get__(obj, klass)() + + def __set__(self, obj, value): + if not self.fset: + raise AttributeError("can't set attribute") + type_ = type(obj) + return self.fset.__get__(obj, type_)(value) + + def setter(self, func): + if not isinstance(func, (classmethod, staticmethod)): + func = classmethod(func) + self.fset = func + return self + + +def classproperty(func): + if not isinstance(func, (classmethod, staticmethod)): + func = classmethod(func) + + return ClassPropertyDescriptor(func) -- cgit