[Python-Dev] PEP 451 update (original) (raw)
Eric Snow ericsnowcurrently at gmail.com
Tue Oct 29 05:56:37 CET 2013
- Previous message: [Python-Dev] PEP 451 update
- Next message: [Python-Dev] PEP 451 update
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Sun, Oct 27, 2013 at 4:41 PM, PJ Eby <pje at telecommunity.com> wrote:
I'm talking about userspace code that implements lazy importing features, like the lazyModule() function in this module:
http://svn.eby-sarna.com/Importing/peak/util/imports.py?view=markup Specifically, I'm trying to get an idea of how much that code will need to change under the PEP (and apparently under importlib in general).
Depending on the outcome of issue19413, you shouldn't have to change anything. PEP 451 is aiming for strict backward compatibility.
Honestly, I'm finding all this stuff really confusing, which is kind of worrying. I mean, I gather I'm one of the handful of people who really understood how importing used to work, and I'm having a lot of trouble wrapping my brain around the new world.
(Granted, I think that may be because I understand how a lot of old corner cases work,
Like Nick, I would love more tests that cover these corner cases. It would have saved us (Brett especially) a lot of headache. At the least any description you can offer would be great.
but what's bugging me is that I no longer understand how those old corners work under the new regime, nor do I feel I understand what the new corners will be. This may also just be communication problems, and the fact that it's been months since I really walked through importlib line by line, and have never really walked through it (or PEP 451) quite as thoroughly as I have import.c. I also seem to be having trouble grokking why the motivating use cases for PEP 451 can't be solved by just providing people with good base classes to use for writing loaders -- i.e., I don't get why the core protocol has to change to address the use case of writing loaders more easily. The new protocol seems way more complex than PEP 302,
What new protocol specifically? Finder.find_module() now returns a module spec instead of a loader. Loader.exec_module() gets used now rather than load_module(). Loaders don't have to worry about all the boilerplate stuff anymore (managing sys.modules and import-related module attributes). From my perspective PEP 451 is simplifying protocols.
-eric
and ISTM the complexity could just be pushed off to the loader side of the protocol without creating more interdependency between importlib and the loaders.)
- Previous message: [Python-Dev] PEP 451 update
- Next message: [Python-Dev] PEP 451 update
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]