Issue #21156: importlib.abc.InspectLoader.source_to_code() is now a

staticmethod.
This commit is contained in:
Brett Cannon 2014-05-09 12:28:22 -04:00
parent a237a98753
commit 6eaac13c92
4 changed files with 17 additions and 2 deletions

View File

@ -499,7 +499,7 @@ ABC hierarchy::
.. 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 @@ ABC hierarchy::
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`.

View File

@ -158,6 +158,11 @@ Improved Modules
*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
=============

View File

@ -217,7 +217,8 @@ class InspectLoader(Loader):
"""
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'

View File

@ -73,6 +73,9 @@ Core and Builtins
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.