code: def _join_results(self, results, coarse, join):
      '''
      Join a list of results. Supports both get and series.
      '''
      rval = OrderedDict()
      i_keys = set()
      for res in results:
        i_keys.update( res.keys() )
      for i_key in sorted(i_keys):
        if coarse:
          rval[i_key] = join( [res.get(i_key) for res in results] )
        else:
          rval[i_key] = OrderedDict()
          r_keys = set()
          for res in results:
            r_keys.update( res.get(i_key,{}).keys() )
          for r_key in sorted(r_keys):
            rval[i_key][r_key] = join( [res.get(i_key,{}).get(r_key) for res in results] )
      return rvaf _join_results(self, results, coarse, join):
      '''
      Join a list of results. Supports both get and series.
      '''
      rval = OrderedDict()
      i_keys = set()
      for res in results:
        i_keys.update( res.keys() )
      for i_key in sorted(i_keys):
        if coarse:
          rval[i_key] = join( [res.get(i_key) for res in results] )
        else:
          rval[i_key] = OrderedDict()
          r_keys = set()
          for res in results:
            r_keys.update( res.get(i_key,{}).keys() )
          for r_key in sorted(r_keys):
            rval[i_key][r_key] = join( [res.get(i_key,{}).get(r_key) for res in results] )
      return rval
docs: Join a list of results. Supports both get and series.