blob: 177f15b86790d641c5915af72b98781ffae2df6b [file] [log] [blame]
Brett Cannonafccd632009-01-20 02:21:27 +00001:mod:`importlib` -- An implementation of :keyword:`import`
2==========================================================
3
4.. module:: importlib
5 :synopsis: An implementation of the import machinery.
6
7.. moduleauthor:: Brett Cannon <brett@python.org>
8.. sectionauthor:: Brett Cannon <brett@python.org>
9
10.. versionadded:: 3.1
11
12
13Introduction
14------------
15
16The purpose of the :mod:`importlib` package is two-fold. One is to provide an
17implementation of the :keyword:`import` statement (and thus, by extension, the
18:func:`__import__` function) in Python source code. This provides an
Tarek Ziadé434caaa2009-05-14 12:48:09 +000019implementation of :keyword:`import` which is portable to any Python
Brett Cannonafccd632009-01-20 02:21:27 +000020interpreter. This also provides a reference implementation which is easier to
Brett Cannonf23e3742010-06-27 23:57:46 +000021comprehend than one implemented in a programming language other than Python.
Brett Cannonafccd632009-01-20 02:21:27 +000022
Brett Cannonf23e3742010-06-27 23:57:46 +000023Two, the components to implement :keyword:`import` are exposed in this
Brett Cannonafccd632009-01-20 02:21:27 +000024package, making it easier for users to create their own custom objects (known
Brett Cannondebb98d2009-02-16 04:18:01 +000025generically as an :term:`importer`) to participate in the import process.
Brett Cannonf23e3742010-06-27 23:57:46 +000026Details on custom importers can be found in :pep:`302`.
Brett Cannonafccd632009-01-20 02:21:27 +000027
28.. seealso::
29
30 :ref:`import`
31 The language reference for the :keyword:`import` statement.
32
33 `Packages specification <http://www.python.org/doc/essays/packages.html>`__
34 Original specification of packages. Some semantics have changed since
Georg Brandl375aec22011-01-15 17:03:02 +000035 the writing of this document (e.g. redirecting based on ``None``
Brett Cannonafccd632009-01-20 02:21:27 +000036 in :data:`sys.modules`).
37
38 The :func:`.__import__` function
Brett Cannon0e13c942010-06-29 18:26:11 +000039 The :keyword:`import` statement is syntactic sugar for this function.
Brett Cannonafccd632009-01-20 02:21:27 +000040
41 :pep:`235`
42 Import on Case-Insensitive Platforms
43
44 :pep:`263`
45 Defining Python Source Code Encodings
46
47 :pep:`302`
Brett Cannonf23e3742010-06-27 23:57:46 +000048 New Import Hooks
Brett Cannonafccd632009-01-20 02:21:27 +000049
50 :pep:`328`
51 Imports: Multi-Line and Absolute/Relative
52
53 :pep:`366`
54 Main module explicit relative imports
55
Brett Cannon8917d5e2010-01-13 19:21:00 +000056 :pep:`3120`
Brett Cannonafccd632009-01-20 02:21:27 +000057 Using UTF-8 as the Default Source Encoding
58
Brett Cannon30b7a902010-06-27 21:49:22 +000059 :pep:`3147`
60 PYC Repository Directories
61
Brett Cannonafccd632009-01-20 02:21:27 +000062
63Functions
64---------
65
Brett Cannoncb4996a2012-08-06 16:34:44 -040066.. function:: __import__(name, globals=None, locals=None, fromlist=(), level=0)
Brett Cannonafccd632009-01-20 02:21:27 +000067
Brett Cannonf23e3742010-06-27 23:57:46 +000068 An implementation of the built-in :func:`__import__` function.
Brett Cannonafccd632009-01-20 02:21:27 +000069
70.. function:: import_module(name, package=None)
71
Brett Cannon33418c82009-01-22 18:37:20 +000072 Import a module. The *name* argument specifies what module to
Brett Cannonafccd632009-01-20 02:21:27 +000073 import in absolute or relative terms
74 (e.g. either ``pkg.mod`` or ``..mod``). If the name is
Guido van Rossum09613542009-03-30 20:34:57 +000075 specified in relative terms, then the *package* argument must be set to
76 the name of the package which is to act as the anchor for resolving the
Brett Cannonafccd632009-01-20 02:21:27 +000077 package name (e.g. ``import_module('..mod', 'pkg.subpkg')`` will import
Brett Cannon2c318a12009-02-07 01:15:27 +000078 ``pkg.mod``).
Brett Cannon78246b62009-01-25 04:56:30 +000079
Brett Cannon2c318a12009-02-07 01:15:27 +000080 The :func:`import_module` function acts as a simplifying wrapper around
Brett Cannon9f4cb1c2009-04-01 23:26:47 +000081 :func:`importlib.__import__`. This means all semantics of the function are
82 derived from :func:`importlib.__import__`, including requiring the package
83 from which an import is occurring to have been previously imported
84 (i.e., *package* must already be imported). The most important difference
85 is that :func:`import_module` returns the most nested package or module
86 that was imported (e.g. ``pkg.mod``), while :func:`__import__` returns the
Guido van Rossum09613542009-03-30 20:34:57 +000087 top-level package or module (e.g. ``pkg``).
88
Brett Cannonee78a2b2012-05-12 17:43:17 -040089.. function:: find_loader(name, path=None)
90
91 Find the loader for a module, optionally within the specified *path*. If the
92 module is in :attr:`sys.modules`, then ``sys.modules[name].__loader__`` is
Brett Cannon32799232013-03-13 11:09:08 -070093 returned (unless the loader would be ``None`` or is not set, in which case
Brett Cannonee78a2b2012-05-12 17:43:17 -040094 :exc:`ValueError` is raised). Otherwise a search using :attr:`sys.meta_path`
95 is done. ``None`` is returned if no loader is found.
96
Brett Cannon56b4ca72012-11-17 09:30:55 -050097 A dotted name does not have its parent's implicitly imported as that requires
98 loading them and that may not be desired. To properly import a submodule you
99 will need to import all parent packages of the submodule and use the correct
100 argument to *path*.
Brett Cannonee78a2b2012-05-12 17:43:17 -0400101
Brett Cannon32799232013-03-13 11:09:08 -0700102 .. versionadded:: 3.3
103
104 .. versionchanged:: 3.4
105 If ``__loader__`` is not set, raise :exc:`ValueError`, just like when the
106 attribute is set to ``None``.
107
Antoine Pitrouc541f8e2012-02-20 01:48:16 +0100108.. function:: invalidate_caches()
109
Brett Cannonf4dc9202012-08-10 12:21:12 -0400110 Invalidate the internal caches of finders stored at
111 :data:`sys.meta_path`. If a finder implements ``invalidate_caches()`` then it
Brett Cannon4067aa22013-04-27 23:20:32 -0400112 will be called to perform the invalidation. This function should be called
113 if any modules are created/installed while your program is running to
114 guarantee all finders will notice the new module's existence.
Antoine Pitrouc541f8e2012-02-20 01:48:16 +0100115
116 .. versionadded:: 3.3
117
Brett Cannon3fe35e62013-06-14 15:04:26 -0400118.. function:: reload(module)
119
120 Reload a previously imported *module*. The argument must be a module object,
121 so it must have been successfully imported before. This is useful if you
122 have edited the module source file using an external editor and want to try
123 out the new version without leaving the Python interpreter. The return value
Brett Cannon8ad37862013-10-25 13:52:46 -0400124 is the module object (which can be different if re-importing causes a
125 different object to be placed in :data:`sys.modules`).
Brett Cannon3fe35e62013-06-14 15:04:26 -0400126
Brett Cannon8ad37862013-10-25 13:52:46 -0400127 When :func:`reload` is executed:
Brett Cannon3fe35e62013-06-14 15:04:26 -0400128
129 * Python modules' code is recompiled and the module-level code re-executed,
130 defining a new set of objects which are bound to names in the module's
131 dictionary by reusing the :term:`loader` which originally loaded the
132 module. The ``init`` function of extension modules is not called a second
133 time.
134
135 * As with all other objects in Python the old objects are only reclaimed
136 after their reference counts drop to zero.
137
138 * The names in the module namespace are updated to point to any new or
139 changed objects.
140
141 * Other references to the old objects (such as names external to the module) are
142 not rebound to refer to the new objects and must be updated in each namespace
143 where they occur if that is desired.
144
145 There are a number of other caveats:
146
147 If a module is syntactically correct but its initialization fails, the first
148 :keyword:`import` statement for it does not bind its name locally, but does
149 store a (partially initialized) module object in ``sys.modules``. To reload
150 the module you must first :keyword:`import` it again (this will bind the name
151 to the partially initialized module object) before you can :func:`reload` it.
152
153 When a module is reloaded, its dictionary (containing the module's global
154 variables) is retained. Redefinitions of names will override the old
155 definitions, so this is generally not a problem. If the new version of a
156 module does not define a name that was defined by the old version, the old
157 definition remains. This feature can be used to the module's advantage if it
158 maintains a global table or cache of objects --- with a :keyword:`try`
159 statement it can test for the table's presence and skip its initialization if
160 desired::
161
162 try:
163 cache
164 except NameError:
165 cache = {}
166
167 It is legal though generally not very useful to reload built-in or
168 dynamically loaded modules (this is not true for e.g. :mod:`sys`,
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300169 :mod:`__main__`, :mod:`builtins` and other key modules where reloading is
Brett Cannon3fe35e62013-06-14 15:04:26 -0400170 frowned upon). In many cases, however, extension modules are not designed to
171 be initialized more than once, and may fail in arbitrary ways when reloaded.
172
173 If a module imports objects from another module using :keyword:`from` ...
174 :keyword:`import` ..., calling :func:`reload` for the other module does not
175 redefine the objects imported from it --- one way around this is to
176 re-execute the :keyword:`from` statement, another is to use :keyword:`import`
177 and qualified names (*module.name*) instead.
178
179 If a module instantiates instances of a class, reloading the module that
180 defines the class does not affect the method definitions of the instances ---
181 they continue to use the old class definition. The same is true for derived
182 classes.
183
184 .. versionadded:: 3.4
185
Brett Cannon78246b62009-01-25 04:56:30 +0000186
Brett Cannon2a922ed2009-03-09 03:35:50 +0000187:mod:`importlib.abc` -- Abstract base classes related to import
188---------------------------------------------------------------
189
190.. module:: importlib.abc
191 :synopsis: Abstract base classes related to import
192
193The :mod:`importlib.abc` module contains all of the core abstract base classes
194used by :keyword:`import`. Some subclasses of the core abstract base classes
195are also provided to help in implementing the core ABCs.
196
Andrew Svetlova8656542012-08-13 22:19:01 +0300197ABC hierarchy::
198
199 object
Brett Cannon1b799182012-08-17 14:08:24 -0400200 +-- Finder (deprecated)
Andrew Svetlova8656542012-08-13 22:19:01 +0300201 | +-- MetaPathFinder
202 | +-- PathEntryFinder
203 +-- Loader
204 +-- ResourceLoader --------+
205 +-- InspectLoader |
206 +-- ExecutionLoader --+
207 +-- FileLoader
208 +-- SourceLoader
Andrew Svetlova8656542012-08-13 22:19:01 +0300209
Brett Cannon2a922ed2009-03-09 03:35:50 +0000210
211.. class:: Finder
212
Brett Cannon1b799182012-08-17 14:08:24 -0400213 An abstract base class representing a :term:`finder`.
214
215 .. deprecated:: 3.3
216 Use :class:`MetaPathFinder` or :class:`PathEntryFinder` instead.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000217
Brett Cannonf4dc9202012-08-10 12:21:12 -0400218 .. method:: find_module(fullname, path=None)
Brett Cannonb46a1792012-02-27 18:15:42 -0500219
Brett Cannonf4dc9202012-08-10 12:21:12 -0400220 An abstact method for finding a :term:`loader` for the specified
221 module. Originally specified in :pep:`302`, this method was meant
222 for use in :data:`sys.meta_path` and in the path-based import subsystem.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000223
Brett Cannon100883f2013-04-09 16:59:39 -0400224 .. versionchanged:: 3.4
225 Returns ``None`` when called instead of raising
226 :exc:`NotImplementedError`.
227
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000228
Brett Cannon077ef452012-08-02 17:50:06 -0400229.. class:: MetaPathFinder
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000230
Brett Cannonf4dc9202012-08-10 12:21:12 -0400231 An abstract base class representing a :term:`meta path finder`. For
232 compatibility, this is a subclass of :class:`Finder`.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000233
234 .. versionadded:: 3.3
235
236 .. method:: find_module(fullname, path)
237
238 An abstract method for finding a :term:`loader` for the specified
239 module. If this is a top-level import, *path* will be ``None``.
Ezio Melotti1f67e802012-10-21 07:24:13 +0300240 Otherwise, this is a search for a subpackage or module and *path*
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000241 will be the value of :attr:`__path__` from the parent
242 package. If a loader cannot be found, ``None`` is returned.
243
Brett Cannon100883f2013-04-09 16:59:39 -0400244 .. versionchanged:: 3.4
245 Returns ``None`` when called instead of raising
246 :exc:`NotImplementedError`.
247
Brett Cannonf4dc9202012-08-10 12:21:12 -0400248 .. method:: invalidate_caches()
249
250 An optional method which, when called, should invalidate any internal
Brett Cannona6e85812012-08-11 19:41:27 -0400251 cache used by the finder. Used by :func:`importlib.invalidate_caches`
252 when invalidating the caches of all finders on :data:`sys.meta_path`.
Brett Cannonf4dc9202012-08-10 12:21:12 -0400253
Brett Cannon100883f2013-04-09 16:59:39 -0400254 .. versionchanged:: 3.4
255 Returns ``None`` when called instead of ``NotImplemented``.
256
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000257
Brett Cannon077ef452012-08-02 17:50:06 -0400258.. class:: PathEntryFinder
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000259
Brett Cannonf4dc9202012-08-10 12:21:12 -0400260 An abstract base class representing a :term:`path entry finder`. Though
261 it bears some similarities to :class:`MetaPathFinder`, ``PathEntryFinder``
262 is meant for use only within the path-based import subsystem provided
263 by :class:`PathFinder`. This ABC is a subclass of :class:`Finder` for
Brett Cannon100883f2013-04-09 16:59:39 -0400264 compatibility reasons only.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000265
266 .. versionadded:: 3.3
267
Brett Cannon4067aa22013-04-27 23:20:32 -0400268 .. method:: find_loader(fullname)
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000269
270 An abstract method for finding a :term:`loader` for the specified
Brett Cannonf4dc9202012-08-10 12:21:12 -0400271 module. Returns a 2-tuple of ``(loader, portion)`` where ``portion``
272 is a sequence of file system locations contributing to part of a namespace
273 package. The loader may be ``None`` while specifying ``portion`` to
274 signify the contribution of the file system locations to a namespace
275 package. An empty list can be used for ``portion`` to signify the loader
Brett Cannon100883f2013-04-09 16:59:39 -0400276 is not part of a namespace package. If ``loader`` is ``None`` and
277 ``portion`` is the empty list then no loader or location for a namespace
278 package were found (i.e. failure to find anything for the module).
279
280 .. versionchanged:: 3.4
281 Returns ``(None, [])`` instead of raising :exc:`NotImplementedError`.
Brett Cannonf4dc9202012-08-10 12:21:12 -0400282
Brett Cannon4067aa22013-04-27 23:20:32 -0400283 .. method:: find_module(fullname)
Brett Cannonf4dc9202012-08-10 12:21:12 -0400284
285 A concrete implementation of :meth:`Finder.find_module` which is
286 equivalent to ``self.find_loader(fullname)[0]``.
287
288 .. method:: invalidate_caches()
289
290 An optional method which, when called, should invalidate any internal
Brett Cannona6e85812012-08-11 19:41:27 -0400291 cache used by the finder. Used by :meth:`PathFinder.invalidate_caches`
Brett Cannonf4dc9202012-08-10 12:21:12 -0400292 when invalidating the caches of all cached finders.
Brett Cannonb46a1792012-02-27 18:15:42 -0500293
Brett Cannon2a922ed2009-03-09 03:35:50 +0000294
295.. class:: Loader
296
297 An abstract base class for a :term:`loader`.
Guido van Rossum09613542009-03-30 20:34:57 +0000298 See :pep:`302` for the exact definition for a loader.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000299
Brett Cannon9c751b72009-03-09 16:28:16 +0000300 .. method:: load_module(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000301
302 An abstract method for loading a module. If the module cannot be
303 loaded, :exc:`ImportError` is raised, otherwise the loaded module is
304 returned.
305
Guido van Rossum09613542009-03-30 20:34:57 +0000306 If the requested module already exists in :data:`sys.modules`, that
Brett Cannon2a922ed2009-03-09 03:35:50 +0000307 module should be used and reloaded.
Guido van Rossum09613542009-03-30 20:34:57 +0000308 Otherwise the loader should create a new module and insert it into
309 :data:`sys.modules` before any loading begins, to prevent recursion
310 from the import. If the loader inserted a module and the load fails, it
Brett Cannon2a922ed2009-03-09 03:35:50 +0000311 must be removed by the loader from :data:`sys.modules`; modules already
312 in :data:`sys.modules` before the loader began execution should be left
Eric Snowb523f842013-11-22 09:05:39 -0700313 alone (see :func:`importlib.util.module_for_loader`).
Brett Cannon2a922ed2009-03-09 03:35:50 +0000314
Guido van Rossum09613542009-03-30 20:34:57 +0000315 The loader should set several attributes on the module.
316 (Note that some of these attributes can change when a module is
Eric Snowb523f842013-11-22 09:05:39 -0700317 reloaded):
Brett Cannon2a922ed2009-03-09 03:35:50 +0000318
319 - :attr:`__name__`
320 The name of the module.
321
322 - :attr:`__file__`
323 The path to where the module data is stored (not set for built-in
324 modules).
325
Brett Cannon2cefb3c2013-05-25 11:26:11 -0400326 - :attr:`__cached__`
327 The path to where a compiled version of the module is/should be
328 stored (not set when the attribute would be inappropriate).
329
Brett Cannon2a922ed2009-03-09 03:35:50 +0000330 - :attr:`__path__`
Guido van Rossum09613542009-03-30 20:34:57 +0000331 A list of strings specifying the search path within a
Brett Cannon2a922ed2009-03-09 03:35:50 +0000332 package. This attribute is not set on modules.
333
334 - :attr:`__package__`
335 The parent package for the module/package. If the module is
336 top-level then it has a value of the empty string. The
Brett Cannon100883f2013-04-09 16:59:39 -0400337 :func:`importlib.util.module_for_loader` decorator can handle the
338 details for :attr:`__package__`.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000339
340 - :attr:`__loader__`
Brett Cannon100883f2013-04-09 16:59:39 -0400341 The loader used to load the module. The
342 :func:`importlib.util.module_for_loader` decorator can handle the
343 details for :attr:`__package__`.
344
345 .. versionchanged:: 3.4
346 Raise :exc:`ImportError` when called instead of
347 :exc:`NotImplementedError`.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000348
Barry Warsawd7d21942012-07-29 16:36:17 -0400349 .. method:: module_repr(module)
350
Brett Cannon100883f2013-04-09 16:59:39 -0400351 An optional method which when implemented calculates and returns the
352 given module's repr, as a string. The module type's default repr() will
353 use the result of this method as appropriate.
Barry Warsawd7d21942012-07-29 16:36:17 -0400354
Georg Brandl526575d2013-04-11 16:10:13 +0200355 .. versionadded:: 3.3
Barry Warsawd7d21942012-07-29 16:36:17 -0400356
Brett Cannon100883f2013-04-09 16:59:39 -0400357 .. versionchanged:: 3.4
Georg Brandl526575d2013-04-11 16:10:13 +0200358 Made optional instead of an abstractmethod.
Brett Cannon100883f2013-04-09 16:59:39 -0400359
Brett Cannon2a922ed2009-03-09 03:35:50 +0000360
361.. class:: ResourceLoader
362
363 An abstract base class for a :term:`loader` which implements the optional
364 :pep:`302` protocol for loading arbitrary resources from the storage
365 back-end.
366
Brett Cannon9c751b72009-03-09 16:28:16 +0000367 .. method:: get_data(path)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000368
369 An abstract method to return the bytes for the data located at *path*.
Guido van Rossum09613542009-03-30 20:34:57 +0000370 Loaders that have a file-like storage back-end
Brett Cannon16248a42009-04-01 20:47:14 +0000371 that allows storing arbitrary data
Guido van Rossum09613542009-03-30 20:34:57 +0000372 can implement this abstract method to give direct access
Brett Cannon2a922ed2009-03-09 03:35:50 +0000373 to the data stored. :exc:`IOError` is to be raised if the *path* cannot
374 be found. The *path* is expected to be constructed using a module's
Brett Cannon16248a42009-04-01 20:47:14 +0000375 :attr:`__file__` attribute or an item from a package's :attr:`__path__`.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000376
Brett Cannon100883f2013-04-09 16:59:39 -0400377 .. versionchanged:: 3.4
378 Raises :exc:`IOError` instead of :exc:`NotImplementedError`.
379
Brett Cannon2a922ed2009-03-09 03:35:50 +0000380
381.. class:: InspectLoader
382
383 An abstract base class for a :term:`loader` which implements the optional
Guido van Rossum09613542009-03-30 20:34:57 +0000384 :pep:`302` protocol for loaders that inspect modules.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000385
Brett Cannona113ac52009-03-15 01:41:33 +0000386 .. method:: get_code(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000387
Brett Cannon3b62ca82013-05-27 21:11:04 -0400388 Return the code object for a module.
389 ``None`` should be returned if the module does not have a code object
Brett Cannona113ac52009-03-15 01:41:33 +0000390 (e.g. built-in module). :exc:`ImportError` is raised if loader cannot
391 find the requested module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000392
Brett Cannon3b62ca82013-05-27 21:11:04 -0400393 .. note::
394 While the method has a default implementation, it is suggested that
395 it be overridden if possible for performance.
396
R David Murray1b00f252012-08-15 10:43:58 -0400397 .. index::
398 single: universal newlines; importlib.abc.InspectLoader.get_source method
399
Brett Cannon100883f2013-04-09 16:59:39 -0400400 .. versionchanged:: 3.4
Brett Cannon3b62ca82013-05-27 21:11:04 -0400401 No longer abstract and a concrete implementation is provided.
Brett Cannon100883f2013-04-09 16:59:39 -0400402
Brett Cannon9c751b72009-03-09 16:28:16 +0000403 .. method:: get_source(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000404
405 An abstract method to return the source of a module. It is returned as
R David Murray1b00f252012-08-15 10:43:58 -0400406 a text string using :term:`universal newlines`, translating all
R David Murrayee0a9452012-08-15 11:05:36 -0400407 recognized line separators into ``'\n'`` characters. Returns ``None``
408 if no source is available (e.g. a built-in module). Raises
409 :exc:`ImportError` if the loader cannot find the module specified.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000410
Brett Cannon100883f2013-04-09 16:59:39 -0400411 .. versionchanged:: 3.4
412 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
413
Brett Cannona113ac52009-03-15 01:41:33 +0000414 .. method:: is_package(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000415
Brett Cannona113ac52009-03-15 01:41:33 +0000416 An abstract method to return a true value if the module is a package, a
417 false value otherwise. :exc:`ImportError` is raised if the
418 :term:`loader` cannot find the module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000419
Brett Cannon100883f2013-04-09 16:59:39 -0400420 .. versionchanged:: 3.4
421 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
422
Brett Cannon9ffe85e2013-05-26 16:45:10 -0400423 .. method:: source_to_code(data, path='<string>')
424
425 Create a code object from Python source.
426
427 The *data* argument can be whatever the :func:`compile` function
428 supports (i.e. string or bytes). The *path* argument should be
429 the "path" to where the source code originated from, which can be an
430 abstract concept (e.g. location in a zip file).
431
432 .. versionadded:: 3.4
433
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400434 .. method:: load_module(fullname)
435
436 Implementation of :meth:`Loader.load_module`.
437
Brett Cannon2a922ed2009-03-09 03:35:50 +0000438
Brett Cannon69194272009-07-20 04:23:48 +0000439.. class:: ExecutionLoader
440
441 An abstract base class which inherits from :class:`InspectLoader` that,
Brett Cannon23460292009-07-20 22:59:00 +0000442 when implemented, helps a module to be executed as a script. The ABC
Brett Cannon69194272009-07-20 04:23:48 +0000443 represents an optional :pep:`302` protocol.
444
445 .. method:: get_filename(fullname)
446
Brett Cannonf23e3742010-06-27 23:57:46 +0000447 An abstract method that is to return the value of :attr:`__file__` for
Brett Cannon69194272009-07-20 04:23:48 +0000448 the specified module. If no path is available, :exc:`ImportError` is
449 raised.
450
Brett Cannonf23e3742010-06-27 23:57:46 +0000451 If source code is available, then the method should return the path to
452 the source file, regardless of whether a bytecode was used to load the
453 module.
454
Brett Cannon100883f2013-04-09 16:59:39 -0400455 .. versionchanged:: 3.4
456 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
457
Brett Cannonf23e3742010-06-27 23:57:46 +0000458
Brett Cannon938d44d2012-04-22 19:58:33 -0400459.. class:: FileLoader(fullname, path)
460
461 An abstract base class which inherits from :class:`ResourceLoader` and
Andrew Svetlova60de4f2013-02-17 16:55:58 +0200462 :class:`ExecutionLoader`, providing concrete implementations of
Brett Cannon938d44d2012-04-22 19:58:33 -0400463 :meth:`ResourceLoader.get_data` and :meth:`ExecutionLoader.get_filename`.
464
465 The *fullname* argument is a fully resolved name of the module the loader is
466 to handle. The *path* argument is the path to the file for the module.
467
468 .. versionadded:: 3.3
469
470 .. attribute:: name
471
472 The name of the module the loader can handle.
473
474 .. attribute:: path
475
476 Path to the file of the module.
477
Barry Warsawd7d21942012-07-29 16:36:17 -0400478 .. method:: load_module(fullname)
Brett Cannonc0499522012-05-11 14:48:41 -0400479
Barry Warsawd7d21942012-07-29 16:36:17 -0400480 Calls super's ``load_module()``.
Brett Cannonc0499522012-05-11 14:48:41 -0400481
Brett Cannon938d44d2012-04-22 19:58:33 -0400482 .. method:: get_filename(fullname)
483
Barry Warsawd7d21942012-07-29 16:36:17 -0400484 Returns :attr:`path`.
Brett Cannon938d44d2012-04-22 19:58:33 -0400485
486 .. method:: get_data(path)
487
Brett Cannon3b62ca82013-05-27 21:11:04 -0400488 Reads *path* as a binary file and returns the bytes from it.
Brett Cannon938d44d2012-04-22 19:58:33 -0400489
490
Brett Cannonf23e3742010-06-27 23:57:46 +0000491.. class:: SourceLoader
492
493 An abstract base class for implementing source (and optionally bytecode)
494 file loading. The class inherits from both :class:`ResourceLoader` and
495 :class:`ExecutionLoader`, requiring the implementation of:
496
497 * :meth:`ResourceLoader.get_data`
498 * :meth:`ExecutionLoader.get_filename`
Brett Cannon6dfbff32010-07-21 09:48:31 +0000499 Should only return the path to the source file; sourceless
Brett Cannona81d5272013-06-16 19:17:12 -0400500 loading is not supported.
Brett Cannonf23e3742010-06-27 23:57:46 +0000501
502 The abstract methods defined by this class are to add optional bytecode
Brett Cannon5650e4f2012-11-18 10:03:31 -0500503 file support. Not implementing these optional methods (or causing them to
504 raise :exc:`NotImplementedError`) causes the loader to
Brett Cannonf23e3742010-06-27 23:57:46 +0000505 only work with source code. Implementing the methods allows the loader to
506 work with source *and* bytecode files; it does not allow for *sourceless*
507 loading where only bytecode is provided. Bytecode files are an
508 optimization to speed up loading by removing the parsing step of Python's
509 compiler, and so no bytecode-specific API is exposed.
510
Brett Cannon773468f2012-08-02 17:35:34 -0400511 .. method:: path_stats(path)
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100512
513 Optional abstract method which returns a :class:`dict` containing
514 metadata about the specifed path. Supported dictionary keys are:
515
516 - ``'mtime'`` (mandatory): an integer or floating-point number
517 representing the modification time of the source code;
518 - ``'size'`` (optional): the size in bytes of the source code.
519
520 Any other keys in the dictionary are ignored, to allow for future
Brett Cannon100883f2013-04-09 16:59:39 -0400521 extensions. If the path cannot be handled, :exc:`IOError` is raised.
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100522
523 .. versionadded:: 3.3
524
Brett Cannon100883f2013-04-09 16:59:39 -0400525 .. versionchanged:: 3.4
526 Raise :exc:`IOError` instead of :exc:`NotImplementedError`.
527
Brett Cannon773468f2012-08-02 17:35:34 -0400528 .. method:: path_mtime(path)
Brett Cannonf23e3742010-06-27 23:57:46 +0000529
530 Optional abstract method which returns the modification time for the
531 specified path.
532
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100533 .. deprecated:: 3.3
534 This method is deprecated in favour of :meth:`path_stats`. You don't
535 have to implement it, but it is still available for compatibility
Brett Cannon100883f2013-04-09 16:59:39 -0400536 purposes. Raise :exc:`IOError` if the path cannot be handled.
537
538 .. versionchanged:: 3.4
539 Raise :exc:`IOError` instead of :exc:`NotImplementedError`.
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100540
Brett Cannon773468f2012-08-02 17:35:34 -0400541 .. method:: set_data(path, data)
Brett Cannonf23e3742010-06-27 23:57:46 +0000542
543 Optional abstract method which writes the specified bytes to a file
Brett Cannon61b14252010-07-03 21:48:25 +0000544 path. Any intermediate directories which do not exist are to be created
545 automatically.
546
547 When writing to the path fails because the path is read-only
Brett Cannon2cefb3c2013-05-25 11:26:11 -0400548 (:attr:`errno.EACCES`/:exc:`PermissionError`), do not propagate the
549 exception.
Brett Cannonf23e3742010-06-27 23:57:46 +0000550
Brett Cannon100883f2013-04-09 16:59:39 -0400551 .. versionchanged:: 3.4
552 No longer raises :exc:`NotImplementedError` when called.
553
Brett Cannon773468f2012-08-02 17:35:34 -0400554 .. method:: get_code(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000555
556 Concrete implementation of :meth:`InspectLoader.get_code`.
557
Brett Cannon773468f2012-08-02 17:35:34 -0400558 .. method:: load_module(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000559
560 Concrete implementation of :meth:`Loader.load_module`.
561
Brett Cannon773468f2012-08-02 17:35:34 -0400562 .. method:: get_source(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000563
564 Concrete implementation of :meth:`InspectLoader.get_source`.
565
Brett Cannon773468f2012-08-02 17:35:34 -0400566 .. method:: is_package(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000567
568 Concrete implementation of :meth:`InspectLoader.is_package`. A module
Brett Cannonea0b8232012-06-15 20:00:53 -0400569 is determined to be a package if its file path (as provided by
570 :meth:`ExecutionLoader.get_filename`) is a file named
571 ``__init__`` when the file extension is removed **and** the module name
572 itself does not end in ``__init__``.
Brett Cannonf23e3742010-06-27 23:57:46 +0000573
Brett Cannon69194272009-07-20 04:23:48 +0000574
Brett Cannon78246b62009-01-25 04:56:30 +0000575:mod:`importlib.machinery` -- Importers and path hooks
576------------------------------------------------------
577
578.. module:: importlib.machinery
579 :synopsis: Importers and path hooks
580
581This module contains the various objects that help :keyword:`import`
582find and load modules.
583
Brett Cannoncb66eb02012-05-11 12:58:42 -0400584.. attribute:: SOURCE_SUFFIXES
585
586 A list of strings representing the recognized file suffixes for source
587 modules.
588
589 .. versionadded:: 3.3
590
591.. attribute:: DEBUG_BYTECODE_SUFFIXES
592
593 A list of strings representing the file suffixes for non-optimized bytecode
594 modules.
595
596 .. versionadded:: 3.3
597
598.. attribute:: OPTIMIZED_BYTECODE_SUFFIXES
599
600 A list of strings representing the file suffixes for optimized bytecode
601 modules.
602
603 .. versionadded:: 3.3
604
605.. attribute:: BYTECODE_SUFFIXES
606
607 A list of strings representing the recognized file suffixes for bytecode
608 modules. Set to either :attr:`DEBUG_BYTECODE_SUFFIXES` or
609 :attr:`OPTIMIZED_BYTECODE_SUFFIXES` based on whether ``__debug__`` is true.
610
611 .. versionadded:: 3.3
612
613.. attribute:: EXTENSION_SUFFIXES
614
Nick Coghlan76e07702012-07-18 23:14:57 +1000615 A list of strings representing the recognized file suffixes for
Brett Cannoncb66eb02012-05-11 12:58:42 -0400616 extension modules.
617
618 .. versionadded:: 3.3
619
Nick Coghlanc5afd422012-07-18 23:59:08 +1000620.. function:: all_suffixes()
Nick Coghlan76e07702012-07-18 23:14:57 +1000621
622 Returns a combined list of strings representing all file suffixes for
Nick Coghlanc5afd422012-07-18 23:59:08 +1000623 modules recognized by the standard import machinery. This is a
Nick Coghlan76e07702012-07-18 23:14:57 +1000624 helper for code which simply needs to know if a filesystem path
Nick Coghlanc5afd422012-07-18 23:59:08 +1000625 potentially refers to a module without needing any details on the kind
626 of module (for example, :func:`inspect.getmodulename`)
Nick Coghlan76e07702012-07-18 23:14:57 +1000627
628 .. versionadded:: 3.3
629
630
Brett Cannon78246b62009-01-25 04:56:30 +0000631.. class:: BuiltinImporter
632
Brett Cannon2a922ed2009-03-09 03:35:50 +0000633 An :term:`importer` for built-in modules. All known built-in modules are
634 listed in :data:`sys.builtin_module_names`. This class implements the
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000635 :class:`importlib.abc.MetaPathFinder` and
636 :class:`importlib.abc.InspectLoader` ABCs.
Brett Cannon78246b62009-01-25 04:56:30 +0000637
638 Only class methods are defined by this class to alleviate the need for
639 instantiation.
640
Brett Cannon78246b62009-01-25 04:56:30 +0000641
642.. class:: FrozenImporter
643
Brett Cannon2a922ed2009-03-09 03:35:50 +0000644 An :term:`importer` for frozen modules. This class implements the
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000645 :class:`importlib.abc.MetaPathFinder` and
646 :class:`importlib.abc.InspectLoader` ABCs.
Brett Cannon78246b62009-01-25 04:56:30 +0000647
648 Only class methods are defined by this class to alleviate the need for
649 instantiation.
650
Brett Cannondebb98d2009-02-16 04:18:01 +0000651
Nick Coghlanff794862012-08-02 21:45:24 +1000652.. class:: WindowsRegistryFinder
653
654 :term:`Finder` for modules declared in the Windows registry. This class
Nick Coghlan49417742012-08-02 23:03:58 +1000655 implements the :class:`importlib.abc.Finder` ABC.
Nick Coghlanff794862012-08-02 21:45:24 +1000656
657 Only class methods are defined by this class to alleviate the need for
658 instantiation.
659
660 .. versionadded:: 3.3
661
662
Brett Cannondebb98d2009-02-16 04:18:01 +0000663.. class:: PathFinder
664
Brett Cannon1b799182012-08-17 14:08:24 -0400665 A :term:`Finder` for :data:`sys.path` and package ``__path__`` attributes.
666 This class implements the :class:`importlib.abc.MetaPathFinder` ABC.
Brett Cannondebb98d2009-02-16 04:18:01 +0000667
Brett Cannon1b799182012-08-17 14:08:24 -0400668 Only class methods are defined by this class to alleviate the need for
669 instantiation.
Brett Cannondebb98d2009-02-16 04:18:01 +0000670
Brett Cannon1b799182012-08-17 14:08:24 -0400671 .. classmethod:: find_module(fullname, path=None)
Brett Cannondebb98d2009-02-16 04:18:01 +0000672
Brett Cannon1b799182012-08-17 14:08:24 -0400673 Class method that attempts to find a :term:`loader` for the module
674 specified by *fullname* on :data:`sys.path` or, if defined, on
675 *path*. For each path entry that is searched,
676 :data:`sys.path_importer_cache` is checked. If a non-false object is
Brett Cannon2cefb3c2013-05-25 11:26:11 -0400677 found then it is used as the :term:`path entry finder` to look for the
678 module being searched for. If no entry is found in
Brett Cannon1b799182012-08-17 14:08:24 -0400679 :data:`sys.path_importer_cache`, then :data:`sys.path_hooks` is
680 searched for a finder for the path entry and, if found, is stored in
681 :data:`sys.path_importer_cache` along with being queried about the
682 module. If no finder is ever found then ``None`` is both stored in
683 the cache and returned.
Brett Cannond2e7b332009-02-17 02:45:03 +0000684
Brett Cannonf4dc9202012-08-10 12:21:12 -0400685 .. classmethod:: invalidate_caches()
686
Brett Cannon1b799182012-08-17 14:08:24 -0400687 Calls :meth:`importlib.abc.PathEntryFinder.invalidate_caches` on all
688 finders stored in :attr:`sys.path_importer_cache`.
Brett Cannonf4dc9202012-08-10 12:21:12 -0400689
Brett Cannon27e27f72013-10-18 11:39:04 -0400690 .. versionchanged:: 3.4
Georg Brandl0f5bff22013-10-19 17:46:38 +0200691 Calls objects in :data:`sys.path_hooks` with the current working directory
Brett Cannon27e27f72013-10-18 11:39:04 -0400692 for ``''`` (i.e. the empty string).
693
Brett Cannond2e7b332009-02-17 02:45:03 +0000694
Brett Cannon938d44d2012-04-22 19:58:33 -0400695.. class:: FileFinder(path, \*loader_details)
696
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000697 A concrete implementation of :class:`importlib.abc.PathEntryFinder` which
698 caches results from the file system.
Brett Cannon938d44d2012-04-22 19:58:33 -0400699
700 The *path* argument is the directory for which the finder is in charge of
701 searching.
702
Brett Cannonac9f2f32012-08-10 13:47:54 -0400703 The *loader_details* argument is a variable number of 2-item tuples each
704 containing a loader and a sequence of file suffixes the loader recognizes.
Brett Cannon29b2f172013-06-21 18:31:55 -0400705 The loaders are expected to be callables which accept two arguments of
706 the module's name and the path to the file found.
Brett Cannon938d44d2012-04-22 19:58:33 -0400707
708 The finder will cache the directory contents as necessary, making stat calls
709 for each module search to verify the cache is not outdated. Because cache
710 staleness relies upon the granularity of the operating system's state
711 information of the file system, there is a potential race condition of
712 searching for a module, creating a new file, and then searching for the
713 module the new file represents. If the operations happen fast enough to fit
714 within the granularity of stat calls, then the module search will fail. To
715 prevent this from happening, when you create a module dynamically, make sure
716 to call :func:`importlib.invalidate_caches`.
717
718 .. versionadded:: 3.3
719
720 .. attribute:: path
721
722 The path the finder will search in.
723
Brett Cannon1d753822013-06-16 19:06:55 -0400724 .. method:: find_loader(fullname)
Brett Cannon938d44d2012-04-22 19:58:33 -0400725
726 Attempt to find the loader to handle *fullname* within :attr:`path`.
727
728 .. method:: invalidate_caches()
729
730 Clear out the internal cache.
731
732 .. classmethod:: path_hook(\*loader_details)
733
734 A class method which returns a closure for use on :attr:`sys.path_hooks`.
735 An instance of :class:`FileFinder` is returned by the closure using the
736 path argument given to the closure directly and *loader_details*
737 indirectly.
738
739 If the argument to the closure is not an existing directory,
740 :exc:`ImportError` is raised.
741
742
743.. class:: SourceFileLoader(fullname, path)
744
745 A concrete implementation of :class:`importlib.abc.SourceLoader` by
746 subclassing :class:`importlib.abc.FileLoader` and providing some concrete
747 implementations of other methods.
748
749 .. versionadded:: 3.3
750
751 .. attribute:: name
752
753 The name of the module that this loader will handle.
754
755 .. attribute:: path
756
757 The path to the source file.
758
759 .. method:: is_package(fullname)
760
761 Return true if :attr:`path` appears to be for a package.
762
763 .. method:: path_stats(path)
764
765 Concrete implementation of :meth:`importlib.abc.SourceLoader.path_stats`.
766
767 .. method:: set_data(path, data)
768
769 Concrete implementation of :meth:`importlib.abc.SourceLoader.set_data`.
770
Brett Cannon938d44d2012-04-22 19:58:33 -0400771
Marc-Andre Lemburg4fe29c92012-04-25 02:31:37 +0200772.. class:: SourcelessFileLoader(fullname, path)
Brett Cannon938d44d2012-04-22 19:58:33 -0400773
774 A concrete implementation of :class:`importlib.abc.FileLoader` which can
775 import bytecode files (i.e. no source code files exist).
776
Marc-Andre Lemburg4fe29c92012-04-25 02:31:37 +0200777 Please note that direct use of bytecode files (and thus not source code
778 files) inhibits your modules from being usable by all Python
779 implementations or new versions of Python which change the bytecode
780 format.
Brett Cannon938d44d2012-04-22 19:58:33 -0400781
782 .. versionadded:: 3.3
783
784 .. attribute:: name
785
786 The name of the module the loader will handle.
787
788 .. attribute:: path
789
790 The path to the bytecode file.
791
792 .. method:: is_package(fullname)
793
794 Determines if the module is a package based on :attr:`path`.
795
796 .. method:: get_code(fullname)
797
798 Returns the code object for :attr:`name` created from :attr:`path`.
799
800 .. method:: get_source(fullname)
801
802 Returns ``None`` as bytecode files have no source when this loader is
803 used.
804
Brett Cannon938d44d2012-04-22 19:58:33 -0400805
806.. class:: ExtensionFileLoader(fullname, path)
807
Eric Snow51794452013-10-03 12:08:55 -0600808 A concrete implementation of :class:`importlib.abc.ExecutionLoader` for
Brett Cannon938d44d2012-04-22 19:58:33 -0400809 extension modules.
810
811 The *fullname* argument specifies the name of the module the loader is to
812 support. The *path* argument is the path to the extension module's file.
813
814 .. versionadded:: 3.3
815
816 .. attribute:: name
817
818 Name of the module the loader supports.
819
820 .. attribute:: path
821
822 Path to the extension module.
823
Barry Warsawd7d21942012-07-29 16:36:17 -0400824 .. method:: load_module(fullname)
Brett Cannon938d44d2012-04-22 19:58:33 -0400825
Brett Cannonc0499522012-05-11 14:48:41 -0400826 Loads the extension module if and only if *fullname* is the same as
827 :attr:`name` or is ``None``.
Brett Cannon938d44d2012-04-22 19:58:33 -0400828
829 .. method:: is_package(fullname)
830
Brett Cannonac9f2f32012-08-10 13:47:54 -0400831 Returns ``True`` if the file path points to a package's ``__init__``
832 module based on :attr:`EXTENSION_SUFFIXES`.
Brett Cannon938d44d2012-04-22 19:58:33 -0400833
834 .. method:: get_code(fullname)
835
836 Returns ``None`` as extension modules lack a code object.
837
838 .. method:: get_source(fullname)
839
840 Returns ``None`` as extension modules do not have source code.
841
Eric Snow51794452013-10-03 12:08:55 -0600842 .. method:: get_filename(fullname)
843
844 Returns :attr:`path`.
845
Eric Snowdcd01b42013-10-04 20:35:34 -0600846 .. versionadded:: 3.4
847
Brett Cannon938d44d2012-04-22 19:58:33 -0400848
Eric Snowb523f842013-11-22 09:05:39 -0700849.. class:: ModuleSpec(name, loader, *, origin=None, loader_state=None, is_package=None)
850
851 A specification for a module's import-system-related state.
852
853 .. versionadded:: 3.4
854
855 .. attribute:: name
856
857 (``__name__``)
858
859 A string for the fully-qualified name of the module.
860
861 .. attribute:: loader
862
863 (``__loader__``)
864
865 The loader to use for loading. For namespace packages this should be
866 set to None.
867
868 .. attribute:: origin
869
870 (``__file__``)
871
872 Name of the place from which the module is loaded, e.g. "builtin" for
873 built-in modules and the filename for modules loaded from source.
874 Normally "origin" should be set, but it may be None (the default)
875 which indicates it is unspecified.
876
877 .. attribute:: submodule_search_locations
878
879 (``__path__``)
880
881 List of strings for where to find submodules, if a package (None
882 otherwise).
883
884 .. attribute:: loader_state
885
886 Container of extra module-specific data for use during loading (or
887 None).
888
889 .. attribute:: cached
890
891 (``__cached__``)
892
893 String for where the compiled module should be stored (or None).
894
895 .. attribute:: parent
896
897 (``__package__``)
898
899 (Read-only) Fully-qualified name of the package to which the module
900 belongs as a submodule (or None).
901
902 .. attribute:: has_location
903
904 (Read-only) Boolean indicating whether or not the module's "origin"
905 attribute refers to a loadable location.
906
Brett Cannond2e7b332009-02-17 02:45:03 +0000907:mod:`importlib.util` -- Utility code for importers
908---------------------------------------------------
909
910.. module:: importlib.util
Brett Cannon75321e82012-03-02 11:58:25 -0500911 :synopsis: Utility code for importers
Brett Cannond2e7b332009-02-17 02:45:03 +0000912
913This module contains the various objects that help in the construction of
914an :term:`importer`.
915
Brett Cannon05a647d2013-06-14 19:02:34 -0400916.. attribute:: MAGIC_NUMBER
917
918 The bytes which represent the bytecode version number. If you need help with
919 loading/writing bytecode then consider :class:`importlib.abc.SourceLoader`.
920
921 .. versionadded:: 3.4
922
Brett Cannona3c96152013-06-14 22:26:30 -0400923.. function:: cache_from_source(path, debug_override=None)
924
925 Return the :pep:`3147` path to the byte-compiled file associated with the
926 source *path*. For example, if *path* is ``/foo/bar/baz.py`` the return
927 value would be ``/foo/bar/__pycache__/baz.cpython-32.pyc`` for Python 3.2.
928 The ``cpython-32`` string comes from the current magic tag (see
929 :func:`get_tag`; if :attr:`sys.implementation.cache_tag` is not defined then
930 :exc:`NotImplementedError` will be raised). The returned path will end in
Serhiy Storchaka0e90e992013-11-29 12:19:53 +0200931 ``.pyc`` when ``__debug__`` is ``True`` or ``.pyo`` for an optimized Python
932 (i.e. ``__debug__`` is ``False``). By passing in ``True`` or ``False`` for
Brett Cannona3c96152013-06-14 22:26:30 -0400933 *debug_override* you can override the system's value for ``__debug__`` for
934 extension selection.
935
936 *path* need not exist.
937
938 .. versionadded:: 3.4
939
940
941.. function:: source_from_cache(path)
942
943 Given the *path* to a :pep:`3147` file name, return the associated source code
944 file path. For example, if *path* is
945 ``/foo/bar/__pycache__/baz.cpython-32.pyc`` the returned path would be
946 ``/foo/bar/baz.py``. *path* need not exist, however if it does not conform
947 to :pep:`3147` format, a ``ValueError`` is raised. If
948 :attr:`sys.implementation.cache_tag` is not defined,
949 :exc:`NotImplementedError` is raised.
950
951 .. versionadded:: 3.4
952
Brett Cannonf24fecd2013-06-16 18:37:53 -0400953.. function:: decode_source(source_bytes)
954
955 Decode the given bytes representing source code and return it as a string
956 with universal newlines (as required by
957 :meth:`importlib.abc.InspectLoader.get_source`).
958
959 .. versionadded:: 3.4
960
Brett Cannond200bf52012-05-13 13:45:09 -0400961.. function:: resolve_name(name, package)
962
963 Resolve a relative module name to an absolute one.
964
965 If **name** has no leading dots, then **name** is simply returned. This
966 allows for usage such as
967 ``importlib.util.resolve_name('sys', __package__)`` without doing a
968 check to see if the **package** argument is needed.
969
970 :exc:`ValueError` is raised if **name** is a relative module name but
971 package is a false value (e.g. ``None`` or the empty string).
972 :exc:`ValueError` is also raised a relative name would escape its containing
973 package (e.g. requesting ``..bacon`` from within the ``spam`` package).
974
975 .. versionadded:: 3.3
976
Georg Brandl8a1caa22010-07-29 16:01:11 +0000977.. decorator:: module_for_loader
Brett Cannond2e7b332009-02-17 02:45:03 +0000978
Brett Cannona22faca2013-05-28 17:50:14 -0400979 A :term:`decorator` for :meth:`importlib.abc.Loader.load_module`
Guido van Rossum09613542009-03-30 20:34:57 +0000980 to handle selecting the proper
Brett Cannond2e7b332009-02-17 02:45:03 +0000981 module object to load with. The decorated method is expected to have a call
Brett Cannon2a922ed2009-03-09 03:35:50 +0000982 signature taking two positional arguments
983 (e.g. ``load_module(self, module)``) for which the second argument
Guido van Rossum09613542009-03-30 20:34:57 +0000984 will be the module **object** to be used by the loader.
Brett Cannonefad00d2012-04-27 17:27:14 -0400985 Note that the decorator will not work on static methods because of the
986 assumption of two arguments.
Brett Cannond2e7b332009-02-17 02:45:03 +0000987
Guido van Rossum09613542009-03-30 20:34:57 +0000988 The decorated method will take in the **name** of the module to be loaded
989 as expected for a :term:`loader`. If the module is not found in
Brett Cannon3dc48d62013-05-28 18:35:54 -0400990 :data:`sys.modules` then a new one is constructed. Regardless of where the
991 module came from, :attr:`__loader__` set to **self** and :attr:`__package__`
992 is set based on what :meth:`importlib.abc.InspectLoader.is_package` returns
993 (if available). These attributes are set unconditionally to support
994 reloading.
Brett Cannonefad00d2012-04-27 17:27:14 -0400995
996 If an exception is raised by the decorated method and a module was added to
Brett Cannona87e31c2013-09-13 16:52:19 -0400997 :data:`sys.modules`, then the module will be removed to prevent a partially
998 initialized module from being in left in :data:`sys.modules`. If the module
999 was already in :data:`sys.modules` then it is left alone.
Brett Cannond2e7b332009-02-17 02:45:03 +00001000
Brett Cannonefad00d2012-04-27 17:27:14 -04001001 .. versionchanged:: 3.3
Georg Brandl61063cc2012-06-24 22:48:30 +02001002 :attr:`__loader__` and :attr:`__package__` are automatically set
1003 (when possible).
Brett Cannon57b46f52009-03-02 14:38:26 +00001004
Brett Cannon3dc48d62013-05-28 18:35:54 -04001005 .. versionchanged:: 3.4
Brett Cannon0dbb4c72013-05-31 18:56:47 -04001006 Set :attr:`__name__`, :attr:`__loader__` :attr:`__package__`
1007 unconditionally to support reloading.
1008
1009 .. deprecated:: 3.4
Eric Snowb523f842013-11-22 09:05:39 -07001010 The import machinery now directly performs all the functionality
1011 provided by this function.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001012
Georg Brandl8a1caa22010-07-29 16:01:11 +00001013.. decorator:: set_loader
Brett Cannon2cf03a82009-03-10 05:17:37 +00001014
Brett Cannona22faca2013-05-28 17:50:14 -04001015 A :term:`decorator` for :meth:`importlib.abc.Loader.load_module`
1016 to set the :attr:`__loader__`
1017 attribute on the returned module. If the attribute is already set the
1018 decorator does nothing. It is assumed that the first positional argument to
1019 the wrapped method (i.e. ``self``) is what :attr:`__loader__` should be set
1020 to.
Brett Cannon2cf03a82009-03-10 05:17:37 +00001021
Brett Cannon4802bec2013-03-13 10:41:36 -07001022 .. versionchanged:: 3.4
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001023 Set ``__loader__`` if set to ``None``, as if the attribute does not
Brett Cannon4802bec2013-03-13 10:41:36 -07001024 exist.
1025
Georg Brandl8a1caa22010-07-29 16:01:11 +00001026.. decorator:: set_package
Brett Cannon57b46f52009-03-02 14:38:26 +00001027
Brett Cannona22faca2013-05-28 17:50:14 -04001028 A :term:`decorator` for :meth:`importlib.abc.Loader.load_module` to set the :attr:`__package__` attribute on the returned module. If :attr:`__package__`
1029 is set and has a value other than ``None`` it will not be changed.
Brett Cannon16248a42009-04-01 20:47:14 +00001030
Eric Snowb523f842013-11-22 09:05:39 -07001031.. function:: spec_from_loader(name, loader, *, origin=None, is_package=None)
1032
1033 A factory function for creating a :class:`ModuleSpec` instance based
1034 on a loader. The parameters have the same meaning as they do for
1035 ModuleSpec. The function uses available :term:`loader` APIs, such as
1036 :meth:`InspectLoader.is_package`, to fill in any missing
1037 information on the spec.
1038
1039 .. versionadded:: 3.4
1040
1041.. function:: spec_from_file_location(name, location, *, loader=None, submodule_search_locations=None)
1042
1043 A factory function for creating a :class:`ModuleSpec` instance based
1044 on the path to a file. Missing information will be filled in on the
1045 spec by making use of loader APIs and by the implication that the
1046 module will be file-based.
1047
1048 .. versionadded:: 3.4