summaryrefslogtreecommitdiffstats
path: root/Lib/importlib
Commit message (Collapse)AuthorAgeFilesLines
* [3.5] Backport bpo-30876 (GH-2639), bpo-18018 and bpo-26367. (#2677)Serhiy Storchaka2017-07-231-4/+3
| | | | | | | | | | | | | | | | * bpo-30876: Relative import from unloaded package now reimports the package instead of failing with SystemError. Relative import from non-package now fails with ImportError rather than SystemError. (cherry picked from commit 8a9cd20edca7d01b68292036029ae3735ce65edd) * bpo-18018: Import raises ImportError instead of SystemError if a relative import is attempted without a known parent package. * bpo-26367: importlib.__init__() raises ImportError like builtins.__import__() when ``level`` is specified but without an accompanying package specified.
* bpo-29862: Fix grammar in importlib.reload() exception (GH-809) (GH-812)Mariatta2017-03-251-1/+1
| | | (cherry picked from commit 9f0aa4843f8c26937d5817f27cac4aae9c0a034f)
* [3.5] bpo-29537: Tolerate legacy invalid bytecode (#169)Nick Coghlan2017-03-082-3/+27
| | | | | | | | | | | | | | | | | | bpo-27286 fixed a problem where BUILD_MAP_UNPACK_WITH_CALL could be emitted with an incorrect oparg value, causing the eval loop to access the wrong stack entry when attempting to read the function name. The associated magic number change caused significant problems when attempting to upgrade to 3.5.3 for anyone that relies on pre-cached bytecode remaining valid across maintenance releases. This patch restores the ability to import legacy bytecode generated by 3.5.0, 3.5.1 or 3.5.2, and modifies the eval loop to avoid any harmful consequences from the potentially malformed legacy bytecode. Original import patch by Petr Viktorin, eval loop patch by Serhiy Storchaka, and tests and integration by Nick Coghlan.
* Fix regressions introduced by fixes for issue #27083.Brett Cannon2016-07-161-4/+10
|
* Issue #27083: Respect the PYTHONCASEOK environment variable underBrett Cannon2016-07-151-1/+2
| | | | | | | | | | Windows. Originally only b'PYTHONCASEOK' was being checked for in os.environ, but that won't work under Windows where all environment variables are strings (on OS X they are bytes). Thanks to Eryk Sun for the bug report.
* Fix a scoping issue where an UnboundLocalError was triggered if aBrett Cannon2016-06-251-1/+1
| | | | lazy-loaded module was already in sys.modules.
* Issue #27286: Fixed compiling BUILD_MAP_UNPACK_WITH_CALL opcode. CallingSerhiy Storchaka2016-06-121-1/+2
| | | | | function with generalized unpacking (PEP 448) and conflicting keyword names could cause undefined behavior.
* Issue #27138: Fix the doc comment for FileFinder.find_spec().Eric Snow2016-05-271-2/+2
|
* Issue #27076: Doc, comment and tests spelling fixesMartin Panter2016-05-261-1/+1
| | | | Most fixes to Doc/ and Lib/ directories by Ville Skyttä.
* Issue #26073: Updates magic number comment in _bootstrap_external.py and ↵Steve Dower2016-05-161-0/+3
| | | | changes numbers in launcher.py to decimal to match official table.
* Issue #26186: Remove an invalid type check inBrett Cannon2016-02-212-6/+0
| | | | | | | | | | | importlib.util.LazyLoader. The class was checking its argument as to whether its implementation of create_module() came directly from importlib.abc.Loader. The problem is that the classes coming from imoprtlib.machinery do not directly inherit from the ABC as they come from _frozen_importlib. Because the documentation has always said that create_module() was ignored, the check has simply been removed.
* Issue #26367: Have importlib.__init__() raise RuntimeError whenBrett Cannon2016-02-201-1/+1
| | | | | | | 'level' is specified but no __package__. This brings the function inline with builtins.__import__(). Thanks to Manuel Jacob for the patch.
* Issue #25280: Import trace messages emitted in verbose (-v) mode are noSerhiy Storchaka2015-10-011-4/+4
|\ | | | | | | longer formatted twice.
| * Issue #25280: Import trace messages emitted in verbose (-v) mode are noSerhiy Storchaka2015-10-011-4/+4
| | | | | | | | longer formatted twice.
* | Issue #24769: Interpreter now starts properly when dynamic loadingLarry Hastings2015-08-251-1/+1
| | | | | | | | is disabled. Patch by Petr Viktorin.
* | Issue #24400: Introduce a distinct type for 'async def' coroutines.Yury Selivanov2015-06-221-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Summary of changes: 1. Coroutines now have a distinct, separate from generators type at the C level: PyGen_Type, and a new typedef PyCoroObject. PyCoroObject shares the initial segment of struct layout with PyGenObject, making it possible to reuse existing generators machinery. The new type is exposed as 'types.CoroutineType'. As a consequence of having a new type, CO_GENERATOR flag is no longer applied to coroutines. 2. Having a separate type for coroutines made it possible to add an __await__ method to the type. Although it is not used by the interpreter (see details on that below), it makes coroutines naturally (without using __instancecheck__) conform to collections.abc.Coroutine and collections.abc.Awaitable ABCs. [The __instancecheck__ is still used for generator-based coroutines, as we don't want to add __await__ for generators.] 3. Add new opcode: GET_YIELD_FROM_ITER. The opcode is needed to allow passing native coroutines to the YIELD_FROM opcode. Before this change, 'yield from o' expression was compiled to: (o) GET_ITER LOAD_CONST YIELD_FROM Now, we use GET_YIELD_FROM_ITER instead of GET_ITER. The reason for adding a new opcode is that GET_ITER is used in some contexts (such as 'for .. in' loops) where passing a coroutine object is invalid. 4. Add two new introspection functions to the inspec module: getcoroutinestate(c) and getcoroutinelocals(c). 5. inspect.iscoroutine(o) is updated to test if 'o' is a native coroutine object. Before this commit it used abc.Coroutine, and it was requested to update inspect.isgenerator(o) to use abc.Generator; it was decided, however, that inspect functions should really be tailored for checking for native types. 6. sys.set_coroutine_wrapper(w) API is updated to work with only native coroutines. Since types.coroutine decorator supports any type of callables now, it would be confusing that it does not work for all types of coroutines. 7. Exceptions logic in generators C implementation was updated to raise clearer messages for coroutines: Before: TypeError("generator raised StopIteration") After: TypeError("coroutine raised StopIteration")
* | in dict displays, evaluate the key before the value (closes #11205)Benjamin Peterson2015-05-281-1/+2
| | | | | | | | Patch partially by Steve Dougherty.
* | PEP 489: Multi-phase extension module initializationNick Coghlan2015-05-232-28/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | Issue #24192: Fix namespace package imports.Eric Snow2015-05-164-49/+24
| |
* | PEP 448: additional unpacking generalizations (closes #2292)Benjamin Peterson2015-05-061-1/+2
| | | | | | | | Patch by Neil Girdhar.
* | Issue #23911: Move path-based bootstrap code to a separate frozen module.Eric Snow2015-05-036-1357/+1522
| |
* | Issue #23731: Implement PEP 488.Brett Cannon2015-04-131-27/+51
| | | | | | | | | | | | 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.
* | Issue #23014: Make importlib.abc.Loader.create_module() required whenBrett Cannon2015-01-092-3/+14
| | | | | | | | | | | | | | | | | | importlib.abc.Loader.exec_module() is also defined. Before this change, create_module() was optional **and** could return None to trigger default semantics. This change now reduces the options for choosing default semantics to one and in the most backporting-friendly way (define create_module() to return None).
* | - Issue #22966: Fix __pycache__ pyc file name clobber when pyc_compile isBarry Warsaw2014-12-011-2/+2
|\ \ | |/ | | | | | | asked to compile a source file containing multiple dots in the source file name.
| * - Issue #22966: Fix __pycache__ pyc file name clobber when pyc_compile isBarry Warsaw2014-12-011-2/+2
| | | | | | | | | | asked to compile a source file containing multiple dots in the source file name.
* | Issue #19720: Suppressed context for some exceptions in importlib.Serhiy Storchaka2014-11-213-5/+6
| |
* | Issue #22834: Have import suppress FileNotFoundError when the currentBrett Cannon2014-11-211-1/+6
| | | | | | | | | | | | working directory no longer exists. Thanks to Martin Panter for the bug report.
* | Issue #21052: Don't raise ImportWarning for sys.meta_path orBrett Cannon2014-10-101-2/+2
| | | | | | | | | | | | sys.path_hooks when set to None during interpreter shutdown. Thanks to Martin Panter for the initial bug report.
* | Fix a parameter name to make sense againBrett Cannon2014-05-301-2/+3
| |
* | Issue #20383: Introduce importlib.util.module_from_spec().Brett Cannon2014-05-304-221/+166
| | | | | | | | | | | | Along the way, dismantle importlib._bootstrap._SpecMethods as it was no longer relevant and constructing the new function required partially dismantling the class anyway.
* | Merge from 3.4 (for #21226).Eric Snow2014-05-131-0/+23
|\ \ | |/
| * Issue #21226: Set all attrs in PyImport_ExecCodeModuleObject.Eric Snow2014-05-121-0/+23
| |
* | Issue #21156: importlib.abc.InspectLoader.source_to_code() is now aBrett Cannon2014-05-091-1/+2
| | | | | | | | staticmethod.
* | PEP 465: a dedicated infix operator for matrix multiplication (closes #21176)Benjamin Peterson2014-04-101-1/+2
| |
* | Issue #17621: Introduce importlib.util.LazyLoader.Brett Cannon2014-04-041-1/+93
|/
* Issue #20884: Don't assume in importlib.__init__ that __file__ isBrett Cannon2014-03-211-1/+6
| | | | defined.
* Issue #20763: Fix importlib.machinery.PathFinder to supportBrett Cannon2014-02-261-1/+1
| | | | | | PathEntryFinder instances which only define find_module(). Reported by Yukihiro Nakadaira.
* update magic number for #20625Benjamin Peterson2014-02-191-1/+2
|
* Issue 19944: Fix importlib.find_spec() so it imports parents as needed.Eric Snow2014-01-252-37/+81
| | | | The function is also moved to importlib.util.
* Issue 19713: Remove PEP 451-related code that should have been factored out.Eric Snow2014-01-081-24/+4
| | | | | | This code was an artifact of issuing a DeprecationWarning for the lack of loader.exec_module(). However, we have deferred such warnings to later Python versions.
* Issue #19719: Update various finder and loader ABCs such that theirBrett Cannon2014-01-071-6/+26
| | | | | | | old methods now provide implementations when PEP 451 APIs are present. This should help with backwards-compatibility with code which has not been updated to work with PEP 451.
* Issue 19713: Add PEP 451-related deprecations.Eric Snow2014-01-074-36/+127
|
* Remove dead PEP 451 code.Eric Snow2014-01-071-10/+0
|
* Issue #19927: Add __eq__ to path-based loaders in importlib.Eric Snow2014-01-041-0/+14
|
* Issue #20097: Fix bad use of "self" in importlib's WindowsRegistryFinder.Eric Snow2014-01-031-1/+1
|
* Remove some dead code in importlib, introduced with the PEP 451 patch.Eric Snow2013-12-191-8/+3
| | | | | | | Early in the PEP 451 implementation some of the importlib loaders had their own _get_spec() methods to simplify accommodating them. However, later implementations removed the need. They simply failed to remove this code at the same time. :)
* Issue #18864: Add a setter for ModuleSpec.has_location.Eric Snow2013-12-111-0/+4
|
* Issue 19851: Fix a regression in reloading submodules.Eric Snow2013-12-101-4/+11
|
* Issue #19698: Remove exec_module() from the built-in and extensionBrett Cannon2013-11-291-27/+36
| | | | | | | | | | | | | module loaders. Due to the fact that the call signatures for extension modules and built-in modules does not allow for the specifying of what module to initialize and that on Windows all extension modules are built-in modules, work to clean up built-in and extension module initialization will have to wait until Python 3.5. Because of this the semantics of exec_module() would be incorrect, so removing the methods for now is the best option; load_module() is still used as a fallback by importlib and so this won't affect semantics.
* User the repr for a module name in more placesBrett Cannon2013-11-221-6/+6
|