Am 10.10.2013 02:18, schrieb Eric Snow: > On Wed, Oct 9, 2013 at 8:30 AM, Christian Heimes > <christian at python.org> wrote: >> The os module imports MutableMapping from collections.abc. That >> import adds collections, collections.abc and eight more modules. >> I'm not sure if we can do anything about it, though. > > Well, that depends on how much we want to eliminate those 10 > imports. :) Both environ and environb could be turned into lazy > wrappers around an _Environ-created-when-needed. If we used a > custom module type for os [1], then adding descriptors for the two > attributes is a piece of cake. As it is, with a little metaclass > magic (or even with explicit wrapping of the various dunder > methods), we could drop those 10 imports from startup. We don't have to use a custom module type to get rid of these imports (but I like to get my hands a piece of chocolate cake *g*). We can either implement yet another mutable mapping class for the os module. That would remove the dependency on collections.abc. Or we have to juggle the modules a bit so we can get to MutableMapping without the extra stuff from collections.__init__. The abc and _weakset modules are already loaded by the io module. Only collections.__init__ imports _collections, operator, keyword, heapq, itertools and reprlib. I implemented both as an experiment. A lean and mean MutableMapping works but it involves some code duplication. Next I moved collections.abc to its former place _abcoll and installed a new collections.abc module as facade. $ hg mv Lib/collections/abc.py Lib/_abcoll.py $ echo "from _abcoll import *" > Lib/collections/abc.py $ echo "from _abcoll import __all__" >> Lib/collections/abc.py $ sed -i "s/collections\.abc/_abcoll/" Lib/os.py With three additional patches I'm down 19 modules: $ ./python -c "import sys; print(len(sys.modules))" 34 $ hg revert --all . $ ./python -c "import sys; print(len(sys.modules))" 53 Christian
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4