mirror of
https://github.com/python/cpython.git
synced 2025-12-08 06:10:17 +00:00
gh-135801: Add the module parameter to compile() etc (GH-139652)
Many functions related to compiling or parsing Python code, such as compile(), ast.parse(), symtable.symtable(), and importlib.abc.InspectLoader.source_to_code() now allow to pass the module name used when filtering syntax warnings.
This commit is contained in:
parent
63548b3699
commit
d8e6bdc0d0
47 changed files with 390 additions and 115 deletions
|
|
@ -819,13 +819,14 @@ def get_source(self, fullname):
|
|||
name=fullname) from exc
|
||||
return decode_source(source_bytes)
|
||||
|
||||
def source_to_code(self, data, path, *, _optimize=-1):
|
||||
def source_to_code(self, data, path, fullname=None, *, _optimize=-1):
|
||||
"""Return the code object compiled from source.
|
||||
|
||||
The 'data' argument can be any object type that compile() supports.
|
||||
"""
|
||||
return _bootstrap._call_with_frames_removed(compile, data, path, 'exec',
|
||||
dont_inherit=True, optimize=_optimize)
|
||||
dont_inherit=True, optimize=_optimize,
|
||||
module=fullname)
|
||||
|
||||
def get_code(self, fullname):
|
||||
"""Concrete implementation of InspectLoader.get_code.
|
||||
|
|
@ -894,7 +895,7 @@ def get_code(self, fullname):
|
|||
source_path=source_path)
|
||||
if source_bytes is None:
|
||||
source_bytes = self.get_data(source_path)
|
||||
code_object = self.source_to_code(source_bytes, source_path)
|
||||
code_object = self.source_to_code(source_bytes, source_path, fullname)
|
||||
_bootstrap._verbose_message('code object from {}', source_path)
|
||||
if (not sys.dont_write_bytecode and bytecode_path is not None and
|
||||
source_mtime is not None):
|
||||
|
|
@ -1186,7 +1187,7 @@ def get_source(self, fullname):
|
|||
return ''
|
||||
|
||||
def get_code(self, fullname):
|
||||
return compile('', '<string>', 'exec', dont_inherit=True)
|
||||
return compile('', '<string>', 'exec', dont_inherit=True, module=fullname)
|
||||
|
||||
def create_module(self, spec):
|
||||
"""Use default semantics for module creation."""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue