def setup(self): args = self.args() append_filename = args.string_arg('-a') replace_filename = args.string_arg('-f') filename = None mode = None if append_filename and replace_filename: self.usage() elif append_filename: mode = 'a' filename = append_filename elif replace_filename: mode = 'w' filename = replace_filename self._csv = args.flag('-c') self._terminal = args.flag('-t') if args.has_next(): self._format = args.next_string() if args.has_next(): self.usage() if self._csv and self._format: self.usage() if filename: self._output = open(filename, mode) else: self._output = sys.stdout
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() if args.has_next(): self.usage() if args.flag('-c'): self._uniquer = _ConsecutiveUniquer(self) else: self._uniquer = _GeneralUniquer(self)
def setup(self): args = self.args() scp_options = "" for option in "Crp": if args.flag("-" + option): scp_options += option if scp_options: self._scp_options = "-" + scp_options else: self._scp_options = "" self._use_subdirs = not args.flag("-x") if args.has_next(): self._file = args.next_string() if args.has_next(): self._local_dir = args.next_string() if not self._file or not self._local_dir or args.has_next(): self.usage() if not self._file.startswith("/"): self.usage()
def setup(self): args = self.args() running = args.flag('-r') if running is None: running = False functions = args.remaining() # A "group" position contains a dot, used to indicate grouping. # A "data" position does not contain a dot; it contains data that will be aggregated. group_positions = [] data_positions = [] for p in xrange(len(functions)): f = functions[p] if f == '.' or f is None: group_positions.append(p) else: data_positions.append(p) n_group = len(group_positions) n_data = len(data_positions) functions = [create_function(functions[p]) for p in data_positions] initial_value = (None, ) * n_data if n_group == 0: def aggregator(*t): if t[:n_data] == initial_value: # all None => first item, need to initialize accumulator accumulator = t[-n_data:] else: accumulator = tuple([ functions[p](t[p], t[n_data + p]) for p in xrange(n_data) ]) return accumulator self._aggregate = _NonGroupingAggregate(self, running, initial_value, aggregator) else: def grouper(*t): return tuple([t[p] for p in group_positions]) def aggregator(*t): if reduce(lambda r, x: r and x is None, t[:n_data], True): # all None => first item, need to initialize accumulator accumulator = tuple([ t[n_data + data_positions[p]] for p in xrange(n_data) ]) else: accumulator = tuple([ functions[p](t[p], t[n_data + data_positions[p]]) for p in xrange(n_data) ]) return accumulator self._aggregate = _GroupingAggregate(self, running, grouper, initial_value, aggregator)
def setup(self): args = self.args() depth0 = args.flag('-0') depth1 = args.flag('-1') recursive = args.flag('-r') count = 0 if depth0: count += 1 self._lister = _Lister0(self) if depth1: count += 1 self._lister = _Lister1(self) if recursive: count += 1 self._lister = _ListerRecursive(self) if count == 0: self._lister = _Lister1(self) elif count > 1: self.usage() self._list_file = args.flag('-f') self._list_dir = args.flag('-d') self._list_link = args.flag('-s') if not (self._list_file or self._list_dir or self._list_link): self._list_file = True self._list_dir = True self._list_link = True self._patterns = args.remaining() if len(self._patterns) == 0: self._patterns = ['.']
def setup(self): args = self.args() running = args.flag('-r') if running is None: running = False functions = args.remaining() # A "group" position contains a dot, used to indicate grouping. # A "data" position does not contain a dot; it contains data that will be aggregated. group_positions = [] data_positions = [] for p in xrange(len(functions)): f = functions[p] if f == '.' or f is None: group_positions.append(p) else: data_positions.append(p) n_group = len(group_positions) n_data = len(data_positions) functions = [create_function(functions[p]) for p in data_positions] initial_value = (None,) * n_data if n_group == 0: def aggregator(*t): if t[:n_data] == initial_value: # all None => first item, need to initialize accumulator accumulator = t[-n_data:] else: accumulator = tuple([functions[p](t[p], t[n_data + p]) for p in xrange(n_data)]) return accumulator self._aggregate = _NonGroupingAggregate(self, running, initial_value, aggregator) else: def grouper(*t): return tuple([t[p] for p in group_positions]) def aggregator(*t): if reduce(lambda r, x: r and x is None, t[:n_data], True): # all None => first item, need to initialize accumulator accumulator = tuple([t[n_data + data_positions[p]] for p in xrange(n_data)]) else: accumulator = tuple([functions[p](t[p], t[n_data + data_positions[p]]) for p in xrange(n_data)]) return accumulator self._aggregate = _GroupingAggregate(self, running, grouper, initial_value, aggregator)