Ejemplo n.º 1
0
 def _make_nested_list(self, gen):
     """Makes nested list from generator for creating numpy.array"""
     
     res = []
     
     for ele in gen:
         if ele is None:
             res.append(None)
             
         elif not is_string_like(ele) and is_generator_like(ele):
             # Nested generator
             res.append(self._make_nested_list(ele))
             
         else:
             res.append(ele)
     
     return res
Ejemplo n.º 2
0
 def _eval_cell(self, key):
     """Evaluates one cell"""
     
     # Set up environment for evaluation
     env = globals().copy()
     env.update( {'X':key[0], 'Y':key[1], 'Z':key[2],
                  'R':key[0], 'C':key[1], 'T':key[2],
                  'S':self } )
     
     code = self(key)
     
     # If cell is not present return None
     
     if code is None:
         return
     
     
     elif is_generator_like(code):
         # We have a generator object
         
         return numpy.array(self._make_nested_list(code), dtype="O")
     
     # If only 1 term in front of the "=" --> global
     
     split_exp = code.split("=")
     
     if self._has_assignment(split_exp):
         glob_var = split_exp[0].strip()
         expression = "=".join(split_exp[1:])
     else:
         glob_var = None
         expression = code
     
     try:
         result = eval(expression, env, {})
         
     except AttributeError, err:
         # Attribute Error includes RunTimeError
         result = err