Hello, The problem I have relates to writing algorithmic code that can handle types with a given API, but where some of the required functionality is implemented as library functions rather than methods. Specifically I have code that uses numpy arrays, but I want to adapt it to use sparse arrays that have a (sufficiently) similar API.
For the most part the existing code will work without alteration, but wherever I have a numpy function (rather than array method) I have an issue. In some cases I can find a corresponding method, but not for e.g. numpy.isnan. Roughly the structure of the existing code is: import numpy class Algorithm(object): def __init__(self, arrays): self.arrays = arrays def run(self): shape = a shape calculated from info in self.arrays arr = numpy.ones(shape) # other stuff using array methods and numpy functions I could replace "numpy" above with "sparse" and it would work fine (as long as the arrays passed to __init__ were of the appropriate type). I could move the import inside the class and make it conditional on the types in self.arrays. I could potentially replace the function calls with something based only on method calls (although that turns out to be awkward for some functions). But I'm thinking about something more introspective, maybe identifying the relevant module / package from the array type and importing the relevant module on the fly? Any ideas? TIA. Duncan p.s. Ideally the solution should work with Python 3 and recent versions of Python 2. -- https://mail.python.org/mailman/listinfo/python-list