41 Commits

Author SHA1 Message Date
Pablo Galindo
ef67512b40 bpo-40108: Improve the error message in runpy when importing a module that includes the extension (GH-19239) 2020-03-31 12:23:55 +01:00
Maor Kleinberger
0911ea5c17 bpo-39517: Allow runpy.run_path() to accept path-like objects (GH-18699) 2020-03-08 20:43:17 +00:00
jsnklln
e243bae999 bpo-38722: Runpy use io.open_code() (GH-17234)
https://bugs.python.org/issue38722



Automerge-Triggered-By: @taleinat
2019-11-18 11:11:13 -08:00
Martin Panter
f9ed528faf Issue #27487: Merge runpy warning from 3.5 2016-08-21 05:07:35 +00:00
Martin Panter
9c8aa9bffe Issue #27487: Warn if submodule already imported before runpy execution
Also try to clarify the find_spec() error message.
2016-08-21 04:07:58 +00:00
Brett Cannon
fdcdd9ed80 Issue #26896: Disambiguate uses of "importer" with "finder".
Thanks to Oren Milman for the patch.
2016-07-08 11:00:00 -07:00
Martin Panter
dda584340e Issue #19771: Omit irrelevant message if package could not be initialized 2015-12-12 06:58:55 +00:00
Martin Panter
7dda421bff Issue #14285: Do not catch exceptions initializing any ancestor package
The previous fix only handled the case of the parent package of __main__
failing to initialize.

Also make the "Error while finding spec" formatting slightly more appealing,
and document and test that the module name must be absolute.
2015-12-10 06:47:06 +00:00
Martin Panter
657257edb6 Issue #14285: Do not catch __init__.py exceptions in runpy
Initialize package before calling find_spec() for __main__, so that we do not
incorrectly handle exceptions from __init__.py. When runpy is used from the
Python CLI, use an internal exception rather than ImportError, to avoid
catching unexpected exceptions.

Also remove exception message rewriting in _run_module_as_main(), because it
seems to be redundant with the _get_main_module_details() function.
2015-12-03 01:23:10 +00:00
Eric Snow
32439d6eb6 Issue #23911: Move path-based bootstrap code to a separate frozen module. 2015-05-02 19:15:18 -06:00
Brett Cannon
2a17bde930 Issue #20383: Introduce importlib.util.module_from_spec().
Along the way, dismantle importlib._bootstrap._SpecMethods as it was
no longer relevant and constructing the new function required
partially dismantling the class anyway.
2014-05-30 14:55:29 -04:00
Victor Stinner
7fa767e517 Issue #20976: pyflakes: Remove unused imports 2014-03-20 09:16:38 +01:00
Eric Snow
6029e08691 Issue 19944: Fix importlib.find_spec() so it imports parents as needed.
The function is also moved to importlib.util.
2014-01-25 15:32:46 -07:00
Nick Coghlan
720c7e28cb Issue #19700: set __spec__ appropriately in runpy
Note that __spec__.name is not currently guaranteed to be in
sys.modules when the code is running, only __name__ is.

The "running module is in sys.modules" invariant will be
expanded to also cover __spec__.name in a subsequent patch.
2013-12-15 20:33:02 +10:00
Brett Cannon
e4f41deccf Issue #17177: The imp module is pending deprecation.
To make sure there is no issue with code that is both Python 2 and 3
compatible, there are no plans to remove the module any sooner than
Python 4 (unless the community moves to Python 3 solidly before then).
2013-06-16 13:13:40 -04:00
Brett Cannon
82d2107668 Issue #17177: switch from imp.new_module to types.ModuleType for runpy 2013-06-15 14:27:21 -04:00
Nick Coghlan
be7e49fd82 Close #15386: There was a loophole that meant importlib.machinery and imp would sometimes reference an uninitialised copy of importlib._bootstrap 2012-07-20 23:40:09 +10:00
Nick Coghlan
8dbe5b5568 Remove a statement that was only added for debugging purposes 2012-07-15 18:29:24 +10:00
Nick Coghlan
85e729ec3b Take the first step in resolving the messy pkgutil vs importlib edge cases by basing pkgutil explicitly on importlib, deprecating its internal import emulation and setting __main__.__loader__ correctly so that runpy still works (Affects #15343, #15314, #15357) 2012-07-15 18:09:52 +10:00
Nick Coghlan
2f54b98c8c Merge fix for #15230 from 3.2 2012-07-15 00:07:43 +10:00
Nick Coghlan
761bb11374 Close #15230: runpy.run_path now sets __package__ correctly. Also refactored the runpy tests to use a more systematic approach 2012-07-14 23:59:22 +10:00
Brett Cannon
aa93642a35 Issue #14605: Use None in sys.path_importer_cache to represent no
finder instead of using some (now non-existent) implicit finder.
2012-04-27 15:30:58 -04:00
Brett Cannon
e0d88a173c Issue #14605: Make explicit the entries on sys.path_hooks that used to
be implicit.

Added a warning for when sys.path_hooks is found to be empty. Also
changed the meaning of None in sys.path_importer_cache to represent
trying sys.path_hooks again (an interpretation of previous semantics).
Also added a warning for when None was found.

The long-term goal is for None in sys.path_importer_cache to represent
the same as imp.NullImporter: no finder found for that sys.path entry.
2012-04-25 20:54:04 -04:00
Victor Stinner
6c47102982 Issue #12451: runpy: run_path() now opens the Python script in binary mode,
instead of text mode using the locale encoding, to support other encodings than
UTF-8 (scripts using the coding cookie).
2011-07-04 01:45:39 +02:00
Benjamin Peterson
01e3979757 account for the module __dict__ being cleared when its module is 2010-10-13 01:04:36 +00:00