import numpy

original = numpy.set_numeric_ops()

class Logger:
    """Logs the arguments some object is called with."""
    
    def __init__(self, target):
        self._target = target
    
    def __call__(self, *args):
        print "args = %r" % (args,)

class X:
    """Dummy object class."""
    pass

add = Logger(original['add'])
equal = Logger(original['equal'])

print "Installing loggers ..."

numpy.set_numeric_ops(add=add, equal=equal)

print "Creating array a: ..."
a = numpy.asarray([1, 2])
print a

print "Calling a + 1 ..."
a + 1

print "Calling a == 1 ..."
a == 1

print "Calling a == X() ..."
a == X()
