def addFilter(self, _filter_object_or_handler_or_names): """ filter entity could be passed as filter object itself, handler method or a name of filter class """ arg_count = get_method_arguments_count(_filter_object_or_handler_or_names) # @IgnorePep8 # filter as a string if isinstance(_filter_object_or_handler_or_names, str): for filter_name in expand_to_real_filters_names( _filter_object_or_handler_or_names): if filter_name == None: return _module = get_package_for_filter(filter_name) filter_object = create_class_object_with_suffix( get_package_for_filter(filter_name), filter_name, _suffix='Filter') filter_object = filter_object(_shift=self.__shift__) filter_object.arg_count = -1 self.__filters__.append(filter_object) # filter as a function elif arg_count > -1: filter_method = _filter_object_or_handler_or_names filter_method.arg_count = arg_count self.__filters__.append(filter_method) # filter as an object else: filter_object = _filter_object_or_handler_or_names filter_object.arg_count = -1 self.__filters__.append(filter_object)
def addFilter(self, _filter_object_or_handler_or_names): """ filter entity could be passed as filter object itself, handler method or a name of filter class """ arg_count = get_method_arguments_count( _filter_object_or_handler_or_names) # @IgnorePep8 # filter as a string if isinstance(_filter_object_or_handler_or_names, str): for filter_name in expand_to_real_filters_names( _filter_object_or_handler_or_names): if filter_name == None: return _module = get_package_for_filter(filter_name) filter_object = create_class_object_with_suffix( get_package_for_filter(filter_name), filter_name, _suffix='Filter') filter_object = filter_object(_shift=self.__shift__) filter_object.arg_count = -1 self.__filters__.append(filter_object) # filter as a function elif arg_count > -1: filter_method = _filter_object_or_handler_or_names filter_method.arg_count = arg_count self.__filters__.append(filter_method) # filter as an object else: filter_object = _filter_object_or_handler_or_names filter_object.arg_count = -1 self.__filters__.append(filter_object)
def handler(self, _handler): if _handler: #name of a handler is a name of statistic self.name = getattr(_handler, 'name', None) if self.name is None: self.name = locals().get('_handler').__name__ self.__handler__ = _handler #add number of arguments of a handler self.__handler__.arg_count = \ get_method_arguments_count(self.__handler__)