def setup(self): args = self.args() grouping_function = args.function_arg('-g') consecutive_grouping_function = args.function_arg('-c') running_totals = args.flag('-r') if running_totals is None: running_totals = False initial_value = _wrap_if_necessary(args.next_eval()) aggregation_function = args.next_function() if grouping_function and consecutive_grouping_function: self.usage() if initial_value is None or aggregation_function is None: self.usage() if args.has_next(): self.usage() if grouping_function and consecutive_grouping_function: self.usage() elif grouping_function: self._aggregate = _GroupingAggregate( self, running_totals, grouping_function, initial_value, aggregation_function) elif consecutive_grouping_function: self._aggregate = _ConsecutiveGroupingAggregate( self, running_totals, consecutive_grouping_function, initial_value, aggregation_function) else: self._aggregate = _NonGroupingAggregate( self, running_totals, initial_value, aggregation_function)
def setup(self): args = self.args() grouping_function = args.function_arg('-g') consecutive_grouping_function = args.function_arg('-c') running_totals = args.flag('-r') if running_totals is None: running_totals = False initial_value = _wrap_if_necessary(args.next_eval()) aggregation_function = args.next_function() if grouping_function and consecutive_grouping_function: self.usage() if initial_value is None or aggregation_function is None: self.usage() if args.has_next(): self.usage() if grouping_function and consecutive_grouping_function: self.usage() elif grouping_function: self._aggregate = _GroupingAggregate(self, running_totals, grouping_function, initial_value, aggregation_function) elif consecutive_grouping_function: self._aggregate = _ConsecutiveGroupingAggregate( self, running_totals, consecutive_grouping_function, initial_value, aggregation_function) else: self._aggregate = _NonGroupingAggregate(self, running_totals, initial_value, aggregation_function)
def setup(self): args = self.args() overlap = args.int_arg('-o') disjoint = args.int_arg('-d') if overlap is not None and disjoint is not None: self.usage() elif overlap is not None: self._window_generator = _OverlapWindow(overlap) elif disjoint is not None: self._window_generator = _DisjointWindow(disjoint) else: predicate = args.next_function() self._window_generator = _PredicateWindow(predicate)