Use PyObject_CallMethod in resource loaders #2974
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 is a slight simplification from the existing strategy of getting the functions then calling them. The new way has fewer lines of code, and doesn't need to manage the refcount and existence of references to functions, so it is simpler and likely faster.
The resource loaders have way bigger problems-- they are using a deprecated setuptools API, they likely should be reworked to use the replacement API from importlib. I also think they're being over-cautious with handling of file objects, I think they should just hand off directly to rwobject.c instead of faffing around with the .name and trying to close them if they're streams.
This PR doesn't touch that since that would be complex to research and to review. The current change is low hanging fruit but it's worthwhile too.