[Python-Dev] Unique loader per module

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.get_resource_reader(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