blob: 9a8b5e9df5c38f2d258acf173ca0bfc556c727ef [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
124 is the module object (the same as the *module* argument).
125
126 When :func:`.reload` is executed:
127
128 * Python modules' code is recompiled and the module-level code re-executed,
129 defining a new set of objects which are bound to names in the module's
130 dictionary by reusing the :term:`loader` which originally loaded the
131 module. The ``init`` function of extension modules is not called a second
132 time.
133
134 * As with all other objects in Python the old objects are only reclaimed
135 after their reference counts drop to zero.
136
137 * The names in the module namespace are updated to point to any new or
138 changed objects.
139
140 * Other references to the old objects (such as names external to the module) are
141 not rebound to refer to the new objects and must be updated in each namespace
142 where they occur if that is desired.
143
144 There are a number of other caveats:
145
146 If a module is syntactically correct but its initialization fails, the first
147 :keyword:`import` statement for it does not bind its name locally, but does
148 store a (partially initialized) module object in ``sys.modules``. To reload
149 the module you must first :keyword:`import` it again (this will bind the name
150 to the partially initialized module object) before you can :func:`reload` it.
151
152 When a module is reloaded, its dictionary (containing the module's global
153 variables) is retained. Redefinitions of names will override the old
154 definitions, so this is generally not a problem. If the new version of a
155 module does not define a name that was defined by the old version, the old
156 definition remains. This feature can be used to the module's advantage if it
157 maintains a global table or cache of objects --- with a :keyword:`try`
158 statement it can test for the table's presence and skip its initialization if
159 desired::
160
161 try:
162 cache
163 except NameError:
164 cache = {}
165
166 It is legal though generally not very useful to reload built-in or
167 dynamically loaded modules (this is not true for e.g. :mod:`sys`,
Serhiy Storchaka98b28fd2013-10-13 23:12:09 +0300168 :mod:`__main__`, :mod:`builtins` and other key modules where reloading is
Brett Cannon3fe35e62013-06-14 15:04:26 -0400169 frowned upon). In many cases, however, extension modules are not designed to
170 be initialized more than once, and may fail in arbitrary ways when reloaded.
171
172 If a module imports objects from another module using :keyword:`from` ...
173 :keyword:`import` ..., calling :func:`reload` for the other module does not
174 redefine the objects imported from it --- one way around this is to
175 re-execute the :keyword:`from` statement, another is to use :keyword:`import`
176 and qualified names (*module.name*) instead.
177
178 If a module instantiates instances of a class, reloading the module that
179 defines the class does not affect the method definitions of the instances ---
180 they continue to use the old class definition. The same is true for derived
181 classes.
182
183 .. versionadded:: 3.4
184
Brett Cannon78246b62009-01-25 04:56:30 +0000185
Brett Cannon2a922ed2009-03-09 03:35:50 +0000186:mod:`importlib.abc` -- Abstract base classes related to import
187---------------------------------------------------------------
188
189.. module:: importlib.abc
190 :synopsis: Abstract base classes related to import
191
192The :mod:`importlib.abc` module contains all of the core abstract base classes
193used by :keyword:`import`. Some subclasses of the core abstract base classes
194are also provided to help in implementing the core ABCs.
195
Andrew Svetlova8656542012-08-13 22:19:01 +0300196ABC hierarchy::
197
198 object
Brett Cannon1b799182012-08-17 14:08:24 -0400199 +-- Finder (deprecated)
Andrew Svetlova8656542012-08-13 22:19:01 +0300200 | +-- MetaPathFinder
201 | +-- PathEntryFinder
202 +-- Loader
203 +-- ResourceLoader --------+
204 +-- InspectLoader |
205 +-- ExecutionLoader --+
206 +-- FileLoader
207 +-- SourceLoader
Andrew Svetlova8656542012-08-13 22:19:01 +0300208
Brett Cannon2a922ed2009-03-09 03:35:50 +0000209
210.. class:: Finder
211
Brett Cannon1b799182012-08-17 14:08:24 -0400212 An abstract base class representing a :term:`finder`.
213
214 .. deprecated:: 3.3
215 Use :class:`MetaPathFinder` or :class:`PathEntryFinder` instead.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000216
Brett Cannonf4dc9202012-08-10 12:21:12 -0400217 .. method:: find_module(fullname, path=None)
Brett Cannonb46a1792012-02-27 18:15:42 -0500218
Brett Cannonf4dc9202012-08-10 12:21:12 -0400219 An abstact method for finding a :term:`loader` for the specified
220 module. Originally specified in :pep:`302`, this method was meant
221 for use in :data:`sys.meta_path` and in the path-based import subsystem.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000222
Brett Cannon100883f2013-04-09 16:59:39 -0400223 .. versionchanged:: 3.4
224 Returns ``None`` when called instead of raising
225 :exc:`NotImplementedError`.
226
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000227
Brett Cannon077ef452012-08-02 17:50:06 -0400228.. class:: MetaPathFinder
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000229
Brett Cannonf4dc9202012-08-10 12:21:12 -0400230 An abstract base class representing a :term:`meta path finder`. For
231 compatibility, this is a subclass of :class:`Finder`.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000232
233 .. versionadded:: 3.3
234
235 .. method:: find_module(fullname, path)
236
237 An abstract method for finding a :term:`loader` for the specified
238 module. If this is a top-level import, *path* will be ``None``.
Ezio Melotti1f67e802012-10-21 07:24:13 +0300239 Otherwise, this is a search for a subpackage or module and *path*
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000240 will be the value of :attr:`__path__` from the parent
241 package. If a loader cannot be found, ``None`` is returned.
242
Brett Cannon100883f2013-04-09 16:59:39 -0400243 .. versionchanged:: 3.4
244 Returns ``None`` when called instead of raising
245 :exc:`NotImplementedError`.
246
Brett Cannonf4dc9202012-08-10 12:21:12 -0400247 .. method:: invalidate_caches()
248
249 An optional method which, when called, should invalidate any internal
Brett Cannona6e85812012-08-11 19:41:27 -0400250 cache used by the finder. Used by :func:`importlib.invalidate_caches`
251 when invalidating the caches of all finders on :data:`sys.meta_path`.
Brett Cannonf4dc9202012-08-10 12:21:12 -0400252
Brett Cannon100883f2013-04-09 16:59:39 -0400253 .. versionchanged:: 3.4
254 Returns ``None`` when called instead of ``NotImplemented``.
255
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000256
Brett Cannon077ef452012-08-02 17:50:06 -0400257.. class:: PathEntryFinder
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000258
Brett Cannonf4dc9202012-08-10 12:21:12 -0400259 An abstract base class representing a :term:`path entry finder`. Though
260 it bears some similarities to :class:`MetaPathFinder`, ``PathEntryFinder``
261 is meant for use only within the path-based import subsystem provided
262 by :class:`PathFinder`. This ABC is a subclass of :class:`Finder` for
Brett Cannon100883f2013-04-09 16:59:39 -0400263 compatibility reasons only.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000264
265 .. versionadded:: 3.3
266
Brett Cannon4067aa22013-04-27 23:20:32 -0400267 .. method:: find_loader(fullname)
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000268
269 An abstract method for finding a :term:`loader` for the specified
Brett Cannonf4dc9202012-08-10 12:21:12 -0400270 module. Returns a 2-tuple of ``(loader, portion)`` where ``portion``
271 is a sequence of file system locations contributing to part of a namespace
272 package. The loader may be ``None`` while specifying ``portion`` to
273 signify the contribution of the file system locations to a namespace
274 package. An empty list can be used for ``portion`` to signify the loader
Brett Cannon100883f2013-04-09 16:59:39 -0400275 is not part of a namespace package. If ``loader`` is ``None`` and
276 ``portion`` is the empty list then no loader or location for a namespace
277 package were found (i.e. failure to find anything for the module).
278
279 .. versionchanged:: 3.4
280 Returns ``(None, [])`` instead of raising :exc:`NotImplementedError`.
Brett Cannonf4dc9202012-08-10 12:21:12 -0400281
Brett Cannon4067aa22013-04-27 23:20:32 -0400282 .. method:: find_module(fullname)
Brett Cannonf4dc9202012-08-10 12:21:12 -0400283
284 A concrete implementation of :meth:`Finder.find_module` which is
285 equivalent to ``self.find_loader(fullname)[0]``.
286
287 .. method:: invalidate_caches()
288
289 An optional method which, when called, should invalidate any internal
Brett Cannona6e85812012-08-11 19:41:27 -0400290 cache used by the finder. Used by :meth:`PathFinder.invalidate_caches`
Brett Cannonf4dc9202012-08-10 12:21:12 -0400291 when invalidating the caches of all cached finders.
Brett Cannonb46a1792012-02-27 18:15:42 -0500292
Brett Cannon2a922ed2009-03-09 03:35:50 +0000293
294.. class:: Loader
295
296 An abstract base class for a :term:`loader`.
Guido van Rossum09613542009-03-30 20:34:57 +0000297 See :pep:`302` for the exact definition for a loader.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000298
Brett Cannon9c751b72009-03-09 16:28:16 +0000299 .. method:: load_module(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000300
301 An abstract method for loading a module. If the module cannot be
302 loaded, :exc:`ImportError` is raised, otherwise the loaded module is
303 returned.
304
Guido van Rossum09613542009-03-30 20:34:57 +0000305 If the requested module already exists in :data:`sys.modules`, that
Brett Cannon2a922ed2009-03-09 03:35:50 +0000306 module should be used and reloaded.
Guido van Rossum09613542009-03-30 20:34:57 +0000307 Otherwise the loader should create a new module and insert it into
308 :data:`sys.modules` before any loading begins, to prevent recursion
309 from the import. If the loader inserted a module and the load fails, it
Brett Cannon2a922ed2009-03-09 03:35:50 +0000310 must be removed by the loader from :data:`sys.modules`; modules already
311 in :data:`sys.modules` before the loader began execution should be left
Brett Cannon17738112013-05-31 18:00:56 -0400312 alone (see :func:`importlib.util.module_to_load`).
Brett Cannon2a922ed2009-03-09 03:35:50 +0000313
Guido van Rossum09613542009-03-30 20:34:57 +0000314 The loader should set several attributes on the module.
315 (Note that some of these attributes can change when a module is
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400316 reloaded; see :meth:`init_module_attrs`):
Brett Cannon2a922ed2009-03-09 03:35:50 +0000317
318 - :attr:`__name__`
319 The name of the module.
320
321 - :attr:`__file__`
322 The path to where the module data is stored (not set for built-in
323 modules).
324
Brett Cannon2cefb3c2013-05-25 11:26:11 -0400325 - :attr:`__cached__`
326 The path to where a compiled version of the module is/should be
327 stored (not set when the attribute would be inappropriate).
328
Brett Cannon2a922ed2009-03-09 03:35:50 +0000329 - :attr:`__path__`
Guido van Rossum09613542009-03-30 20:34:57 +0000330 A list of strings specifying the search path within a
Brett Cannon2a922ed2009-03-09 03:35:50 +0000331 package. This attribute is not set on modules.
332
333 - :attr:`__package__`
334 The parent package for the module/package. If the module is
335 top-level then it has a value of the empty string. The
Brett Cannon100883f2013-04-09 16:59:39 -0400336 :func:`importlib.util.module_for_loader` decorator can handle the
337 details for :attr:`__package__`.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000338
339 - :attr:`__loader__`
Brett Cannon100883f2013-04-09 16:59:39 -0400340 The loader used to load the module. The
341 :func:`importlib.util.module_for_loader` decorator can handle the
342 details for :attr:`__package__`.
343
344 .. versionchanged:: 3.4
345 Raise :exc:`ImportError` when called instead of
346 :exc:`NotImplementedError`.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000347
Barry Warsawd7d21942012-07-29 16:36:17 -0400348 .. method:: module_repr(module)
349
Brett Cannon100883f2013-04-09 16:59:39 -0400350 An optional method which when implemented calculates and returns the
351 given module's repr, as a string. The module type's default repr() will
352 use the result of this method as appropriate.
Barry Warsawd7d21942012-07-29 16:36:17 -0400353
Georg Brandl526575d2013-04-11 16:10:13 +0200354 .. versionadded:: 3.3
Barry Warsawd7d21942012-07-29 16:36:17 -0400355
Brett Cannon100883f2013-04-09 16:59:39 -0400356 .. versionchanged:: 3.4
Georg Brandl526575d2013-04-11 16:10:13 +0200357 Made optional instead of an abstractmethod.
Brett Cannon100883f2013-04-09 16:59:39 -0400358
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400359 .. method:: init_module_attrs(module)
360
361 Set the :attr:`__loader__` attribute on the module.
362
363 Subclasses overriding this method should set whatever appropriate
364 attributes it can, getting the module's name from :attr:`__name__` when
365 needed. All values should also be overridden so that reloading works as
366 expected.
367
368 .. versionadded:: 3.4
369
Brett Cannon2a922ed2009-03-09 03:35:50 +0000370
371.. class:: ResourceLoader
372
373 An abstract base class for a :term:`loader` which implements the optional
374 :pep:`302` protocol for loading arbitrary resources from the storage
375 back-end.
376
Brett Cannon9c751b72009-03-09 16:28:16 +0000377 .. method:: get_data(path)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000378
379 An abstract method to return the bytes for the data located at *path*.
Guido van Rossum09613542009-03-30 20:34:57 +0000380 Loaders that have a file-like storage back-end
Brett Cannon16248a42009-04-01 20:47:14 +0000381 that allows storing arbitrary data
Guido van Rossum09613542009-03-30 20:34:57 +0000382 can implement this abstract method to give direct access
Brett Cannon2a922ed2009-03-09 03:35:50 +0000383 to the data stored. :exc:`IOError` is to be raised if the *path* cannot
384 be found. The *path* is expected to be constructed using a module's
Brett Cannon16248a42009-04-01 20:47:14 +0000385 :attr:`__file__` attribute or an item from a package's :attr:`__path__`.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000386
Brett Cannon100883f2013-04-09 16:59:39 -0400387 .. versionchanged:: 3.4
388 Raises :exc:`IOError` instead of :exc:`NotImplementedError`.
389
Brett Cannon2a922ed2009-03-09 03:35:50 +0000390
391.. class:: InspectLoader
392
393 An abstract base class for a :term:`loader` which implements the optional
Guido van Rossum09613542009-03-30 20:34:57 +0000394 :pep:`302` protocol for loaders that inspect modules.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000395
Brett Cannona113ac52009-03-15 01:41:33 +0000396 .. method:: get_code(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000397
Brett Cannon3b62ca82013-05-27 21:11:04 -0400398 Return the code object for a module.
399 ``None`` should be returned if the module does not have a code object
Brett Cannona113ac52009-03-15 01:41:33 +0000400 (e.g. built-in module). :exc:`ImportError` is raised if loader cannot
401 find the requested module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000402
Brett Cannon3b62ca82013-05-27 21:11:04 -0400403 .. note::
404 While the method has a default implementation, it is suggested that
405 it be overridden if possible for performance.
406
R David Murray1b00f252012-08-15 10:43:58 -0400407 .. index::
408 single: universal newlines; importlib.abc.InspectLoader.get_source method
409
Brett Cannon100883f2013-04-09 16:59:39 -0400410 .. versionchanged:: 3.4
Brett Cannon3b62ca82013-05-27 21:11:04 -0400411 No longer abstract and a concrete implementation is provided.
Brett Cannon100883f2013-04-09 16:59:39 -0400412
Brett Cannon9c751b72009-03-09 16:28:16 +0000413 .. method:: get_source(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000414
415 An abstract method to return the source of a module. It is returned as
R David Murray1b00f252012-08-15 10:43:58 -0400416 a text string using :term:`universal newlines`, translating all
R David Murrayee0a9452012-08-15 11:05:36 -0400417 recognized line separators into ``'\n'`` characters. Returns ``None``
418 if no source is available (e.g. a built-in module). Raises
419 :exc:`ImportError` if the loader cannot find the module specified.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000420
Brett Cannon100883f2013-04-09 16:59:39 -0400421 .. versionchanged:: 3.4
422 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
423
Brett Cannona113ac52009-03-15 01:41:33 +0000424 .. method:: is_package(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000425
Brett Cannona113ac52009-03-15 01:41:33 +0000426 An abstract method to return a true value if the module is a package, a
427 false value otherwise. :exc:`ImportError` is raised if the
428 :term:`loader` cannot find the module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000429
Brett Cannon100883f2013-04-09 16:59:39 -0400430 .. versionchanged:: 3.4
431 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
432
Brett Cannon9ffe85e2013-05-26 16:45:10 -0400433 .. method:: source_to_code(data, path='<string>')
434
435 Create a code object from Python source.
436
437 The *data* argument can be whatever the :func:`compile` function
438 supports (i.e. string or bytes). The *path* argument should be
439 the "path" to where the source code originated from, which can be an
440 abstract concept (e.g. location in a zip file).
441
442 .. versionadded:: 3.4
443
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400444 .. method:: init_module_attrs(module)
445
446 Set the :attr:`__package__` attribute and :attr:`__path__` attribute to
447 the empty list if appropriate along with what
448 :meth:`importlib.abc.Loader.init_module_attrs` sets.
449
450 .. versionadded:: 3.4
451
452 .. method:: load_module(fullname)
453
454 Implementation of :meth:`Loader.load_module`.
455
Brett Cannon2a922ed2009-03-09 03:35:50 +0000456
Brett Cannon69194272009-07-20 04:23:48 +0000457.. class:: ExecutionLoader
458
459 An abstract base class which inherits from :class:`InspectLoader` that,
Brett Cannon23460292009-07-20 22:59:00 +0000460 when implemented, helps a module to be executed as a script. The ABC
Brett Cannon69194272009-07-20 04:23:48 +0000461 represents an optional :pep:`302` protocol.
462
463 .. method:: get_filename(fullname)
464
Brett Cannonf23e3742010-06-27 23:57:46 +0000465 An abstract method that is to return the value of :attr:`__file__` for
Brett Cannon69194272009-07-20 04:23:48 +0000466 the specified module. If no path is available, :exc:`ImportError` is
467 raised.
468
Brett Cannonf23e3742010-06-27 23:57:46 +0000469 If source code is available, then the method should return the path to
470 the source file, regardless of whether a bytecode was used to load the
471 module.
472
Brett Cannon100883f2013-04-09 16:59:39 -0400473 .. versionchanged:: 3.4
474 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
475
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400476 .. method:: init_module_attrs(module)
477
478 Set :attr:`__file__` and if initializing a package then set
479 :attr:`__path__` to ``[os.path.dirname(__file__)]`` along with
480 all attributes set by
481 :meth:`importlib.abc.InspectLoader.init_module_attrs`.
482
483 .. versionadded:: 3.4
484
Brett Cannonf23e3742010-06-27 23:57:46 +0000485
Brett Cannon938d44d2012-04-22 19:58:33 -0400486.. class:: FileLoader(fullname, path)
487
488 An abstract base class which inherits from :class:`ResourceLoader` and
Andrew Svetlova60de4f2013-02-17 16:55:58 +0200489 :class:`ExecutionLoader`, providing concrete implementations of
Brett Cannon938d44d2012-04-22 19:58:33 -0400490 :meth:`ResourceLoader.get_data` and :meth:`ExecutionLoader.get_filename`.
491
492 The *fullname* argument is a fully resolved name of the module the loader is
493 to handle. The *path* argument is the path to the file for the module.
494
495 .. versionadded:: 3.3
496
497 .. attribute:: name
498
499 The name of the module the loader can handle.
500
501 .. attribute:: path
502
503 Path to the file of the module.
504
Barry Warsawd7d21942012-07-29 16:36:17 -0400505 .. method:: load_module(fullname)
Brett Cannonc0499522012-05-11 14:48:41 -0400506
Barry Warsawd7d21942012-07-29 16:36:17 -0400507 Calls super's ``load_module()``.
Brett Cannonc0499522012-05-11 14:48:41 -0400508
Brett Cannon938d44d2012-04-22 19:58:33 -0400509 .. method:: get_filename(fullname)
510
Barry Warsawd7d21942012-07-29 16:36:17 -0400511 Returns :attr:`path`.
Brett Cannon938d44d2012-04-22 19:58:33 -0400512
513 .. method:: get_data(path)
514
Brett Cannon3b62ca82013-05-27 21:11:04 -0400515 Reads *path* as a binary file and returns the bytes from it.
Brett Cannon938d44d2012-04-22 19:58:33 -0400516
517
Brett Cannonf23e3742010-06-27 23:57:46 +0000518.. class:: SourceLoader
519
520 An abstract base class for implementing source (and optionally bytecode)
521 file loading. The class inherits from both :class:`ResourceLoader` and
522 :class:`ExecutionLoader`, requiring the implementation of:
523
524 * :meth:`ResourceLoader.get_data`
525 * :meth:`ExecutionLoader.get_filename`
Brett Cannon6dfbff32010-07-21 09:48:31 +0000526 Should only return the path to the source file; sourceless
Brett Cannona81d5272013-06-16 19:17:12 -0400527 loading is not supported.
Brett Cannonf23e3742010-06-27 23:57:46 +0000528
529 The abstract methods defined by this class are to add optional bytecode
Brett Cannon5650e4f2012-11-18 10:03:31 -0500530 file support. Not implementing these optional methods (or causing them to
531 raise :exc:`NotImplementedError`) causes the loader to
Brett Cannonf23e3742010-06-27 23:57:46 +0000532 only work with source code. Implementing the methods allows the loader to
533 work with source *and* bytecode files; it does not allow for *sourceless*
534 loading where only bytecode is provided. Bytecode files are an
535 optimization to speed up loading by removing the parsing step of Python's
536 compiler, and so no bytecode-specific API is exposed.
537
Brett Cannon773468f2012-08-02 17:35:34 -0400538 .. method:: path_stats(path)
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100539
540 Optional abstract method which returns a :class:`dict` containing
541 metadata about the specifed path. Supported dictionary keys are:
542
543 - ``'mtime'`` (mandatory): an integer or floating-point number
544 representing the modification time of the source code;
545 - ``'size'`` (optional): the size in bytes of the source code.
546
547 Any other keys in the dictionary are ignored, to allow for future
Brett Cannon100883f2013-04-09 16:59:39 -0400548 extensions. If the path cannot be handled, :exc:`IOError` is raised.
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100549
550 .. versionadded:: 3.3
551
Brett Cannon100883f2013-04-09 16:59:39 -0400552 .. versionchanged:: 3.4
553 Raise :exc:`IOError` instead of :exc:`NotImplementedError`.
554
Brett Cannon773468f2012-08-02 17:35:34 -0400555 .. method:: path_mtime(path)
Brett Cannonf23e3742010-06-27 23:57:46 +0000556
557 Optional abstract method which returns the modification time for the
558 specified path.
559
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100560 .. deprecated:: 3.3
561 This method is deprecated in favour of :meth:`path_stats`. You don't
562 have to implement it, but it is still available for compatibility
Brett Cannon100883f2013-04-09 16:59:39 -0400563 purposes. Raise :exc:`IOError` if the path cannot be handled.
564
565 .. versionchanged:: 3.4
566 Raise :exc:`IOError` instead of :exc:`NotImplementedError`.
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100567
Brett Cannon773468f2012-08-02 17:35:34 -0400568 .. method:: set_data(path, data)
Brett Cannonf23e3742010-06-27 23:57:46 +0000569
570 Optional abstract method which writes the specified bytes to a file
Brett Cannon61b14252010-07-03 21:48:25 +0000571 path. Any intermediate directories which do not exist are to be created
572 automatically.
573
574 When writing to the path fails because the path is read-only
Brett Cannon2cefb3c2013-05-25 11:26:11 -0400575 (:attr:`errno.EACCES`/:exc:`PermissionError`), do not propagate the
576 exception.
Brett Cannonf23e3742010-06-27 23:57:46 +0000577
Brett Cannon100883f2013-04-09 16:59:39 -0400578 .. versionchanged:: 3.4
579 No longer raises :exc:`NotImplementedError` when called.
580
Brett Cannon773468f2012-08-02 17:35:34 -0400581 .. method:: get_code(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000582
583 Concrete implementation of :meth:`InspectLoader.get_code`.
584
Brett Cannon773468f2012-08-02 17:35:34 -0400585 .. method:: load_module(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000586
587 Concrete implementation of :meth:`Loader.load_module`.
588
Brett Cannon773468f2012-08-02 17:35:34 -0400589 .. method:: get_source(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000590
591 Concrete implementation of :meth:`InspectLoader.get_source`.
592
Brett Cannon773468f2012-08-02 17:35:34 -0400593 .. method:: is_package(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000594
595 Concrete implementation of :meth:`InspectLoader.is_package`. A module
Brett Cannonea0b8232012-06-15 20:00:53 -0400596 is determined to be a package if its file path (as provided by
597 :meth:`ExecutionLoader.get_filename`) is a file named
598 ``__init__`` when the file extension is removed **and** the module name
599 itself does not end in ``__init__``.
Brett Cannonf23e3742010-06-27 23:57:46 +0000600
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400601 .. method:: init_module_attr(module)
602
603 Set :attr:`__cached__` using :func:`imp.cache_from_source`. Other
604 attributes set by
605 :meth:`importlib.abc.ExecutionLoader.init_module_attrs`.
606
607 .. versionadded:: 3.4
608
Brett Cannon69194272009-07-20 04:23:48 +0000609
Brett Cannon78246b62009-01-25 04:56:30 +0000610:mod:`importlib.machinery` -- Importers and path hooks
611------------------------------------------------------
612
613.. module:: importlib.machinery
614 :synopsis: Importers and path hooks
615
616This module contains the various objects that help :keyword:`import`
617find and load modules.
618
Brett Cannoncb66eb02012-05-11 12:58:42 -0400619.. attribute:: SOURCE_SUFFIXES
620
621 A list of strings representing the recognized file suffixes for source
622 modules.
623
624 .. versionadded:: 3.3
625
626.. attribute:: DEBUG_BYTECODE_SUFFIXES
627
628 A list of strings representing the file suffixes for non-optimized bytecode
629 modules.
630
631 .. versionadded:: 3.3
632
633.. attribute:: OPTIMIZED_BYTECODE_SUFFIXES
634
635 A list of strings representing the file suffixes for optimized bytecode
636 modules.
637
638 .. versionadded:: 3.3
639
640.. attribute:: BYTECODE_SUFFIXES
641
642 A list of strings representing the recognized file suffixes for bytecode
643 modules. Set to either :attr:`DEBUG_BYTECODE_SUFFIXES` or
644 :attr:`OPTIMIZED_BYTECODE_SUFFIXES` based on whether ``__debug__`` is true.
645
646 .. versionadded:: 3.3
647
648.. attribute:: EXTENSION_SUFFIXES
649
Nick Coghlan76e07702012-07-18 23:14:57 +1000650 A list of strings representing the recognized file suffixes for
Brett Cannoncb66eb02012-05-11 12:58:42 -0400651 extension modules.
652
653 .. versionadded:: 3.3
654
Nick Coghlanc5afd422012-07-18 23:59:08 +1000655.. function:: all_suffixes()
Nick Coghlan76e07702012-07-18 23:14:57 +1000656
657 Returns a combined list of strings representing all file suffixes for
Nick Coghlanc5afd422012-07-18 23:59:08 +1000658 modules recognized by the standard import machinery. This is a
Nick Coghlan76e07702012-07-18 23:14:57 +1000659 helper for code which simply needs to know if a filesystem path
Nick Coghlanc5afd422012-07-18 23:59:08 +1000660 potentially refers to a module without needing any details on the kind
661 of module (for example, :func:`inspect.getmodulename`)
Nick Coghlan76e07702012-07-18 23:14:57 +1000662
663 .. versionadded:: 3.3
664
665
Brett Cannon78246b62009-01-25 04:56:30 +0000666.. class:: BuiltinImporter
667
Brett Cannon2a922ed2009-03-09 03:35:50 +0000668 An :term:`importer` for built-in modules. All known built-in modules are
669 listed in :data:`sys.builtin_module_names`. This class implements the
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000670 :class:`importlib.abc.MetaPathFinder` and
671 :class:`importlib.abc.InspectLoader` ABCs.
Brett Cannon78246b62009-01-25 04:56:30 +0000672
673 Only class methods are defined by this class to alleviate the need for
674 instantiation.
675
Brett Cannon78246b62009-01-25 04:56:30 +0000676
677.. class:: FrozenImporter
678
Brett Cannon2a922ed2009-03-09 03:35:50 +0000679 An :term:`importer` for frozen modules. This class implements the
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000680 :class:`importlib.abc.MetaPathFinder` and
681 :class:`importlib.abc.InspectLoader` ABCs.
Brett Cannon78246b62009-01-25 04:56:30 +0000682
683 Only class methods are defined by this class to alleviate the need for
684 instantiation.
685
Brett Cannondebb98d2009-02-16 04:18:01 +0000686
Nick Coghlanff794862012-08-02 21:45:24 +1000687.. class:: WindowsRegistryFinder
688
689 :term:`Finder` for modules declared in the Windows registry. This class
Nick Coghlan49417742012-08-02 23:03:58 +1000690 implements the :class:`importlib.abc.Finder` ABC.
Nick Coghlanff794862012-08-02 21:45:24 +1000691
692 Only class methods are defined by this class to alleviate the need for
693 instantiation.
694
695 .. versionadded:: 3.3
696
697
Brett Cannondebb98d2009-02-16 04:18:01 +0000698.. class:: PathFinder
699
Brett Cannon1b799182012-08-17 14:08:24 -0400700 A :term:`Finder` for :data:`sys.path` and package ``__path__`` attributes.
701 This class implements the :class:`importlib.abc.MetaPathFinder` ABC.
Brett Cannondebb98d2009-02-16 04:18:01 +0000702
Brett Cannon1b799182012-08-17 14:08:24 -0400703 Only class methods are defined by this class to alleviate the need for
704 instantiation.
Brett Cannondebb98d2009-02-16 04:18:01 +0000705
Brett Cannon1b799182012-08-17 14:08:24 -0400706 .. classmethod:: find_module(fullname, path=None)
Brett Cannondebb98d2009-02-16 04:18:01 +0000707
Brett Cannon1b799182012-08-17 14:08:24 -0400708 Class method that attempts to find a :term:`loader` for the module
709 specified by *fullname* on :data:`sys.path` or, if defined, on
710 *path*. For each path entry that is searched,
711 :data:`sys.path_importer_cache` is checked. If a non-false object is
Brett Cannon2cefb3c2013-05-25 11:26:11 -0400712 found then it is used as the :term:`path entry finder` to look for the
713 module being searched for. If no entry is found in
Brett Cannon1b799182012-08-17 14:08:24 -0400714 :data:`sys.path_importer_cache`, then :data:`sys.path_hooks` is
715 searched for a finder for the path entry and, if found, is stored in
716 :data:`sys.path_importer_cache` along with being queried about the
717 module. If no finder is ever found then ``None`` is both stored in
718 the cache and returned.
Brett Cannond2e7b332009-02-17 02:45:03 +0000719
Brett Cannonf4dc9202012-08-10 12:21:12 -0400720 .. classmethod:: invalidate_caches()
721
Brett Cannon1b799182012-08-17 14:08:24 -0400722 Calls :meth:`importlib.abc.PathEntryFinder.invalidate_caches` on all
723 finders stored in :attr:`sys.path_importer_cache`.
Brett Cannonf4dc9202012-08-10 12:21:12 -0400724
Brett Cannon27e27f72013-10-18 11:39:04 -0400725 .. versionchanged:: 3.4
Georg Brandl0f5bff22013-10-19 17:46:38 +0200726 Calls objects in :data:`sys.path_hooks` with the current working directory
Brett Cannon27e27f72013-10-18 11:39:04 -0400727 for ``''`` (i.e. the empty string).
728
Brett Cannond2e7b332009-02-17 02:45:03 +0000729
Brett Cannon938d44d2012-04-22 19:58:33 -0400730.. class:: FileFinder(path, \*loader_details)
731
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000732 A concrete implementation of :class:`importlib.abc.PathEntryFinder` which
733 caches results from the file system.
Brett Cannon938d44d2012-04-22 19:58:33 -0400734
735 The *path* argument is the directory for which the finder is in charge of
736 searching.
737
Brett Cannonac9f2f32012-08-10 13:47:54 -0400738 The *loader_details* argument is a variable number of 2-item tuples each
739 containing a loader and a sequence of file suffixes the loader recognizes.
Brett Cannon29b2f172013-06-21 18:31:55 -0400740 The loaders are expected to be callables which accept two arguments of
741 the module's name and the path to the file found.
Brett Cannon938d44d2012-04-22 19:58:33 -0400742
743 The finder will cache the directory contents as necessary, making stat calls
744 for each module search to verify the cache is not outdated. Because cache
745 staleness relies upon the granularity of the operating system's state
746 information of the file system, there is a potential race condition of
747 searching for a module, creating a new file, and then searching for the
748 module the new file represents. If the operations happen fast enough to fit
749 within the granularity of stat calls, then the module search will fail. To
750 prevent this from happening, when you create a module dynamically, make sure
751 to call :func:`importlib.invalidate_caches`.
752
753 .. versionadded:: 3.3
754
Georg Brandl0f5bff22013-10-19 17:46:38 +0200755 .. versionchanged:: 3.4
Brett Cannon27e27f72013-10-18 11:39:04 -0400756 The empty string is no longer special-cased to be changed into ``'.'``.
757
Brett Cannon938d44d2012-04-22 19:58:33 -0400758 .. attribute:: path
759
760 The path the finder will search in.
761
Brett Cannon1d753822013-06-16 19:06:55 -0400762 .. method:: find_loader(fullname)
Brett Cannon938d44d2012-04-22 19:58:33 -0400763
764 Attempt to find the loader to handle *fullname* within :attr:`path`.
765
766 .. method:: invalidate_caches()
767
768 Clear out the internal cache.
769
770 .. classmethod:: path_hook(\*loader_details)
771
772 A class method which returns a closure for use on :attr:`sys.path_hooks`.
773 An instance of :class:`FileFinder` is returned by the closure using the
774 path argument given to the closure directly and *loader_details*
775 indirectly.
776
777 If the argument to the closure is not an existing directory,
778 :exc:`ImportError` is raised.
779
780
781.. class:: SourceFileLoader(fullname, path)
782
783 A concrete implementation of :class:`importlib.abc.SourceLoader` by
784 subclassing :class:`importlib.abc.FileLoader` and providing some concrete
785 implementations of other methods.
786
787 .. versionadded:: 3.3
788
789 .. attribute:: name
790
791 The name of the module that this loader will handle.
792
793 .. attribute:: path
794
795 The path to the source file.
796
797 .. method:: is_package(fullname)
798
799 Return true if :attr:`path` appears to be for a package.
800
801 .. method:: path_stats(path)
802
803 Concrete implementation of :meth:`importlib.abc.SourceLoader.path_stats`.
804
805 .. method:: set_data(path, data)
806
807 Concrete implementation of :meth:`importlib.abc.SourceLoader.set_data`.
808
Brett Cannon938d44d2012-04-22 19:58:33 -0400809
Marc-Andre Lemburg4fe29c92012-04-25 02:31:37 +0200810.. class:: SourcelessFileLoader(fullname, path)
Brett Cannon938d44d2012-04-22 19:58:33 -0400811
812 A concrete implementation of :class:`importlib.abc.FileLoader` which can
813 import bytecode files (i.e. no source code files exist).
814
Marc-Andre Lemburg4fe29c92012-04-25 02:31:37 +0200815 Please note that direct use of bytecode files (and thus not source code
816 files) inhibits your modules from being usable by all Python
817 implementations or new versions of Python which change the bytecode
818 format.
Brett Cannon938d44d2012-04-22 19:58:33 -0400819
820 .. versionadded:: 3.3
821
822 .. attribute:: name
823
824 The name of the module the loader will handle.
825
826 .. attribute:: path
827
828 The path to the bytecode file.
829
830 .. method:: is_package(fullname)
831
832 Determines if the module is a package based on :attr:`path`.
833
834 .. method:: get_code(fullname)
835
836 Returns the code object for :attr:`name` created from :attr:`path`.
837
838 .. method:: get_source(fullname)
839
840 Returns ``None`` as bytecode files have no source when this loader is
841 used.
842
Brett Cannon938d44d2012-04-22 19:58:33 -0400843
844.. class:: ExtensionFileLoader(fullname, path)
845
Eric Snow51794452013-10-03 12:08:55 -0600846 A concrete implementation of :class:`importlib.abc.ExecutionLoader` for
Brett Cannon938d44d2012-04-22 19:58:33 -0400847 extension modules.
848
849 The *fullname* argument specifies the name of the module the loader is to
850 support. The *path* argument is the path to the extension module's file.
851
852 .. versionadded:: 3.3
853
854 .. attribute:: name
855
856 Name of the module the loader supports.
857
858 .. attribute:: path
859
860 Path to the extension module.
861
Barry Warsawd7d21942012-07-29 16:36:17 -0400862 .. method:: load_module(fullname)
Brett Cannon938d44d2012-04-22 19:58:33 -0400863
Brett Cannonc0499522012-05-11 14:48:41 -0400864 Loads the extension module if and only if *fullname* is the same as
865 :attr:`name` or is ``None``.
Brett Cannon938d44d2012-04-22 19:58:33 -0400866
867 .. method:: is_package(fullname)
868
Brett Cannonac9f2f32012-08-10 13:47:54 -0400869 Returns ``True`` if the file path points to a package's ``__init__``
870 module based on :attr:`EXTENSION_SUFFIXES`.
Brett Cannon938d44d2012-04-22 19:58:33 -0400871
872 .. method:: get_code(fullname)
873
874 Returns ``None`` as extension modules lack a code object.
875
876 .. method:: get_source(fullname)
877
878 Returns ``None`` as extension modules do not have source code.
879
Eric Snow51794452013-10-03 12:08:55 -0600880 .. method:: get_filename(fullname)
881
882 Returns :attr:`path`.
883
Eric Snowdcd01b42013-10-04 20:35:34 -0600884 .. versionadded:: 3.4
885
Brett Cannon938d44d2012-04-22 19:58:33 -0400886
Brett Cannond2e7b332009-02-17 02:45:03 +0000887:mod:`importlib.util` -- Utility code for importers
888---------------------------------------------------
889
890.. module:: importlib.util
Brett Cannon75321e82012-03-02 11:58:25 -0500891 :synopsis: Utility code for importers
Brett Cannond2e7b332009-02-17 02:45:03 +0000892
893This module contains the various objects that help in the construction of
894an :term:`importer`.
895
Brett Cannon05a647d2013-06-14 19:02:34 -0400896.. attribute:: MAGIC_NUMBER
897
898 The bytes which represent the bytecode version number. If you need help with
899 loading/writing bytecode then consider :class:`importlib.abc.SourceLoader`.
900
901 .. versionadded:: 3.4
902
Brett Cannona3c96152013-06-14 22:26:30 -0400903.. function:: cache_from_source(path, debug_override=None)
904
905 Return the :pep:`3147` path to the byte-compiled file associated with the
906 source *path*. For example, if *path* is ``/foo/bar/baz.py`` the return
907 value would be ``/foo/bar/__pycache__/baz.cpython-32.pyc`` for Python 3.2.
908 The ``cpython-32`` string comes from the current magic tag (see
909 :func:`get_tag`; if :attr:`sys.implementation.cache_tag` is not defined then
910 :exc:`NotImplementedError` will be raised). The returned path will end in
911 ``.pyc`` when ``__debug__`` is True or ``.pyo`` for an optimized Python
912 (i.e. ``__debug__`` is False). By passing in True or False for
913 *debug_override* you can override the system's value for ``__debug__`` for
914 extension selection.
915
916 *path* need not exist.
917
918 .. versionadded:: 3.4
919
920
921.. function:: source_from_cache(path)
922
923 Given the *path* to a :pep:`3147` file name, return the associated source code
924 file path. For example, if *path* is
925 ``/foo/bar/__pycache__/baz.cpython-32.pyc`` the returned path would be
926 ``/foo/bar/baz.py``. *path* need not exist, however if it does not conform
927 to :pep:`3147` format, a ``ValueError`` is raised. If
928 :attr:`sys.implementation.cache_tag` is not defined,
929 :exc:`NotImplementedError` is raised.
930
931 .. versionadded:: 3.4
932
Brett Cannonf24fecd2013-06-16 18:37:53 -0400933.. function:: decode_source(source_bytes)
934
935 Decode the given bytes representing source code and return it as a string
936 with universal newlines (as required by
937 :meth:`importlib.abc.InspectLoader.get_source`).
938
939 .. versionadded:: 3.4
940
Brett Cannond200bf52012-05-13 13:45:09 -0400941.. function:: resolve_name(name, package)
942
943 Resolve a relative module name to an absolute one.
944
945 If **name** has no leading dots, then **name** is simply returned. This
946 allows for usage such as
947 ``importlib.util.resolve_name('sys', __package__)`` without doing a
948 check to see if the **package** argument is needed.
949
950 :exc:`ValueError` is raised if **name** is a relative module name but
951 package is a false value (e.g. ``None`` or the empty string).
952 :exc:`ValueError` is also raised a relative name would escape its containing
953 package (e.g. requesting ``..bacon`` from within the ``spam`` package).
954
955 .. versionadded:: 3.3
956
Brett Cannonb60a43e2013-05-31 18:11:17 -0400957.. function:: module_to_load(name, *, reset_name=True)
Brett Cannona3687f02013-05-28 17:29:34 -0400958
Brett Cannon357c9fb2013-05-30 17:31:47 -0400959 Returns a :term:`context manager` which provides the module to load. The
960 module will either come from :attr:`sys.modules` in the case of reloading or
961 a fresh module if loading a new module. Proper cleanup of
962 :attr:`sys.modules` occurs if the module was new and an exception was
963 raised.
Brett Cannona3687f02013-05-28 17:29:34 -0400964
Brett Cannonb60a43e2013-05-31 18:11:17 -0400965 If **reset_name** is true and the module requested is being reloaded then
966 the module's :attr:`__name__` attribute will
967 be reset to **name**, else it will be left untouched.
968
Brett Cannona3687f02013-05-28 17:29:34 -0400969 .. versionadded:: 3.4
970
Georg Brandl8a1caa22010-07-29 16:01:11 +0000971.. decorator:: module_for_loader
Brett Cannond2e7b332009-02-17 02:45:03 +0000972
Brett Cannona22faca2013-05-28 17:50:14 -0400973 A :term:`decorator` for :meth:`importlib.abc.Loader.load_module`
Guido van Rossum09613542009-03-30 20:34:57 +0000974 to handle selecting the proper
Brett Cannond2e7b332009-02-17 02:45:03 +0000975 module object to load with. The decorated method is expected to have a call
Brett Cannon2a922ed2009-03-09 03:35:50 +0000976 signature taking two positional arguments
977 (e.g. ``load_module(self, module)``) for which the second argument
Guido van Rossum09613542009-03-30 20:34:57 +0000978 will be the module **object** to be used by the loader.
Brett Cannonefad00d2012-04-27 17:27:14 -0400979 Note that the decorator will not work on static methods because of the
980 assumption of two arguments.
Brett Cannond2e7b332009-02-17 02:45:03 +0000981
Guido van Rossum09613542009-03-30 20:34:57 +0000982 The decorated method will take in the **name** of the module to be loaded
983 as expected for a :term:`loader`. If the module is not found in
Brett Cannon3dc48d62013-05-28 18:35:54 -0400984 :data:`sys.modules` then a new one is constructed. Regardless of where the
985 module came from, :attr:`__loader__` set to **self** and :attr:`__package__`
986 is set based on what :meth:`importlib.abc.InspectLoader.is_package` returns
987 (if available). These attributes are set unconditionally to support
988 reloading.
Brett Cannonefad00d2012-04-27 17:27:14 -0400989
990 If an exception is raised by the decorated method and a module was added to
Brett Cannona87e31c2013-09-13 16:52:19 -0400991 :data:`sys.modules`, then the module will be removed to prevent a partially
992 initialized module from being in left in :data:`sys.modules`. If the module
993 was already in :data:`sys.modules` then it is left alone.
Brett Cannond2e7b332009-02-17 02:45:03 +0000994
Brett Cannonefad00d2012-04-27 17:27:14 -0400995 .. versionchanged:: 3.3
Georg Brandl61063cc2012-06-24 22:48:30 +0200996 :attr:`__loader__` and :attr:`__package__` are automatically set
997 (when possible).
Brett Cannon57b46f52009-03-02 14:38:26 +0000998
Brett Cannon3dc48d62013-05-28 18:35:54 -0400999 .. versionchanged:: 3.4
Brett Cannon0dbb4c72013-05-31 18:56:47 -04001000 Set :attr:`__name__`, :attr:`__loader__` :attr:`__package__`
1001 unconditionally to support reloading.
1002
1003 .. deprecated:: 3.4
1004 For the benefit of :term:`loader` subclasses, please use
1005 :func:`module_to_load` and
1006 :meth:`importlib.abc.Loader.init_module_attrs` instead.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001007
Georg Brandl8a1caa22010-07-29 16:01:11 +00001008.. decorator:: set_loader
Brett Cannon2cf03a82009-03-10 05:17:37 +00001009
Brett Cannona22faca2013-05-28 17:50:14 -04001010 A :term:`decorator` for :meth:`importlib.abc.Loader.load_module`
1011 to set the :attr:`__loader__`
1012 attribute on the returned module. If the attribute is already set the
1013 decorator does nothing. It is assumed that the first positional argument to
1014 the wrapped method (i.e. ``self``) is what :attr:`__loader__` should be set
1015 to.
Brett Cannon2cf03a82009-03-10 05:17:37 +00001016
Brett Cannonefad00d2012-04-27 17:27:14 -04001017 .. note::
Brett Cannona22faca2013-05-28 17:50:14 -04001018 As this decorator sets :attr:`__loader__` after loading the module, it is
Brett Cannon0dbb4c72013-05-31 18:56:47 -04001019 recommended to use :meth:`importlib.abc.Loader.init_module_attrs` instead
1020 when appropriate.
Brett Cannonefad00d2012-04-27 17:27:14 -04001021
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
Brett Cannonefad00d2012-04-27 17:27:14 -04001031 .. note::
Brett Cannona22faca2013-05-28 17:50:14 -04001032 As this decorator sets :attr:`__package__` after loading the module, it is
Brett Cannon0dbb4c72013-05-31 18:56:47 -04001033 recommended to use :meth:`importlib.abc.Loader.init_module_attrs` instead
1034 when appropriate.