Ejemplo n.º 1
0
def infer_collection_dict_helper(d, cands):
  for k, vd in d.iteritems():
    tv = type(vd)
    if is_ordered(tv):
      if is_list(tv) and is_dict(type(vd[0])):
        cands.append(vd)
      else:
        infer_collection_ordered_helper(vd, cands)
    elif is_dict(tv):
      infer_collection_dict_helper(vd, cands)
Ejemplo n.º 2
0
def infer_collection_dict_helper(d, cands):
  for k, vd in d.iteritems():
    tv = type(vd)
    if is_ordered(tv):
      if is_list(tv) and is_dict(type(vd[0])):
        cands.append(vd)
      else:
        infer_collection_ordered_helper(vd, cands)
    elif is_dict(tv):
      infer_collection_dict_helper(vd, cands)
Ejemplo n.º 3
0
def infer_collection_ordered_helper(l, cands):
  for vo in l:
    tv = type(vo)
    if is_ordered(tv):
      if is_list(vo) and is_dict(type(v[0])):
        cands.append(vo)
      else:
        infer_collection_ordered_helper(vo, cands)
    elif is_dict(tv):
      infer_collection_dict_helper(vo, cands)
Ejemplo n.º 4
0
def infer_collection_ordered_helper(l, cands):
  for vo in l:
    tv = type(vo)
    if is_ordered(tv):
      if is_list(vo) and is_dict(type(v[0])):
        cands.append(vo)
      else:
        infer_collection_ordered_helper(vo, cands)
    elif is_dict(tv):
      infer_collection_dict_helper(vo, cands)
Ejemplo n.º 5
0
def infer_collection(d):
  if is_list(type(d)):
    return d

  cands = []
  for k, v in d.iteritems():
    tv = type(v)
    if is_ordered(tv):
      if is_list(tv) and len(v) > 0 and is_dict(type(v[0])):
        cands.append(v)
    elif is_dict(tv):
      infer_collection_dict_helper(v, cands)

  if len(cands) > 0:
    return sorted(map(lambda c: (c, relsize(c)), cands), key=itemgetter(1), reverse=True)[0][0]
  else:
    return []
Ejemplo n.º 6
0
def infer_collection(d):
  if is_list(type(d)):
    return d

  cands = []
  for k, v in d.iteritems():
    tv = type(v)
    if is_ordered(tv):
      if is_list(tv) and len(v) > 0 and is_dict(type(v[0])):
        cands.append(v)
    elif is_dict(tv):
      infer_collection_dict_helper(v, cands)

  if len(cands) > 0:
    return sorted(map(lambda c: (c, relsize(c)), cands), key=itemgetter(1), reverse=True)[0][0]
  else:
    return []
Ejemplo n.º 7
0
def group(by, key, reducer, aas, table, norm=identity, unique=True):
  if not is_ordered(type(by)):
    by = [by]
  r = {}
  for row in table.rows:
    thk = []
    for b in by:
      if b in row:
        thk.append(norm(row[b]))
      else:
        thk.append(None)
    thk = tuple(thk)
    if thk in r:
      r[thk].append(row)
    else:
      r[thk] = [row]

  answer = []
  for thk, rows in r.iteritems():
    try:
      nr = []
      for r in rows:
        if key in r:
          nr.append(r[key])
      asv = reduce(reducer, nr)
    except:
      asv = None

    if unique:
      r = rows[0]
      r[aas] = asv
      answer.append(r)
    else:
      for r in rows:
        r[aas] = asv
        answer.append(r)

  return postcreate(data=answer)    
Ejemplo n.º 8
0

def where(pred, table):
  whrs = []
  for r in table.rows:
    if pred(r):
      whrs.append(r)
  return postcreate(whrs)


def identity(x):
  return x


def group(by, key, reducer, as, table, norm=identity, unique=True):
  if not is_ordered(type(by)):
    by = [by]
  r = {}
  for row in table.rows:
    thk = []
    for b in by:
      if b in row:
        thk.append(norm(row[b]))
      else:
        thk.append(None)
    thk = tuple(thk)
    if thk in r:
      r[thk].append(row)
    else:
      r[thk] = [row]
Ejemplo n.º 9
0

def where(pred, table):
  whrs = []
  for r in table.rows:
    if pred(r):
      whrs.append(r)
  return postcreate(whrs)


def identity(x):
  return x


def group(by, key, reducer, as, table, norm=identity, unique=True):
  if not is_ordered(type(by)):
    by = [by]
  r = {}
  for row in table.rows:
    thk = []
    for b in by:
      if b in row:
        thk.append(norm(row[b]))
      else:
        thk.append(None)
    thk = tuple(thk)
    if thk in r:
      r[thk].append(row)
    else:
      r[thk] = [row]