Description
During the tracing, it's helpful to know not only which methods on the ufuncs class are called (__call__
, reduce
, etc) but also which ufuncs themselves are used (add
, multiple
, etc).
Currently, we are presenting the results of those, not as the product of those two features, but as their union. i.e. we should stats for the reduce
method on the ufunc
class, but we don't show how many times reduce
was called on add
vs multiple
. That's one "issue", but the other more pressing one is we don't know where ufuncs come from!
All we know is their names. Up until now, I had been assuming they are all defined in the numpy
module. However, scipy for example has many that are not.
We should somehow figure out how to understand where they were defined, or what module they were imported from.
I guess to do this, we would have to do some kind of traversal of imported modules, to understand where they are defined? This also could be helpful for the related problem of recording, which module, exports a certain type instead of which module it was defined in.