[Python-checkins] cpython: Issue #21156: importlib.abc.InspectLoader.source_to_code() is now a

brett.cannon python-checkins at python.org
Fri May 9 18:28:30 CEST 2014


http://hg.python.org/cpython/rev/9bd844792b32
changeset:   90602:9bd844792b32
user:        Brett Cannon <brett at python.org>
date:        Fri May 09 12:28:22 2014 -0400
summary:
  Issue #21156: importlib.abc.InspectLoader.source_to_code() is now a
staticmethod.

files:
  Doc/library/importlib.rst |  8 +++++++-
  Doc/whatsnew/3.5.rst      |  5 +++++
  Lib/importlib/abc.py      |  3 ++-
  Misc/NEWS                 |  3 +++
  4 files changed, 17 insertions(+), 2 deletions(-)


diff --git a/Doc/library/importlib.rst b/Doc/library/importlib.rst
--- a/Doc/library/importlib.rst
+++ b/Doc/library/importlib.rst
@@ -499,7 +499,7 @@
         .. versionchanged:: 3.4
            Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
 
-    .. method:: source_to_code(data, path='<string>')
+    .. staticmethod:: source_to_code(data, path='<string>')
 
         Create a code object from Python source.
 
@@ -508,8 +508,14 @@
         the "path" to where the source code originated from, which can be an
         abstract concept (e.g. location in a zip file).
 
+        With the subsequent code object one can execute it in a module by
+        running ``exec(code, module.__dict__)``.
+
         .. versionadded:: 3.4
 
+        .. versionchanged:: 3.5
+           Made the method static.
+
     .. method:: exec_module(module)
 
        Implementation of :meth:`Loader.exec_module`.
diff --git a/Doc/whatsnew/3.5.rst b/Doc/whatsnew/3.5.rst
--- a/Doc/whatsnew/3.5.rst
+++ b/Doc/whatsnew/3.5.rst
@@ -158,6 +158,11 @@
   *module* contains no docstrings instead of raising :exc:`ValueError`
   (contributed by Glenn Jones in :issue:`15916`).
 
+* :func:`importlib.abc.InspectLoader.source_to_code` is now a
+  static method to make it easier to work with source code in a string.
+  With a module object that you want to initialize you can then use
+  ``exec(code, module.__dict__)`` to execute the code in the module.
+
 
 Optimizations
 =============
diff --git a/Lib/importlib/abc.py b/Lib/importlib/abc.py
--- a/Lib/importlib/abc.py
+++ b/Lib/importlib/abc.py
@@ -217,7 +217,8 @@
         """
         raise ImportError
 
-    def source_to_code(self, data, path='<string>'):
+    @staticmethod
+    def source_to_code(data, path='<string>'):
         """Compile 'data' into a code object.
 
         The 'data' argument can be anything that compile() can handle. The'path'
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -73,6 +73,9 @@
 Library
 -------
 
+- Issue #21156: importlib.abc.InspectLoader.source_to_code() is now a
+  staticmethod.
+
 - Issue #21396: Fix TextIOWrapper(..., write_through=True) to not force a
   flush() on the underlying binary stream.  Patch by akira.
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list