66 Commits

Author SHA1 Message Date
Victor Stinner
942f7a2dea bpo-39674: Revert "bpo-37330: open() no longer accept 'U' in file mode (GH-16959)" (GH-18767)
This reverts commit e471e72977.

The mode will be removed from Python 3.10.
2020-03-04 18:50:22 +01:00
Victor Stinner
e471e72977 bpo-37330: open() no longer accept 'U' in file mode (GH-16959)
open(), io.open(), codecs.open() and fileinput.FileInput no longer
accept "U" ("universal newline") in the file mode. This flag was
deprecated since Python 3.3.
2019-10-28 15:40:08 +01:00
Benjamin Peterson
b0274f2cdd closes bpo-34056: Always return bytes from _HackedGetData.get_data(). (GH-8130)
* Always return bytes from _HackedGetData.get_data().

Ensure the imp.load_source shim always returns bytes by reopening the file in
binary mode if needed. Hash-based pycs have to receive the source code in bytes.

It's tempting to change imp.get_suffixes() to always return 'rb' as a mode, but
that breaks some stdlib tests and likely 3rdparty code, too.
2018-07-06 20:41:06 -07:00
Alexandru Ardelean
c38e32a100 bpo-30645: don't append to an inner loop path in imp.load_package() (GH-2268)
Bug didn't manifest itself when importing a module with source as .py files are always the first on the search path. The issue only showed up in bytecode-only packages where the calculated file path would be ``__init__.py/__init__.pyc``.

Patch by Alexandru Ardelean.
2017-06-23 10:35:03 -07:00
Brett Cannon
896e87a99c Merge for #26844 2016-07-15 10:59:11 -07:00
Brett Cannon
f76457e122 Issue #26844: Fix imp.find_module() to have the exception related to
type issues be about 'path' instead of 'name'.

Thanks to Lev Maximov for the patch.
2016-07-15 10:58:54 -07:00
Brett Cannon
c0d91aff9a Upgrade the imp module's deprecation to DeprecationWarning. 2015-10-16 12:21:37 -07:00
Nick Coghlan
9d3c61c86a Close #24748: Restore imp.load_dynamic compatibility
To resolve a compatibility problem found with py2exe and
pywin32, imp.load_dynamic() once again ignores previously loaded modules
to support Python modules replacing themselves with extension modules.

Patch by Petr Viktorin.
2015-09-05 21:05:05 +10:00
Nick Coghlan
d5cacbb1d9 PEP 489: Multi-phase extension module initialization
Known limitations of the current implementation:

- documentation changes are incomplete
- there's a reference leak I haven't tracked down yet

The leak is most visible by running:

  ./python -m test -R3:3 test_importlib

However, you can also see it by running:

  ./python -X showrefcount

Importing the array or _testmultiphase modules, and
then deleting them from both sys.modules and the local
namespace shows significant increases in the total
number of active references each cycle. By contrast,
with _testcapi (which continues to use single-phase
initialisation) the global refcounts stabilise after
a couple of cycles.
2015-05-23 22:24:10 +10:00
Eric Snow
32439d6eb6 Issue #23911: Move path-based bootstrap code to a separate frozen module. 2015-05-02 19:15:18 -06:00
Zachary Ware
cadbab295d Closes #23956: Merge with 3.4 2015-04-14 15:46:22 -05:00
Zachary Ware
50db6acc9b Issue #23956: Fix typo in imp.py docstring.
Patch by Jacinda Shelly.
2015-04-14 15:43:00 -05:00
Brett Cannon
f299abdafa Issue #23731: Implement PEP 488.
The concept of .pyo files no longer exists. Now .pyc files have an
optional `opt-` tag which specifies if any extra optimizations beyond
the peepholer were applied.
2015-04-13 14:21:02 -04:00
Brett Cannon
781692ff6a Fix module deprecation warnings to have a useful stacklevel 2015-03-27 12:56:57 -04: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
Serhiy Storchaka
6787a3806e Issue #15204: Deprecated the 'U' mode in file-like objects. 2013-11-23 22:12:06 +02:00
Eric Snow
b523f8433a Implement PEP 451 (ModuleSpec). 2013-11-22 09:05:39 -07:00
Brett Cannon
16ababc213 merge for issue #18755 2013-08-23 11:52:19 -04:00
Brett Cannon
a4975a911d Issue #18755: Allow imp.load_*() loaders to have get_data() called
multiple times.
2013-08-23 11:45:57 -04:00
Eric Snow
7491f1726b issue #18698: ensure importlib.reload() returns the module out of sys.modules. 2013-08-14 18:03:34 -06:00
Ezio Melotti
056bafe7a6 #18681: Fix a NameError in imp.reload() (noticed by Weizhao Li). 2013-08-10 19:59:36 +03:00
Brett Cannon
cd171c8e92 Issue #18200: Back out usage of ModuleNotFoundError (8d28d44f3a9a) 2013-07-04 17:43:24 -04: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
a38e81428a Issue #18194: Introduce importlib.util.cache_from_source() and
source_from_cache(), finishing the work introduced in changset
4134:9cacdb9d0c59.
2013-06-14 22:35:40 -04:00
Brett Cannon
589c4fffd2 Make it more obvious what things used in imp are snuck in through private APIs 2013-06-14 22:29:58 -04:00