def p2sage(s): """Convert s to something sensible in Sage. Can handle objects (including strings) representing integers, reals, complexes (in terms of 'i' or 'I'), polynomials in 'a' with integer coefficients, or lists of the above. """ z = s if type(z) in [list, tuple]: return [p2sage(t) for t in z] else: Qa = PolynomialRing(RationalField(),"a"); for f in [ZZ, RR, CC, Qa]: try: return f(z) # SyntaxError is raised by CC('??') # NameError is raised by CC('a') except (ValueError, TypeError, NameError, SyntaxError): try: return f(str(z)) except (ValueError, TypeError, NameError, SyntaxError): pass if z!='??': logger.error('Error converting "{}" in p2sage'.format(z)) return z
def p2sage(s): """Convert s to something sensible in Sage. Can handle objects (including strings) representing integers, reals, complexes (in terms of 'i' or 'I'), polynomials in 'a' with integer coefficients, or lists of the above. """ z = s if type(z) in [list, tuple]: return [p2sage(t) for t in z] else: Qa = PolynomialRing(RationalField(),"a") for f in [ZZ, RR, CC, Qa]: try: return f(z) # SyntaxError is raised by CC('??') # NameError is raised by CC('a') except (ValueError, TypeError, NameError, SyntaxError): try: return f(str(z)) except (ValueError, TypeError, NameError, SyntaxError): pass if z!='??': logger.error('Error converting "{}" in p2sage'.format(z)) return z