[Python-Dev] PEP 451 update (original) (raw)

Eric Snow ericsnowcurrently at gmail.com
Wed Oct 30 00:02:49 CET 2013


On Tue, Oct 29, 2013 at 3:32 AM, Nick Coghlan <ncoghlan at gmail.com> wrote:

On 29 Oct 2013 14:45, "Eric Snow" <ericsnowcurrently at gmail.com> wrote:

I'd rather give loaders another optional method: supportsreload(name). Complicating the spec methods signatures (to support passing the old spec through) just for the sake of reload seems less than optimal. I don't see any benefit to exposing the old spec to loader.execmodule(). I do: it lets the loader tell if anything changed from the previous load operation, allowing it to make an informed decision on whether or not to permit the reload operation or throw an exception. However, I accept such a check would be better implemented as a separate yes/no method, so it makes sense to postpone this aspect to 3.5 at the earliest.

With the PEP, loaders are no longer in charge of the module-related boilerplate. This means that by the time exec_module() gets called, they won't be able to determine for themselves if it's a reload by checking sys.modules. That's the point of adding loader.supports_reload(). (I haven't added that rationale to the PEP yet).

If it makes a difference to loaders to also look at the previous spec during supports_reload(), then I think we should add that parameter now. Otherwise if we add the parameter later it makes it messier. The signature would now be:

Loader.supports_reload(name, old_spec)

-eric



More information about the Python-Dev mailing list