In env.py:
#Decorator for overriding builtins
def return_subclass_from(specials):
specialnames = ['__%s__' % s for s in specials.split()]
def wrapit(cls, method):
return lambda *a: cls(method(*a))
def dowrap(cls):
for n in specialnames:
method = getattr(cls, n)
setattr(cls, n, wrapit(cls, method))
return cls
return dowrap
#The real number type
@return_subclass_from('abs add floordiv mod mul neg pow radd rdivmod rfloordiv rmod rmul rpow rsub rtruediv sub truediv trunc')
class Real(Fraction):