Example #1
0
File: out.py Project: geophile/osh
 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
Example #2
0
File: out.py Project: qmutz/osh
 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
Example #3
0
File: agg.py Project: geophile/osh
 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)
Example #4
0
File: agg.py Project: qmutz/osh
 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)
Example #5
0
 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)
Example #6
0
 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)
Example #7
0
 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()
Example #8
0
File: red.py Project: qmutz/osh
    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)
Example #9
0
File: ls.py Project: qmutz/osh
 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 = ['.']
Example #10
0
File: red.py Project: geophile/osh
 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)