You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
CPython implementation detail: An implementation may provide built-in functions whose positional parameters do not have names, even if they are ‘named’ for the purpose of documentation, and which therefore cannot be supplied by keyword. In CPython, this is the case for functions implemented in C that use PyArg_ParseTuple() to parse their arguments.
It then seems an incompatibiliy between python anc CPython, should CPython be fixed instead ?
This should be relatively easy to fix and PRs are welcome, thank you for looking into this in detail (was reported before in #547).
The error here is partially on Kivy for calling __import__ directly instead of using importlib, and as you quoted we are kind-of allowed to make __import__ behave in this way.
Mid-term (hopefully in pythonnet 3), this should not be a problem anymore by implementing proper PEP302-style importing instead of overriding __import__.
Environment
Details
pythonnet overwrites the python's
__import__
routine, but does not implement python's signature precisely:original python's signature is
Most other python modules call the name parameter as positional:
__import__("foo", ...
Some packages (e.g. kivy) use
__import__
asi.e. the name argument used as keyword argument in the call. Both calls are valid in python's
__import__
, but fail at the overwritten__import__
withA hotfix is to alter the other modules code to
but the broken code is within pythonnet.
The text was updated successfully, but these errors were encountered: