Commit Graph

218 Commits

Author SHA1 Message Date
Brett Cannon 86a8be00ed Fix a name in an example 2016-02-20 18:47:09 -08:00
Brett Cannon 4cbab346df Issue #26397: Update an importlib example to use util.module_from_spec() instead of create_module() 2016-02-20 18:45:56 -08:00
Brett Cannon fe1941ebf8 Merge w/ 3.5 2016-02-20 18:40:18 -08:00
Brett Cannon 27c712e149 List what classes from importlib.machinery don't work with importlib.util.LazyLoader 2016-02-20 18:40:02 -08:00
Berker Peksag 89e54338d0 Issue #26242: Fix another one in importlib.rst 2016-01-30 19:30:22 +02:00
Berker Peksag fe5f614418 Issue #26242: Fix another one in importlib.rst 2016-01-30 19:30:06 +02:00
Brett Cannon 52c854a838 Merge from 3.5 2016-01-22 14:05:41 -08:00
Brett Cannon 3bf1d87bbd Fix a typo in a code example 2016-01-22 14:03:27 -08:00
Brett Cannon a85e927e39 Issue #25802: Add an examples section to importlib.
Thanks to Berker Peksag for the patch review.
2016-01-08 14:33:09 -08:00
Brett Cannon eae3079041 Issue #25802: Deprecate load_module() on importlib.machinery.SourceFileLoader and SourcelessFileLoader.
They were the only remaining implementations of load_module() not
documented as deprecated.
2015-12-28 17:55:27 -08:00
Berker Peksag 6e9d2e687b Issue #21240: Add an abstractmethod directive to mark abstract methods in the docs more explicitly 2015-12-08 12:14:50 +02:00
Martin Panter 84835ab1cb Issue #25161: Merge full stops from 3.4 into 3.5 2015-10-10 10:44:25 +00:00
Martin Panter d21e0b52f1 Issue #25161: Add full stops in documentation; patch by Takase Arihiro 2015-10-10 10:36:22 +00:00
Robert Collins 1ae28d2ff3 Issue #20769: Improve reload() docs. Patch by Dorian Pula. 2015-08-05 08:20:53 +12:00
Robert Collins b3ca31f5f1 Issue #20769: Improve reload() docs. Patch by Dorian Pula. 2015-08-05 08:28:53 +12: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
R David Murray deed215313 Merge: #24081: Remove obsolete caveat from import docs. 2015-05-02 14:58:32 -04:00
R David Murray 6d877ef026 #24081: Remove obsolete caveat from import docs.
Per Eric Snow's research, this changed in Python 2.4 in changeset 331e60d8ce,
but these docs were not updated.

Patch by Peter Viktorin.
2015-05-02 14:57:54 -04:00
Larry Hastings 770ce204ee Regenerated pydoc-topics and fixed bad/suspicious doc markup for Python 3.5.0a4. 2015-04-19 13:50:12 -07: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 3fa84224fd Issue #23422: Clarify some things around importlib.import_module() 2015-02-20 10:34:20 -05:00
Brett Cannon 02d8454002 Issue #23014: Make importlib.abc.Loader.create_module() required when
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).
2015-01-09 11:39:21 -05:00
Brett Cannon b6e2556d8f Issue #22834: Have import suppress FileNotFoundError when the current
working directory no longer exists.

Thanks to Martin Panter for the bug report.
2014-11-21 12:19:28 -05:00
Georg Brandl bad8d4bb53 merge with 3.4 2014-10-29 10:57:42 +01:00
Georg Brandl b7354a65ce Fixing broken links in doc, part 4: some more breaks and redirects 2014-10-29 10:57:37 +01:00
Georg Brandl cadc3fdcb5 Merge with 3.4 2014-10-29 08:37:29 +01:00
Georg Brandl e73778c1ac Use https:// URLs when referring to python.org hosts. 2014-10-29 08:36:35 +01: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
Brett Cannon 6eaac13c92 Issue #21156: importlib.abc.InspectLoader.source_to_code() is now a
staticmethod.
2014-05-09 12:28:22 -04:00
Brett Cannon a237a98753 Merge for issue #21438 2014-05-09 11:56:07 -04:00
Brett Cannon 062fcac9a4 Issue #21438: Document what loaders don't require a module name for
load_module().
2014-05-09 11:55:49 -04:00
Brett Cannon a04dbe4fe7 Issue #17621: Introduce importlib.util.LazyLoader. 2014-04-04 13:53:38 -04:00
Andrew Svetlov 08af00047b Get rid of deprecated IOError in the doc 2014-04-01 01:13:30 +03:00
Georg Brandl df48b97855 Fix a few scoping issues with versionadded/versionchanged directives. 2014-03-24 09:06:18 +01:00
Larry Hastings 3732ed2414 Merge in all documentation changes since branching 3.4.0rc1. 2014-03-15 21:13:56 -07:00
Brett Cannon 3303b6abc8 Merge for issue #20488 2014-02-06 09:49:53 -05:00
Brett Cannon 07fbd78473 Issue #20488: Update docs to say importlib is *the* implementaiton of
import and not *an* implementation.
2014-02-06 09:46:08 -05: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
R David Murray 0ae7ae1fc9 whatsnew: InspectLoader.get_code now concrete, b32decode raises binascii.Error.
And a news item rephrase.
2014-01-08 18:16:02 -05:00
Brett Cannon 8d942296bb Issue #19719: Update various finder and loader ABCs such that their
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.
2014-01-07 15:52:42 -05:00
Eric Snow ca2d854df8 Issue #19713: Update importlib docs for module spec changes, including deprecations. 2013-12-16 23:06:52 -07:00
Brett Cannon 706a7296d7 merge for issue #19963 2013-12-13 13:58:47 -05:00
Brett Cannon 98620d87f2 Issue #19963: Document that importlib.import_module() will import
parent packages automatically.
2013-12-13 13:57:41 -05:00
Eric Snow b282b3d804 Issue #18864: Add a setter for ModuleSpec.has_location. 2013-12-10 22:16:41 -07:00
Serhiy Storchaka 0e90e99188 Issue #19795: Improved markup of True/False constants. 2013-11-29 12:19:53 +02:00
Serhiy Storchaka fbc1c26803 Issue #19795: Improved markup of True/False constants. 2013-11-29 12:17:13 +02:00
Serhiy Storchaka 889d24ee3a Revert unrelated changes introduced by changeset b2066bc8cab9 (issue #19795). 2013-11-29 23:40:35 +02:00
Eric Snow b523f8433a Implement PEP 451 (ModuleSpec). 2013-11-22 09:05:39 -07:00
Brett Cannon f6901c8baa Issue #19410: Put back in special-casing of '' for
importlib.machinery.FileFinder.

While originally moved to stop special-casing '' as PathFinder farther
up the typical call chain now uses the cwd in the instance of '', it
was deemed an unnecessary risk to breaking subclasses of FileFinder to
take the special-casing out.
2013-11-01 10:37:57 -04:00
Brett Cannon 8ad37860c9 Tweak some doc wording for importlib.reload 2013-10-25 13:52:46 -04:00
Georg Brandl 0f5bff24ab Doc markup fixes. 2013-10-19 17:46:38 +02:00
Brett Cannon 27e27f7ee1 Issue #18416: Have importlib.machinery.PathFinder treat '' as the cwd
and stop importlib.machinery.FileFinder treating '' as '.'.

Previous PathFinder transformed '' into '.' which led to __file__ for
modules imported from the cwd to always be relative paths. This meant
the values of the attribute were wrong as soon as the cwd changed.
This change now means that as long as the site module is run (which
makes all entries in sys.path absolute) then all values for __file__
will also be absolute unless it's for __main__ when specified by file
path in a relative way (modules imported by runpy will have an
absolute path).

Now that PathFinder is no longer treating '' as '.' it only makes
sense for FileFinder to stop doing so as well. Now no transformation
is performed for the directory given to the __init__ method.

Thanks to Madison May for the initial patch.
2013-10-18 11:39:04 -04:00
Serhiy Storchaka 98b28fddd8 Issue #18758: Fixed and improved cross-references. 2013-10-13 23:12:09 +03:00
Eric Snow dcd01b4932 [issue 19152] Add versionadded for ExtensionFileLoader.get_filename(). 2013-10-04 20:35:34 -06:00
Eric Snow 5c4b4c530f [issue19152] Revert 832579dbafd6. 2013-10-03 15:03:29 -06:00
Eric Snow af8566c847 [issue19152] Add ExtensionFileLoader.get_filename(). 2013-10-03 12:08:55 -06:00
Eric Snow 5179445520 [issue19152] Add ExtensionFileLoader.get_filename(). 2013-10-03 12:08:55 -06:00
Brett Cannon a87e31ca52 Issue #18955: clarify what is removed by importlib.util.module_for_loader. 2013-09-13 16:52:19 -04:00
Brett Cannon 27bc441f5e merge for issue #18278 2013-06-21 18:37:02 -04:00
Brett Cannon 29b2f174da Issue #18278: properly document how the loaders are called for FileFinder 2013-06-21 18:31:55 -04:00
Brett Cannon a81d527ca9 documentation suggesting something which doesn't exist 2013-06-16 19:17:12 -04:00
Brett Cannon 390f6c1bf7 Merge doc/argument name fix 2013-06-16 19:09:46 -04:00
Brett Cannon 1d75382e81 Fix a misnaming of a method and an argument 2013-06-16 19:06:55 -04:00
Brett Cannon f24fecd4ac Issue #18076: Introduce imoportlib.util.decode_source().
The helper function makes it easier to implement
imoprtlib.abc.InspectLoader.get_source() by making that function
require just the raw bytes for source code and handling all other
details.
2013-06-16 18:37:53 -04:00
Brett Cannon a3c96154d2 Issue #17907: touch up the code for imp.new_module(). 2013-06-14 22:26:30 -04:00
Brett Cannon 05a647deed Issue #18192: Introduce importlib.util.MAGIC_NUMBER and document the
deprecation of imp.get_magic().
2013-06-14 19:02:34 -04:00
Brett Cannon 3fe35e6503 Issue #18193: Add importlib.reload(), documenting (but not
implementing in code) the deprecation of imp.reload().

Thanks to Berker Peksag for the patch.
2013-06-14 15:04:26 -04:00
Brett Cannon 2cefb3cf96 Various tweaks to importlib docs. 2013-05-25 11:26:11 -04:00
Brett Cannon 0dbb4c7f13 Issues #18088, 18089: Introduce
importlib.abc.Loader.init_module_attrs() and implement
importlib.abc.InspectLoader.load_module().

The importlib.abc.Loader.init_module_attrs() method sets the various
attributes on the module being loaded. It is done unconditionally to
support reloading. Typically people used
importlib.util.module_for_loader, but since that's a decorator there
was no way to override it's actions, so init_module_attrs() came into
existence to allow for overriding. This is also why module_for_loader
is now pending deprecation (having its other use replaced by
importlib.util.module_to_load).

All of this allowed for importlib.abc.InspectLoader.load_module() to
be implemented. At this point you can now implement a loader with
nothing more than get_code() (which only requires get_source();
package support requires is_package()). Thanks to init_module_attrs()
the implementation of load_module() is basically a context manager
containing 2 methods calls, a call to exec(), and a return statement.
2013-05-31 18:56:47 -04:00
Brett Cannon b60a43eabf Add a reset_name argument to importlib.util.module_to_load in order to
control whether to reset the module's __name__ attribute in case a
reload is being done.
2013-05-31 18:11:17 -04:00
Brett Cannon 177381116e Add a reference to module_to_load 2013-05-31 18:00:56 -04:00
Brett Cannon 357c9fb055 Rename importlib.util.ModuleManager to module_to_load so that the name
explains better what the context manager is providing.
2013-05-30 17:31:47 -04:00
Brett Cannon 56dfc2127f Undo a recommendation as load_module() methods might be called directly 2013-05-28 18:40:31 -04:00
Brett Cannon 3dc48d6f69 Issue #18070: importlib.util.module_for_loader() now sets __loader__
and __package__ unconditionally in order to do the right thing for
reloading.
2013-05-28 18:35:54 -04:00
Brett Cannon a22faca714 Clarify some documentation 2013-05-28 17:50:14 -04:00
Brett Cannon a3687f0d68 Introduce importlib.util.ModuleManager which is a context manager to
handle providing (and cleaning up if needed) the module to be loaded.

A future commit will use the context manager in
Lib/importlib/_bootstrap.py and thus why the code is placed there
instead of in Lib/importlib/util.py.
2013-05-28 17:29:34 -04:00
Brett Cannon 3b62ca88e4 Issue #18072: Implement get_code() for importlib.abc.InspectLoader and
ExecutionLoader.
2013-05-27 21:11:04 -04:00
Brett Cannon 9ffe85e1e8 Move importlib.abc.SourceLoader.source_to_code() to InspectLoader.
While the previous location was fine, it makes more sense to have the
method higher up in the inheritance chain, especially at a point where
get_source() is defined which is the earliest source_to_code() could
programmatically be used in the inheritance tree in importlib.abc.
2013-05-26 16:45:10 -04:00
Brett Cannon b39567a00e merge 2013-05-25 11:26:36 -04:00
Brett Cannon 4c14b5de1c #17115,17116: Have modules initialize the __package__ and __loader__
attributes to None.

The long-term goal is for people to be able to rely on these
attributes existing and checking for None to see if they have been
set. Since import itself sets these attributes when a loader does not
the only instances when the attributes are None are from someone
overloading __import__() and not using a loader or someone creating a
module from scratch.

This patch also unifies module initialization. Before you could have
different attributes with default values depending on how the module
object was created. Now the only way to not get the same default set
of attributes is to circumvent initialization by calling
ModuleType.__new__() directly.
2013-05-04 13:56:58 -04:00
Brett Cannon 1f6ee73c1e merge for issue #17357 2013-04-27 23:20:55 -04:00
Brett Cannon 4067aa272e Issue #17357: Use more stern wording for
importlib.invalidate_caches().
2013-04-27 23:20:32 -04:00
Georg Brandl 526575d537 Fix invalid markup. 2013-04-11 16:10:13 +02:00
Brett Cannon 100883f0cb Issue #17093,17566,17567: Methods from classes in importlib.abc now raise/return
the default exception/value when called instead of raising/returning
NotimplementedError/NotImplemented (except where appropriate).
This should allow for the ABCs to act as the bottom/end of the MRO with expected
default results.

As part of this work, also make importlib.abc.Loader.module_repr()
optional instead of an abstractmethod.
2013-04-09 16:59:39 -04:00
Brett Cannon 327992330e Issue #17099: Have importlib.find_loader() raise ValueError when
__loader__ is not set on a module. This brings the exception in line
with when __loader__ is None (which is equivalent to not having the
attribute defined).
2013-03-13 11:09:08 -07:00
Brett Cannon 4802becb16 Issue #17117: Have both import itself and importlib.util.set_loader()
set __loader__ on a module when set to None.

Thanks to Gökcen Eraslan for the fix.
2013-03-13 10:41:36 -07:00
Andrew Svetlov 597ba7e351 Issue #17215: Fix documentation misprints (patch by July Tikhonov) 2013-02-17 16:56:28 +02:00
Andrew Svetlov a60de4f14f Issue #17215: Fix documentation misprints (patch by July Tikhonov) 2013-02-17 16:55:58 +02:00
Eric Snow a6cfb28bd2 Issue #15627: This is simply an update to the name of a new method recently added
to importlib.abc.SourceLoader.
2012-12-04 23:43:43 -08:00
Brett Cannon 5650e4f41c Issue #15627: Add the compile_source() method to
importlib.abc.SourceLoader.

This provides an easy hook into the import system to allow for source
transformations, AST optimizations, etc.
2012-11-18 10:03:31 -05:00
Brett Cannon 10f19812b5 Merge fix for #16489 from 3.3 2012-11-17 09:33:14 -05:00
Brett Cannon 56b4ca78d8 Issue #16489: Make it clearer that importlib.find_loader() requires
the user to import any parent packages.
2012-11-17 09:30:55 -05:00
Andrew Svetlov 90a654b1dd Issue #15641: Clean up deprecated classes from importlib
Patch by Taras Lyapun.
2012-11-05 09:34:46 +02:00
Ezio Melotti 1f67e80564 Fix typo. 2012-10-21 07:24:13 +03:00
Brett Cannon 1b79918641 Issue #15640: Document importlib.abc.Finder as deprecated.
The code for the class itself isn't deprecated for
backwards-compatibility reasons, but the class shouldn't be directly
inherited by anyone anymore as the API is no longer as widely valid as
it used to be.
2012-08-17 14:08:24 -04:00
R David Murray 27bbcfb8ff Merge #15543: glossary entry for and 'universal newlines', and links to it.
Patch by Chris Jerdonek.
2012-08-15 11:11:27 -04:00
R David Murray ee0a945ae4 #15543: reflow paragraphs. 2012-08-15 11:05:36 -04:00
R David Murray 1b00f25bf9 #15543: glossary entry for and 'universal newlines', and links to it.
Patch by Chris Jerdonek.
2012-08-15 10:43:58 -04:00
Andrew Svetlov a86565465a Push importlib ABC hierarchy chart. 2012-08-13 22:19:01 +03:00
Brett Cannon a6e8581449 Minor doc formatting cleanup. 2012-08-11 19:41:27 -04:00