[Python-Dev] Unique loader per module (original) (raw)

Nick Coghlan ncoghlan at gmail.com
Mon Jan 22 21:19:36 EST 2018


On 21 January 2018 at 01:56, Barry Warsaw <barry at python.org> wrote:

On Jan 05, 2018, at 05:12 PM, Nick Coghlan wrote:

I think the main reason you're seeing a problem here is because ResourceReader has currently been designed to be implemented directly by loaders, rather than being a subcomponent that you can request from a loader.

If you instead had an indirection API (that could optionally return self in the case of non-shared loaders), you'd keep the current resource reader method signatures, but the way you'd access the itself would be: resources = module.spec.loader.getresourcereader(module) # resources implements the ResourceReader ABC BTW, just as a quick followup, this API suggestion was brilliant, Nick. It solved the problem nicely, and let me add support for ResourceReader to zipimport with only touching the bare minimum of zipimport.c. :)

As API design rules of thumb go, "Prefer composition to inheritance" is one I've come to respect a lot :)

Cheers, Nick.

-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia



More information about the Python-Dev mailing list