def concrete_head(expr, n=10):
 if (not expr._resources()):
  raise ValueError('Expression does not contain data resources')
 if (not iscollection(expr.dshape)):
  return compute(expr)
 head = expr.head((n + 1))
 if (not iscollection(expr.dshape)):
  return odo(head, object)
 elif isrecord(expr.dshape.measure):
  return odo(head, DataFrame)
 df = odo(head, DataFrame)
 df.columns = [expr._name]
 return df

def concrete_head ( expr , n = 10 ) : if ( not expr . _resources ( ) ) : raise ValueError ( 'Expression does not contain data resources' ) if ( not iscollection ( expr . dshape ) ) : return compute ( expr ) head = expr . head ( ( n + 1 ) ) if ( not iscollection ( expr . dshape ) ) : return odo ( head , object ) elif isrecord ( expr . dshape . measure ) : return odo ( head , DataFrame ) df = odo ( head , DataFrame ) df . columns = [ expr . _name ] return df
return head of computed expression .