blob: 50c97b070ebd9952cfbf6554a03b887e43f4999b [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
Brett Cannon17738112013-05-31 18:00:56 -0400313 alone (see :func:`importlib.util.module_to_load`).
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
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400317 reloaded; see :meth:`init_module_attrs`):
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 Cannon0dbb4c72013-05-31 18:56:47 -0400360 .. method:: init_module_attrs(module)
361
362 Set the :attr:`__loader__` attribute on the module.
363
364 Subclasses overriding this method should set whatever appropriate
365 attributes it can, getting the module's name from :attr:`__name__` when
366 needed. All values should also be overridden so that reloading works as
367 expected.
368
369 .. versionadded:: 3.4
370
Brett Cannon2a922ed2009-03-09 03:35:50 +0000371
372.. class:: ResourceLoader
373
374 An abstract base class for a :term:`loader` which implements the optional
375 :pep:`302` protocol for loading arbitrary resources from the storage
376 back-end.
377
Brett Cannon9c751b72009-03-09 16:28:16 +0000378 .. method:: get_data(path)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000379
380 An abstract method to return the bytes for the data located at *path*.
Guido van Rossum09613542009-03-30 20:34:57 +0000381 Loaders that have a file-like storage back-end
Brett Cannon16248a42009-04-01 20:47:14 +0000382 that allows storing arbitrary data
Guido van Rossum09613542009-03-30 20:34:57 +0000383 can implement this abstract method to give direct access
Brett Cannon2a922ed2009-03-09 03:35:50 +0000384 to the data stored. :exc:`IOError` is to be raised if the *path* cannot
385 be found. The *path* is expected to be constructed using a module's
Brett Cannon16248a42009-04-01 20:47:14 +0000386 :attr:`__file__` attribute or an item from a package's :attr:`__path__`.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000387
Brett Cannon100883f2013-04-09 16:59:39 -0400388 .. versionchanged:: 3.4
389 Raises :exc:`IOError` instead of :exc:`NotImplementedError`.
390
Brett Cannon2a922ed2009-03-09 03:35:50 +0000391
392.. class:: InspectLoader
393
394 An abstract base class for a :term:`loader` which implements the optional
Guido van Rossum09613542009-03-30 20:34:57 +0000395 :pep:`302` protocol for loaders that inspect modules.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000396
Brett Cannona113ac52009-03-15 01:41:33 +0000397 .. method:: get_code(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000398
Brett Cannon3b62ca82013-05-27 21:11:04 -0400399 Return the code object for a module.
400 ``None`` should be returned if the module does not have a code object
Brett Cannona113ac52009-03-15 01:41:33 +0000401 (e.g. built-in module). :exc:`ImportError` is raised if loader cannot
402 find the requested module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000403
Brett Cannon3b62ca82013-05-27 21:11:04 -0400404 .. note::
405 While the method has a default implementation, it is suggested that
406 it be overridden if possible for performance.
407
R David Murray1b00f252012-08-15 10:43:58 -0400408 .. index::
409 single: universal newlines; importlib.abc.InspectLoader.get_source method
410
Brett Cannon100883f2013-04-09 16:59:39 -0400411 .. versionchanged:: 3.4
Brett Cannon3b62ca82013-05-27 21:11:04 -0400412 No longer abstract and a concrete implementation is provided.
Brett Cannon100883f2013-04-09 16:59:39 -0400413
Brett Cannon9c751b72009-03-09 16:28:16 +0000414 .. method:: get_source(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000415
416 An abstract method to return the source of a module. It is returned as
R David Murray1b00f252012-08-15 10:43:58 -0400417 a text string using :term:`universal newlines`, translating all
R David Murrayee0a9452012-08-15 11:05:36 -0400418 recognized line separators into ``'\n'`` characters. Returns ``None``
419 if no source is available (e.g. a built-in module). Raises
420 :exc:`ImportError` if the loader cannot find the module specified.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000421
Brett Cannon100883f2013-04-09 16:59:39 -0400422 .. versionchanged:: 3.4
423 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
424
Brett Cannona113ac52009-03-15 01:41:33 +0000425 .. method:: is_package(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000426
Brett Cannona113ac52009-03-15 01:41:33 +0000427 An abstract method to return a true value if the module is a package, a
428 false value otherwise. :exc:`ImportError` is raised if the
429 :term:`loader` cannot find the module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000430
Brett Cannon100883f2013-04-09 16:59:39 -0400431 .. versionchanged:: 3.4
432 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
433
Brett Cannon9ffe85e2013-05-26 16:45:10 -0400434 .. method:: source_to_code(data, path='<string>')
435
436 Create a code object from Python source.
437
438 The *data* argument can be whatever the :func:`compile` function
439 supports (i.e. string or bytes). The *path* argument should be
440 the "path" to where the source code originated from, which can be an
441 abstract concept (e.g. location in a zip file).
442
443 .. versionadded:: 3.4
444
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400445 .. method:: init_module_attrs(module)
446
447 Set the :attr:`__package__` attribute and :attr:`__path__` attribute to
448 the empty list if appropriate along with what
449 :meth:`importlib.abc.Loader.init_module_attrs` sets.
450
451 .. versionadded:: 3.4
452
453 .. method:: load_module(fullname)
454
455 Implementation of :meth:`Loader.load_module`.
456
Brett Cannon2a922ed2009-03-09 03:35:50 +0000457
Brett Cannon69194272009-07-20 04:23:48 +0000458.. class:: ExecutionLoader
459
460 An abstract base class which inherits from :class:`InspectLoader` that,
Brett Cannon23460292009-07-20 22:59:00 +0000461 when implemented, helps a module to be executed as a script. The ABC
Brett Cannon69194272009-07-20 04:23:48 +0000462 represents an optional :pep:`302` protocol.
463
464 .. method:: get_filename(fullname)
465
Brett Cannonf23e3742010-06-27 23:57:46 +0000466 An abstract method that is to return the value of :attr:`__file__` for
Brett Cannon69194272009-07-20 04:23:48 +0000467 the specified module. If no path is available, :exc:`ImportError` is
468 raised.
469
Brett Cannonf23e3742010-06-27 23:57:46 +0000470 If source code is available, then the method should return the path to
471 the source file, regardless of whether a bytecode was used to load the
472 module.
473
Brett Cannon100883f2013-04-09 16:59:39 -0400474 .. versionchanged:: 3.4
475 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
476
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400477 .. method:: init_module_attrs(module)
478
479 Set :attr:`__file__` and if initializing a package then set
480 :attr:`__path__` to ``[os.path.dirname(__file__)]`` along with
481 all attributes set by
482 :meth:`importlib.abc.InspectLoader.init_module_attrs`.
483
484 .. versionadded:: 3.4
485
Brett Cannonf23e3742010-06-27 23:57:46 +0000486
Brett Cannon938d44d2012-04-22 19:58:33 -0400487.. class:: FileLoader(fullname, path)
488
489 An abstract base class which inherits from :class:`ResourceLoader` and
Andrew Svetlova60de4f2013-02-17 16:55:58 +0200490 :class:`ExecutionLoader`, providing concrete implementations of
Brett Cannon938d44d2012-04-22 19:58:33 -0400491 :meth:`ResourceLoader.get_data` and :meth:`ExecutionLoader.get_filename`.
492
493 The *fullname* argument is a fully resolved name of the module the loader is
494 to handle. The *path* argument is the path to the file for the module.
495
496 .. versionadded:: 3.3
497
498 .. attribute:: name
499
500 The name of the module the loader can handle.
501
502 .. attribute:: path
503
504 Path to the file of the module.
505
Barry Warsawd7d21942012-07-29 16:36:17 -0400506 .. method:: load_module(fullname)
Brett Cannonc0499522012-05-11 14:48:41 -0400507
Barry Warsawd7d21942012-07-29 16:36:17 -0400508 Calls super's ``load_module()``.
Brett Cannonc0499522012-05-11 14:48:41 -0400509
Brett Cannon938d44d2012-04-22 19:58:33 -0400510 .. method:: get_filename(fullname)
511
Barry Warsawd7d21942012-07-29 16:36:17 -0400512 Returns :attr:`path`.
Brett Cannon938d44d2012-04-22 19:58:33 -0400513
514 .. method:: get_data(path)
515
Brett Cannon3b62ca82013-05-27 21:11:04 -0400516 Reads *path* as a binary file and returns the bytes from it.
Brett Cannon938d44d2012-04-22 19:58:33 -0400517
518
Brett Cannonf23e3742010-06-27 23:57:46 +0000519.. class:: SourceLoader
520
521 An abstract base class for implementing source (and optionally bytecode)
522 file loading. The class inherits from both :class:`ResourceLoader` and
523 :class:`ExecutionLoader`, requiring the implementation of:
524
525 * :meth:`ResourceLoader.get_data`
526 * :meth:`ExecutionLoader.get_filename`
Brett Cannon6dfbff32010-07-21 09:48:31 +0000527 Should only return the path to the source file; sourceless
Brett Cannona81d5272013-06-16 19:17:12 -0400528 loading is not supported.
Brett Cannonf23e3742010-06-27 23:57:46 +0000529
530 The abstract methods defined by this class are to add optional bytecode
Brett Cannon5650e4f2012-11-18 10:03:31 -0500531 file support. Not implementing these optional methods (or causing them to
532 raise :exc:`NotImplementedError`) causes the loader to
Brett Cannonf23e3742010-06-27 23:57:46 +0000533 only work with source code. Implementing the methods allows the loader to
534 work with source *and* bytecode files; it does not allow for *sourceless*
535 loading where only bytecode is provided. Bytecode files are an
536 optimization to speed up loading by removing the parsing step of Python's
537 compiler, and so no bytecode-specific API is exposed.
538
Brett Cannon773468f2012-08-02 17:35:34 -0400539 .. method:: path_stats(path)
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100540
541 Optional abstract method which returns a :class:`dict` containing
542 metadata about the specifed path. Supported dictionary keys are:
543
544 - ``'mtime'`` (mandatory): an integer or floating-point number
545 representing the modification time of the source code;
546 - ``'size'`` (optional): the size in bytes of the source code.
547
548 Any other keys in the dictionary are ignored, to allow for future
Brett Cannon100883f2013-04-09 16:59:39 -0400549 extensions. If the path cannot be handled, :exc:`IOError` is raised.
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100550
551 .. versionadded:: 3.3
552
Brett Cannon100883f2013-04-09 16:59:39 -0400553 .. versionchanged:: 3.4
554 Raise :exc:`IOError` instead of :exc:`NotImplementedError`.
555
Brett Cannon773468f2012-08-02 17:35:34 -0400556 .. method:: path_mtime(path)
Brett Cannonf23e3742010-06-27 23:57:46 +0000557
558 Optional abstract method which returns the modification time for the
559 specified path.
560
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100561 .. deprecated:: 3.3
562 This method is deprecated in favour of :meth:`path_stats`. You don't
563 have to implement it, but it is still available for compatibility
Brett Cannon100883f2013-04-09 16:59:39 -0400564 purposes. Raise :exc:`IOError` if the path cannot be handled.
565
566 .. versionchanged:: 3.4
567 Raise :exc:`IOError` instead of :exc:`NotImplementedError`.
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100568
Brett Cannon773468f2012-08-02 17:35:34 -0400569 .. method:: set_data(path, data)
Brett Cannonf23e3742010-06-27 23:57:46 +0000570
571 Optional abstract method which writes the specified bytes to a file
Brett Cannon61b14252010-07-03 21:48:25 +0000572 path. Any intermediate directories which do not exist are to be created
573 automatically.
574
575 When writing to the path fails because the path is read-only
Brett Cannon2cefb3c2013-05-25 11:26:11 -0400576 (:attr:`errno.EACCES`/:exc:`PermissionError`), do not propagate the
577 exception.
Brett Cannonf23e3742010-06-27 23:57:46 +0000578
Brett Cannon100883f2013-04-09 16:59:39 -0400579 .. versionchanged:: 3.4
580 No longer raises :exc:`NotImplementedError` when called.
581
Brett Cannon773468f2012-08-02 17:35:34 -0400582 .. method:: get_code(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000583
584 Concrete implementation of :meth:`InspectLoader.get_code`.
585
Brett Cannon773468f2012-08-02 17:35:34 -0400586 .. method:: load_module(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000587
588 Concrete implementation of :meth:`Loader.load_module`.
589
Brett Cannon773468f2012-08-02 17:35:34 -0400590 .. method:: get_source(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000591
592 Concrete implementation of :meth:`InspectLoader.get_source`.
593
Brett Cannon773468f2012-08-02 17:35:34 -0400594 .. method:: is_package(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000595
596 Concrete implementation of :meth:`InspectLoader.is_package`. A module
Brett Cannonea0b8232012-06-15 20:00:53 -0400597 is determined to be a package if its file path (as provided by
598 :meth:`ExecutionLoader.get_filename`) is a file named
599 ``__init__`` when the file extension is removed **and** the module name
600 itself does not end in ``__init__``.
Brett Cannonf23e3742010-06-27 23:57:46 +0000601
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400602 .. method:: init_module_attr(module)
603
604 Set :attr:`__cached__` using :func:`imp.cache_from_source`. Other
605 attributes set by
606 :meth:`importlib.abc.ExecutionLoader.init_module_attrs`.
607
608 .. versionadded:: 3.4
609
Brett Cannon69194272009-07-20 04:23:48 +0000610
Brett Cannon78246b62009-01-25 04:56:30 +0000611:mod:`importlib.machinery` -- Importers and path hooks
612------------------------------------------------------
613
614.. module:: importlib.machinery
615 :synopsis: Importers and path hooks
616
617This module contains the various objects that help :keyword:`import`
618find and load modules.
619
Brett Cannoncb66eb02012-05-11 12:58:42 -0400620.. attribute:: SOURCE_SUFFIXES
621
622 A list of strings representing the recognized file suffixes for source
623 modules.
624
625 .. versionadded:: 3.3
626
627.. attribute:: DEBUG_BYTECODE_SUFFIXES
628
629 A list of strings representing the file suffixes for non-optimized bytecode
630 modules.
631
632 .. versionadded:: 3.3
633
634.. attribute:: OPTIMIZED_BYTECODE_SUFFIXES
635
636 A list of strings representing the file suffixes for optimized bytecode
637 modules.
638
639 .. versionadded:: 3.3
640
641.. attribute:: BYTECODE_SUFFIXES
642
643 A list of strings representing the recognized file suffixes for bytecode
644 modules. Set to either :attr:`DEBUG_BYTECODE_SUFFIXES` or
645 :attr:`OPTIMIZED_BYTECODE_SUFFIXES` based on whether ``__debug__`` is true.
646
647 .. versionadded:: 3.3
648
649.. attribute:: EXTENSION_SUFFIXES
650
Nick Coghlan76e07702012-07-18 23:14:57 +1000651 A list of strings representing the recognized file suffixes for
Brett Cannoncb66eb02012-05-11 12:58:42 -0400652 extension modules.
653
654 .. versionadded:: 3.3
655
Nick Coghlanc5afd422012-07-18 23:59:08 +1000656.. function:: all_suffixes()
Nick Coghlan76e07702012-07-18 23:14:57 +1000657
658 Returns a combined list of strings representing all file suffixes for
Nick Coghlanc5afd422012-07-18 23:59:08 +1000659 modules recognized by the standard import machinery. This is a
Nick Coghlan76e07702012-07-18 23:14:57 +1000660 helper for code which simply needs to know if a filesystem path
Nick Coghlanc5afd422012-07-18 23:59:08 +1000661 potentially refers to a module without needing any details on the kind
662 of module (for example, :func:`inspect.getmodulename`)
Nick Coghlan76e07702012-07-18 23:14:57 +1000663
664 .. versionadded:: 3.3
665
666
Brett Cannon78246b62009-01-25 04:56:30 +0000667.. class:: BuiltinImporter
668
Brett Cannon2a922ed2009-03-09 03:35:50 +0000669 An :term:`importer` for built-in modules. All known built-in modules are
670 listed in :data:`sys.builtin_module_names`. This class implements the
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000671 :class:`importlib.abc.MetaPathFinder` and
672 :class:`importlib.abc.InspectLoader` ABCs.
Brett Cannon78246b62009-01-25 04:56:30 +0000673
674 Only class methods are defined by this class to alleviate the need for
675 instantiation.
676
Brett Cannon78246b62009-01-25 04:56:30 +0000677
678.. class:: FrozenImporter
679
Brett Cannon2a922ed2009-03-09 03:35:50 +0000680 An :term:`importer` for frozen modules. This class implements the
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000681 :class:`importlib.abc.MetaPathFinder` and
682 :class:`importlib.abc.InspectLoader` ABCs.
Brett Cannon78246b62009-01-25 04:56:30 +0000683
684 Only class methods are defined by this class to alleviate the need for
685 instantiation.
686
Brett Cannondebb98d2009-02-16 04:18:01 +0000687
Nick Coghlanff794862012-08-02 21:45:24 +1000688.. class:: WindowsRegistryFinder
689
690 :term:`Finder` for modules declared in the Windows registry. This class
Nick Coghlan49417742012-08-02 23:03:58 +1000691 implements the :class:`importlib.abc.Finder` ABC.
Nick Coghlanff794862012-08-02 21:45:24 +1000692
693 Only class methods are defined by this class to alleviate the need for
694 instantiation.
695
696 .. versionadded:: 3.3
697
698
Brett Cannondebb98d2009-02-16 04:18:01 +0000699.. class:: PathFinder
700
Brett Cannon1b799182012-08-17 14:08:24 -0400701 A :term:`Finder` for :data:`sys.path` and package ``__path__`` attributes.
702 This class implements the :class:`importlib.abc.MetaPathFinder` ABC.
Brett Cannondebb98d2009-02-16 04:18:01 +0000703
Brett Cannon1b799182012-08-17 14:08:24 -0400704 Only class methods are defined by this class to alleviate the need for
705 instantiation.
Brett Cannondebb98d2009-02-16 04:18:01 +0000706
Brett Cannon1b799182012-08-17 14:08:24 -0400707 .. classmethod:: find_module(fullname, path=None)
Brett Cannondebb98d2009-02-16 04:18:01 +0000708
Brett Cannon1b799182012-08-17 14:08:24 -0400709 Class method that attempts to find a :term:`loader` for the module
710 specified by *fullname* on :data:`sys.path` or, if defined, on
711 *path*. For each path entry that is searched,
712 :data:`sys.path_importer_cache` is checked. If a non-false object is
Brett Cannon2cefb3c2013-05-25 11:26:11 -0400713 found then it is used as the :term:`path entry finder` to look for the
714 module being searched for. If no entry is found in
Brett Cannon1b799182012-08-17 14:08:24 -0400715 :data:`sys.path_importer_cache`, then :data:`sys.path_hooks` is
716 searched for a finder for the path entry and, if found, is stored in
717 :data:`sys.path_importer_cache` along with being queried about the
718 module. If no finder is ever found then ``None`` is both stored in
719 the cache and returned.
Brett Cannond2e7b332009-02-17 02:45:03 +0000720
Brett Cannonf4dc9202012-08-10 12:21:12 -0400721 .. classmethod:: invalidate_caches()
722
Brett Cannon1b799182012-08-17 14:08:24 -0400723 Calls :meth:`importlib.abc.PathEntryFinder.invalidate_caches` on all
724 finders stored in :attr:`sys.path_importer_cache`.
Brett Cannonf4dc9202012-08-10 12:21:12 -0400725
Brett Cannon27e27f72013-10-18 11:39:04 -0400726 .. versionchanged:: 3.4
Georg Brandl0f5bff22013-10-19 17:46:38 +0200727 Calls objects in :data:`sys.path_hooks` with the current working directory
Brett Cannon27e27f72013-10-18 11:39:04 -0400728 for ``''`` (i.e. the empty string).
729
Brett Cannond2e7b332009-02-17 02:45:03 +0000730
Brett Cannon938d44d2012-04-22 19:58:33 -0400731.. class:: FileFinder(path, \*loader_details)
732
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000733 A concrete implementation of :class:`importlib.abc.PathEntryFinder` which
734 caches results from the file system.
Brett Cannon938d44d2012-04-22 19:58:33 -0400735
736 The *path* argument is the directory for which the finder is in charge of
737 searching.
738
Brett Cannonac9f2f32012-08-10 13:47:54 -0400739 The *loader_details* argument is a variable number of 2-item tuples each
740 containing a loader and a sequence of file suffixes the loader recognizes.
Brett Cannon29b2f172013-06-21 18:31:55 -0400741 The loaders are expected to be callables which accept two arguments of
742 the module's name and the path to the file found.
Brett Cannon938d44d2012-04-22 19:58:33 -0400743
744 The finder will cache the directory contents as necessary, making stat calls
745 for each module search to verify the cache is not outdated. Because cache
746 staleness relies upon the granularity of the operating system's state
747 information of the file system, there is a potential race condition of
748 searching for a module, creating a new file, and then searching for the
749 module the new file represents. If the operations happen fast enough to fit
750 within the granularity of stat calls, then the module search will fail. To
751 prevent this from happening, when you create a module dynamically, make sure
752 to call :func:`importlib.invalidate_caches`.
753
754 .. versionadded:: 3.3
755
756 .. attribute:: path
757
758 The path the finder will search in.
759
Brett Cannon1d753822013-06-16 19:06:55 -0400760 .. method:: find_loader(fullname)
Brett Cannon938d44d2012-04-22 19:58:33 -0400761
762 Attempt to find the loader to handle *fullname* within :attr:`path`.
763
764 .. method:: invalidate_caches()
765
766 Clear out the internal cache.
767
768 .. classmethod:: path_hook(\*loader_details)
769
770 A class method which returns a closure for use on :attr:`sys.path_hooks`.
771 An instance of :class:`FileFinder` is returned by the closure using the
772 path argument given to the closure directly and *loader_details*
773 indirectly.
774
775 If the argument to the closure is not an existing directory,
776 :exc:`ImportError` is raised.
777
778
779.. class:: SourceFileLoader(fullname, path)
780
781 A concrete implementation of :class:`importlib.abc.SourceLoader` by
782 subclassing :class:`importlib.abc.FileLoader` and providing some concrete
783 implementations of other methods.
784
785 .. versionadded:: 3.3
786
787 .. attribute:: name
788
789 The name of the module that this loader will handle.
790
791 .. attribute:: path
792
793 The path to the source file.
794
795 .. method:: is_package(fullname)
796
797 Return true if :attr:`path` appears to be for a package.
798
799 .. method:: path_stats(path)
800
801 Concrete implementation of :meth:`importlib.abc.SourceLoader.path_stats`.
802
803 .. method:: set_data(path, data)
804
805 Concrete implementation of :meth:`importlib.abc.SourceLoader.set_data`.
806
Brett Cannon938d44d2012-04-22 19:58:33 -0400807
Marc-Andre Lemburg4fe29c92012-04-25 02:31:37 +0200808.. class:: SourcelessFileLoader(fullname, path)
Brett Cannon938d44d2012-04-22 19:58:33 -0400809
810 A concrete implementation of :class:`importlib.abc.FileLoader` which can
811 import bytecode files (i.e. no source code files exist).
812
Marc-Andre Lemburg4fe29c92012-04-25 02:31:37 +0200813 Please note that direct use of bytecode files (and thus not source code
814 files) inhibits your modules from being usable by all Python
815 implementations or new versions of Python which change the bytecode
816 format.
Brett Cannon938d44d2012-04-22 19:58:33 -0400817
818 .. versionadded:: 3.3
819
820 .. attribute:: name
821
822 The name of the module the loader will handle.
823
824 .. attribute:: path
825
826 The path to the bytecode file.
827
828 .. method:: is_package(fullname)
829
830 Determines if the module is a package based on :attr:`path`.
831
832 .. method:: get_code(fullname)
833
834 Returns the code object for :attr:`name` created from :attr:`path`.
835
836 .. method:: get_source(fullname)
837
838 Returns ``None`` as bytecode files have no source when this loader is
839 used.
840
Brett Cannon938d44d2012-04-22 19:58:33 -0400841
842.. class:: ExtensionFileLoader(fullname, path)
843
Eric Snow51794452013-10-03 12:08:55 -0600844 A concrete implementation of :class:`importlib.abc.ExecutionLoader` for
Brett Cannon938d44d2012-04-22 19:58:33 -0400845 extension modules.
846
847 The *fullname* argument specifies the name of the module the loader is to
848 support. The *path* argument is the path to the extension module's file.
849
850 .. versionadded:: 3.3
851
852 .. attribute:: name
853
854 Name of the module the loader supports.
855
856 .. attribute:: path
857
858 Path to the extension module.
859
Barry Warsawd7d21942012-07-29 16:36:17 -0400860 .. method:: load_module(fullname)
Brett Cannon938d44d2012-04-22 19:58:33 -0400861
Brett Cannonc0499522012-05-11 14:48:41 -0400862 Loads the extension module if and only if *fullname* is the same as
863 :attr:`name` or is ``None``.
Brett Cannon938d44d2012-04-22 19:58:33 -0400864
865 .. method:: is_package(fullname)
866
Brett Cannonac9f2f32012-08-10 13:47:54 -0400867 Returns ``True`` if the file path points to a package's ``__init__``
868 module based on :attr:`EXTENSION_SUFFIXES`.
Brett Cannon938d44d2012-04-22 19:58:33 -0400869
870 .. method:: get_code(fullname)
871
872 Returns ``None`` as extension modules lack a code object.
873
874 .. method:: get_source(fullname)
875
876 Returns ``None`` as extension modules do not have source code.
877
Eric Snow51794452013-10-03 12:08:55 -0600878 .. method:: get_filename(fullname)
879
880 Returns :attr:`path`.
881
Eric Snowdcd01b42013-10-04 20:35:34 -0600882 .. versionadded:: 3.4
883
Brett Cannon938d44d2012-04-22 19:58:33 -0400884
Brett Cannond2e7b332009-02-17 02:45:03 +0000885:mod:`importlib.util` -- Utility code for importers
886---------------------------------------------------
887
888.. module:: importlib.util
Brett Cannon75321e82012-03-02 11:58:25 -0500889 :synopsis: Utility code for importers
Brett Cannond2e7b332009-02-17 02:45:03 +0000890
891This module contains the various objects that help in the construction of
892an :term:`importer`.
893
Brett Cannon05a647d2013-06-14 19:02:34 -0400894.. attribute:: MAGIC_NUMBER
895
896 The bytes which represent the bytecode version number. If you need help with
897 loading/writing bytecode then consider :class:`importlib.abc.SourceLoader`.
898
899 .. versionadded:: 3.4
900
Brett Cannona3c96152013-06-14 22:26:30 -0400901.. function:: cache_from_source(path, debug_override=None)
902
903 Return the :pep:`3147` path to the byte-compiled file associated with the
904 source *path*. For example, if *path* is ``/foo/bar/baz.py`` the return
905 value would be ``/foo/bar/__pycache__/baz.cpython-32.pyc`` for Python 3.2.
906 The ``cpython-32`` string comes from the current magic tag (see
907 :func:`get_tag`; if :attr:`sys.implementation.cache_tag` is not defined then
908 :exc:`NotImplementedError` will be raised). The returned path will end in
909 ``.pyc`` when ``__debug__`` is True or ``.pyo`` for an optimized Python
910 (i.e. ``__debug__`` is False). By passing in True or False for
911 *debug_override* you can override the system's value for ``__debug__`` for
912 extension selection.
913
914 *path* need not exist.
915
916 .. versionadded:: 3.4
917
918
919.. function:: source_from_cache(path)
920
921 Given the *path* to a :pep:`3147` file name, return the associated source code
922 file path. For example, if *path* is
923 ``/foo/bar/__pycache__/baz.cpython-32.pyc`` the returned path would be
924 ``/foo/bar/baz.py``. *path* need not exist, however if it does not conform
925 to :pep:`3147` format, a ``ValueError`` is raised. If
926 :attr:`sys.implementation.cache_tag` is not defined,
927 :exc:`NotImplementedError` is raised.
928
929 .. versionadded:: 3.4
930
Brett Cannonf24fecd2013-06-16 18:37:53 -0400931.. function:: decode_source(source_bytes)
932
933 Decode the given bytes representing source code and return it as a string
934 with universal newlines (as required by
935 :meth:`importlib.abc.InspectLoader.get_source`).
936
937 .. versionadded:: 3.4
938
Brett Cannond200bf52012-05-13 13:45:09 -0400939.. function:: resolve_name(name, package)
940
941 Resolve a relative module name to an absolute one.
942
943 If **name** has no leading dots, then **name** is simply returned. This
944 allows for usage such as
945 ``importlib.util.resolve_name('sys', __package__)`` without doing a
946 check to see if the **package** argument is needed.
947
948 :exc:`ValueError` is raised if **name** is a relative module name but
949 package is a false value (e.g. ``None`` or the empty string).
950 :exc:`ValueError` is also raised a relative name would escape its containing
951 package (e.g. requesting ``..bacon`` from within the ``spam`` package).
952
953 .. versionadded:: 3.3
954
Brett Cannonb60a43e2013-05-31 18:11:17 -0400955.. function:: module_to_load(name, *, reset_name=True)
Brett Cannona3687f02013-05-28 17:29:34 -0400956
Brett Cannon357c9fb2013-05-30 17:31:47 -0400957 Returns a :term:`context manager` which provides the module to load. The
958 module will either come from :attr:`sys.modules` in the case of reloading or
959 a fresh module if loading a new module. Proper cleanup of
960 :attr:`sys.modules` occurs if the module was new and an exception was
961 raised.
Brett Cannona3687f02013-05-28 17:29:34 -0400962
Brett Cannonb60a43e2013-05-31 18:11:17 -0400963 If **reset_name** is true and the module requested is being reloaded then
964 the module's :attr:`__name__` attribute will
965 be reset to **name**, else it will be left untouched.
966
Brett Cannona3687f02013-05-28 17:29:34 -0400967 .. versionadded:: 3.4
968
Georg Brandl8a1caa22010-07-29 16:01:11 +0000969.. decorator:: module_for_loader
Brett Cannond2e7b332009-02-17 02:45:03 +0000970
Brett Cannona22faca2013-05-28 17:50:14 -0400971 A :term:`decorator` for :meth:`importlib.abc.Loader.load_module`
Guido van Rossum09613542009-03-30 20:34:57 +0000972 to handle selecting the proper
Brett Cannond2e7b332009-02-17 02:45:03 +0000973 module object to load with. The decorated method is expected to have a call
Brett Cannon2a922ed2009-03-09 03:35:50 +0000974 signature taking two positional arguments
975 (e.g. ``load_module(self, module)``) for which the second argument
Guido van Rossum09613542009-03-30 20:34:57 +0000976 will be the module **object** to be used by the loader.
Brett Cannonefad00d2012-04-27 17:27:14 -0400977 Note that the decorator will not work on static methods because of the
978 assumption of two arguments.
Brett Cannond2e7b332009-02-17 02:45:03 +0000979
Guido van Rossum09613542009-03-30 20:34:57 +0000980 The decorated method will take in the **name** of the module to be loaded
981 as expected for a :term:`loader`. If the module is not found in
Brett Cannon3dc48d62013-05-28 18:35:54 -0400982 :data:`sys.modules` then a new one is constructed. Regardless of where the
983 module came from, :attr:`__loader__` set to **self** and :attr:`__package__`
984 is set based on what :meth:`importlib.abc.InspectLoader.is_package` returns
985 (if available). These attributes are set unconditionally to support
986 reloading.
Brett Cannonefad00d2012-04-27 17:27:14 -0400987
988 If an exception is raised by the decorated method and a module was added to
Brett Cannona87e31c2013-09-13 16:52:19 -0400989 :data:`sys.modules`, then the module will be removed to prevent a partially
990 initialized module from being in left in :data:`sys.modules`. If the module
991 was already in :data:`sys.modules` then it is left alone.
Brett Cannond2e7b332009-02-17 02:45:03 +0000992
Brett Cannonefad00d2012-04-27 17:27:14 -0400993 .. versionchanged:: 3.3
Georg Brandl61063cc2012-06-24 22:48:30 +0200994 :attr:`__loader__` and :attr:`__package__` are automatically set
995 (when possible).
Brett Cannon57b46f52009-03-02 14:38:26 +0000996
Brett Cannon3dc48d62013-05-28 18:35:54 -0400997 .. versionchanged:: 3.4
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400998 Set :attr:`__name__`, :attr:`__loader__` :attr:`__package__`
999 unconditionally to support reloading.
1000
1001 .. deprecated:: 3.4
1002 For the benefit of :term:`loader` subclasses, please use
1003 :func:`module_to_load` and
1004 :meth:`importlib.abc.Loader.init_module_attrs` instead.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001005
Georg Brandl8a1caa22010-07-29 16:01:11 +00001006.. decorator:: set_loader
Brett Cannon2cf03a82009-03-10 05:17:37 +00001007
Brett Cannona22faca2013-05-28 17:50:14 -04001008 A :term:`decorator` for :meth:`importlib.abc.Loader.load_module`
1009 to set the :attr:`__loader__`
1010 attribute on the returned module. If the attribute is already set the
1011 decorator does nothing. It is assumed that the first positional argument to
1012 the wrapped method (i.e. ``self``) is what :attr:`__loader__` should be set
1013 to.
Brett Cannon2cf03a82009-03-10 05:17:37 +00001014
Brett Cannonefad00d2012-04-27 17:27:14 -04001015 .. note::
Brett Cannona22faca2013-05-28 17:50:14 -04001016 As this decorator sets :attr:`__loader__` after loading the module, it is
Brett Cannon0dbb4c72013-05-31 18:56:47 -04001017 recommended to use :meth:`importlib.abc.Loader.init_module_attrs` instead
1018 when appropriate.
Brett Cannonefad00d2012-04-27 17:27:14 -04001019
Brett Cannon4802bec2013-03-13 10:41:36 -07001020 .. versionchanged:: 3.4
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001021 Set ``__loader__`` if set to ``None``, as if the attribute does not
Brett Cannon4802bec2013-03-13 10:41:36 -07001022 exist.
1023
Georg Brandl8a1caa22010-07-29 16:01:11 +00001024.. decorator:: set_package
Brett Cannon57b46f52009-03-02 14:38:26 +00001025
Brett Cannona22faca2013-05-28 17:50:14 -04001026 A :term:`decorator` for :meth:`importlib.abc.Loader.load_module` to set the :attr:`__package__` attribute on the returned module. If :attr:`__package__`
1027 is set and has a value other than ``None`` it will not be changed.
Brett Cannon16248a42009-04-01 20:47:14 +00001028
Brett Cannonefad00d2012-04-27 17:27:14 -04001029 .. note::
Brett Cannona22faca2013-05-28 17:50:14 -04001030 As this decorator sets :attr:`__package__` after loading the module, it is
Brett Cannon0dbb4c72013-05-31 18:56:47 -04001031 recommended to use :meth:`importlib.abc.Loader.init_module_attrs` instead
1032 when appropriate.