Fix advanced class completion #932
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR removes a check that always tried to autocomplete a class using its
__init__function.In fact, the
inspectmodule (used afterwards inbpython/bpython/inspection.py
Line 286 in f9b21ca
__init__. Since at least Python 3.6, it handles__call__,__new__and__signature__in addition to__init__, so restricting the signatures to__init__is actually a downgrade.See https://github.com/python/cpython/blob/2c56c97f015a7ea81719615ddcf3c745fba5b4f3/Lib/inspect.py#L2284
I'm raising this issue because our CLI requires
__signature__to work, which is the case if you letinspect.signaturedo its job by default but not if you manually selectcls.__init__🙂Note: I also doubt that the
__new__check below is useful on modern Python versions, since__new__is also checked byinspect.signature(therefore byinspection.getfuncprops), but I didn't remove it in this PR.