Eli Bendersky <eliben at gmail.com> wrote: > Everything works fine. However, if I add import_fresh_module for the C module: > > from test.support import import_fresh_module > import pickle > C = import_fresh_module('xml.etree.ElementTree', fresh=['_elementtree']) > P = import_fresh_module('xml.etree.ElementTree', blocked=['_elementtree']) sys.modules still contains the C version at this point, so: sys.modules['xml.etree.ElementTree'] = P > tb = P.TreeBuilder() > print(pickle.dumps(tb)) > This interaction only seems to happen with pickle. What's going on here? Can we > somehow improve import_fresh_module to avoid this? Perhaps actually deleting > previously imported modules with some special keyword flag? pickle always looks up sys.modules['xml.etree.ElementTree']. Perhaps we could improve something, but this requirement is rather special; personally I'm okay with switching sys.modules explicitly in the tests, because that reminds me of what pickle does. Stefan Krah
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