New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
inspect.getmro() fails when base class lacks __bases__ attribute. #70072
Comments
I am using a possibly non-standard python package called Forthon, and when I inspect an object that is dependent on the Forthon class, I get the following error: File "/Users/zerbeb/homemade_programs/config2class/src/method_parsing.py", line 18, in get_all_init_args This was easy enough to fix, simply add "if not hasattr(cls,'__bases__'): return" to the _searchbases function: def _searchbases(cls, accum):
# Simulate the "classic class" search order.
if cls in accum:
return
if not hasattr(cls, "__bases__"): #Additional code.
return
accum.append(cls)
for base in cls.__bases__:
_searchbases(base, accum) Maybe you have a better solution, but I think this edge case can be trivially solved however you decide to edit the code. Thanks! |
Which version of python are you running? I can't match that traceback up to the code in the current 2.7 inspect module. That said, the same issue probably exists in the current code. A 2.7 class is expected to have either an __mro__ or a __bases__ attribute, and if it has neither inspect probably *should* throw an error, since it can't know what to do with the class. The error could be clearer, though. But, let's see what others think. |
I am using Python 2.7.5. The segment of code from inspect that I previously extracted came from line 332 although you may also find it by "finding" _searchbases. This is really an issue with Forthon: http://hifweb.lbl.gov/Forthon/ Specifically the Forthon class, which I think is older than current standards. If you guys want this Forthon class to flag an error (I can work around that too), than the proposed fix I sent can be rejected, and this ticket can be closed. I just wanted to bring this case to you attention just in case. Thanks again, Brandon Quoting "R. David Murray" <report@bugs.python.org>:
|
The _searchbases function was removed here, when getmro was simplified following the removal of old style classes: |
Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.
Show more details
GitHub fields:
bugs.python.org fields:
The text was updated successfully, but these errors were encountered: