Message291662
Duck typing is not something that "Python" does, it is a style of programming done by Python programmers. You wouldn't expect isinstance() to try to "duck type", and likewise the inspect module should be precise about what it is inspecting. If inspect reports something is a duck, it should be an actual duck, not just something that quacks.
I'm not sure that the CPython inspect module should care about Cython objects. I don't think that Cython functions should count as Python functions, I think they are different kinds of callables.
But even if we decide that Cython function should be recognised by inspect.isfunction(), I don't think your patch is the right way to deal with it. Not every object with a __code__ attribute is a function.
py> from types import SimpleNamespace
py> x = SimpleNamespace(__code__=1, spam=2)
py> '__code__' in dir(x)
True
Your patch would wrongly detect x as a function when it isn't even callable. |
|
Date |
User |
Action |
Args |
2017-04-14 14:25:44 | steven.daprano | set | recipients:
+ steven.daprano, scoder, jdemeyer |
2017-04-14 14:25:44 | steven.daprano | set | messageid: <1492179944.38.0.630206457082.issue30071@psf.upfronthosting.co.za> |
2017-04-14 14:25:44 | steven.daprano | link | issue30071 messages |
2017-04-14 14:25:43 | steven.daprano | create | |
|