code: def group(self, p_todos):
          
          # preorder todos for the group sort
          p_todos = _apply_sort_functions(p_todos, self.pregroupfunctions)
  
          # initialize result with a single group
          result = OrderedDict([((), p_todos)])
  
          for (function, label), _ in self.groupfunctions:
              oldresult = result
              result = OrderedDict()
              for oldkey, oldgroup in oldresult.items():
                  for key, _group in groupby(oldgroup, function):
                      newgroup = list(_group)
  
                      if not isinstance(key, list):
                          key = [key]
  
                      for subkey in key:
                          subkey = "{}: {}".format(label, subkey)
                          newkey = oldkey + (subkey,)
  
                          if newkey in result:
                              result[newkey] = result[newkey] + newgroup
                          else:
                              result[newkey] = newgroup
  
          # sort all groups
          for key, _group in result.items():
              result[key] = self.sort(_group)
  
          return result
docs: Groups the todos according to the given group string.