Source code for natch.abstract.rule
import abc
[docs]class Rule(abc.ABC):
__metaclass__ = abc.ABCMeta
def __init__(self, *args, **kwargs):
self.args = args
self.kwargs = kwargs
[docs] def get_args(self):
return self._args
[docs] def set_args(self, args):
if args is None:
args = list()
self._args = list()
for arg in args:
self.args.append(arg)
[docs] def del_args(self):
self._args = list()
@property
def args(self):
args = self.get_args()
return args
@args.setter
def args(self, args):
self.set_args(args)
@args.deleter
def args(self):
self.del_args()
[docs] def get_kwargs(self):
return self._kwargs
[docs] def set_kwargs(self, kwargs):
if kwargs is None:
kwargs = dict()
self._kwargs = kwargs
[docs] def del_kwargs(self):
self._kwargs = dict()
@property
def kwargs(self):
kwargs = self.get_kwargs()
return kwargs
@kwargs.setter
def kwargs(self, kwargs):
self.set_kwargs(kwargs)
@kwargs.deleter
def kwargs(self):
self.del_kwargs()
[docs] @abc.abstractmethod
def does_match(self, *args, **kwargs):
raise NotImplementedError(
f'{self.__class__.__name__}.has_match method is not implemented.',
)