This problem is turning out to be a bit hairy. `inspect.getargspec` doesn't play well with C bindings, in particular the numpy functions cannot be inspected without drilling down to the C code. Furthermore, successful invocation can even depend on the types of arguments given (e.g., `np.sin(0)` works while `np.sin(None)` gives an `AttributeError: sin`).

It seems as though the most reliable way to do this is to actually perform the required call. So @tcstewar's suggestion is probably the right one, as strange as that may sound.

In effect, all this will do is rewrite the error message to be a bit more descriptive, and make it apparent in the API that such exceptions are intended to be thrown. 

I'll go ahead and do this since I've pretty much already done the work. There shouldn't be any risks involved since the check is only done if the function fails, and we do the calls anyways (for both the connection `function` and node `output`).