def is_number(a): if isinstance(a, (int, float, long, complex, sage.rings.all.CommutativeRingElement)): return True elif hasattr(a, 'parent'): numgen = sage.rings.number_field.number_field.NumberField_generic parent = a.parent() return CC.has_coerce_map_from(parent) or \ isinstance(parent, numgen) or \ (hasattr(parent, "is_field") and hasattr(parent, "is_finite") and parent.is_field() and parent.is_finite()) else: return False