summaryrefslogtreecommitdiffstats
path: root/Misc
diff options
context:
space:
mode:
authorBrett Cannon <bcannon@gmail.com>2010-06-27 23:57:46 (GMT)
committerBrett Cannon <bcannon@gmail.com>2010-06-27 23:57:46 (GMT)
commitf23e3744412ac8943bddaace3dc0e85522518319 (patch)
tree39eff8e07cc68ba5fc7f21cc673cba34ca5742f4 /Misc
parent22d0830a11c0948ccfd2c42a73d55dd63e35ef72 (diff)
downloadcpython-f23e3744412ac8943bddaace3dc0e85522518319.zip
cpython-f23e3744412ac8943bddaace3dc0e85522518319.tar.gz
cpython-f23e3744412ac8943bddaace3dc0e85522518319.tar.bz2
Implement importlib.abc.SourceLoader and deprecate PyLoader and PyPycLoader.
SourceLoader is a simplification of both PyLoader and PyPycLoader. If one only wants to use source, then they need to only implement get_data and get_filename. To also use bytecode -- sourceless loading is not supported -- then two abstract methods -- path_mtime and set_data -- need to be implemented. Compared to PyLoader and PyPycLoader, there are less abstract methods introduced and bytecode files become an optimization controlled by the ABC and hidden from the user (this need came about as PEP 3147 showed that not treating bytecode as an optimization can cause problems for compatibility). PyLoader is deprecated in favor of SourceLoader. To be compatible from Python 3.1 onwards, a subclass need only use simple methods for source_path and is_package. Otherwise conditional subclassing based on whether Python 3.1 or Python 3.2 is being is the only change. The documentation and docstring for PyLoader explain what is exactly needed. PyPycLoader is deprecated also in favor of SourceLoader. Because PEP 3147 shifted bytecode path details so much, there is no foolproof way to provide backwards-compatibility with SourceLoader. Because of this the class is simply deprecated and users should move to SourceLoader (and optionally PyLoader for Python 3.1). This does lead to a loss of support for sourceless loading unfortunately. At some point before Python 3.2 is released, SourceLoader will be moved over to importlib._bootstrap so that the core code of importlib relies on the new code instead of the old PyPycLoader code. This commit is being done now so that there is no issue in having the API in Python 3.1a1.
Diffstat (limited to 'Misc')
-rw-r--r--Misc/NEWS3
1 files changed, 3 insertions, 0 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index d0d1993..ebf0b29 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -456,6 +456,9 @@ C-API
Library
-------
+- Implement importlib.abc.SourceLoader and deprecate PyLoader and PyPycLoader
+ for removal in Python 3.4.
+
- Issue #9064: pdb's "up" and "down" commands now accept an optional argument.
- Issue #9018: os.path.normcase() now raises a TypeError if the argument is