blob: 06e9ea3a551f155bc66b9ea420cebb872b7b0f9d [file] [log] [blame]
Brett Cannon07fbd782014-02-06 09:46:08 -05001:mod:`importlib` -- The implementation of :keyword:`import`
2===========================================================
Brett Cannonafccd632009-01-20 02:21:27 +00003
4.. module:: importlib
Brett Cannon07fbd782014-02-06 09:46:08 -05005 :synopsis: The implementation of the import machinery.
Brett Cannonafccd632009-01-20 02:21:27 +00006
7.. moduleauthor:: Brett Cannon <brett@python.org>
8.. sectionauthor:: Brett Cannon <brett@python.org>
9
10.. versionadded:: 3.1
11
Terry Jan Reedyfa089b92016-06-11 15:02:54 -040012**Source code:** :source:`Lib/importlib/__init__.py`
13
14--------------
Brett Cannonafccd632009-01-20 02:21:27 +000015
16Introduction
17------------
18
Brett Cannon07fbd782014-02-06 09:46:08 -050019The purpose of the :mod:`importlib` package is two-fold. One is to provide the
Brett Cannonafccd632009-01-20 02:21:27 +000020implementation of the :keyword:`import` statement (and thus, by extension, the
21:func:`__import__` function) in Python source code. This provides an
Tarek Ziadé434caaa2009-05-14 12:48:09 +000022implementation of :keyword:`import` which is portable to any Python
Brett Cannon07fbd782014-02-06 09:46:08 -050023interpreter. This also provides an implementation which is easier to
Brett Cannonf23e3742010-06-27 23:57:46 +000024comprehend than one implemented in a programming language other than Python.
Brett Cannonafccd632009-01-20 02:21:27 +000025
Brett Cannonf23e3742010-06-27 23:57:46 +000026Two, the components to implement :keyword:`import` are exposed in this
Brett Cannonafccd632009-01-20 02:21:27 +000027package, making it easier for users to create their own custom objects (known
Brett Cannondebb98d2009-02-16 04:18:01 +000028generically as an :term:`importer`) to participate in the import process.
Brett Cannonafccd632009-01-20 02:21:27 +000029
30.. seealso::
31
32 :ref:`import`
33 The language reference for the :keyword:`import` statement.
34
Georg Brandlb7354a62014-10-29 10:57:37 +010035 `Packages specification <http://legacy.python.org/doc/essays/packages.html>`__
Brett Cannonafccd632009-01-20 02:21:27 +000036 Original specification of packages. Some semantics have changed since
Georg Brandl375aec22011-01-15 17:03:02 +000037 the writing of this document (e.g. redirecting based on ``None``
Brett Cannonafccd632009-01-20 02:21:27 +000038 in :data:`sys.modules`).
39
40 The :func:`.__import__` function
Brett Cannon0e13c942010-06-29 18:26:11 +000041 The :keyword:`import` statement is syntactic sugar for this function.
Brett Cannonafccd632009-01-20 02:21:27 +000042
43 :pep:`235`
44 Import on Case-Insensitive Platforms
45
46 :pep:`263`
47 Defining Python Source Code Encodings
48
49 :pep:`302`
Brett Cannonf23e3742010-06-27 23:57:46 +000050 New Import Hooks
Brett Cannonafccd632009-01-20 02:21:27 +000051
52 :pep:`328`
53 Imports: Multi-Line and Absolute/Relative
54
55 :pep:`366`
56 Main module explicit relative imports
57
Eric Snow338502b2016-05-28 11:56:53 -060058 :pep:`420`
59 Implicit namespace packages
60
Brett Cannon07fbd782014-02-06 09:46:08 -050061 :pep:`451`
62 A ModuleSpec Type for the Import System
63
Nick Coghland5cacbb2015-05-23 22:24:10 +100064 :pep:`488`
65 Elimination of PYO files
66
67 :pep:`489`
68 Multi-phase extension module initialization
69
Brett Cannon8917d5e2010-01-13 19:21:00 +000070 :pep:`3120`
Brett Cannonafccd632009-01-20 02:21:27 +000071 Using UTF-8 as the Default Source Encoding
72
Brett Cannon30b7a902010-06-27 21:49:22 +000073 :pep:`3147`
74 PYC Repository Directories
75
Brett Cannonafccd632009-01-20 02:21:27 +000076
77Functions
78---------
79
Brett Cannoncb4996a2012-08-06 16:34:44 -040080.. function:: __import__(name, globals=None, locals=None, fromlist=(), level=0)
Brett Cannonafccd632009-01-20 02:21:27 +000081
Brett Cannonf23e3742010-06-27 23:57:46 +000082 An implementation of the built-in :func:`__import__` function.
Brett Cannonafccd632009-01-20 02:21:27 +000083
Brett Cannon3fa84222015-02-20 10:34:20 -050084 .. note::
85 Programmatic importing of modules should use :func:`import_module`
86 instead of this function.
87
Brett Cannonafccd632009-01-20 02:21:27 +000088.. function:: import_module(name, package=None)
89
Brett Cannon33418c82009-01-22 18:37:20 +000090 Import a module. The *name* argument specifies what module to
Brett Cannonafccd632009-01-20 02:21:27 +000091 import in absolute or relative terms
92 (e.g. either ``pkg.mod`` or ``..mod``). If the name is
Guido van Rossum09613542009-03-30 20:34:57 +000093 specified in relative terms, then the *package* argument must be set to
94 the name of the package which is to act as the anchor for resolving the
Brett Cannonafccd632009-01-20 02:21:27 +000095 package name (e.g. ``import_module('..mod', 'pkg.subpkg')`` will import
Brett Cannon2c318a12009-02-07 01:15:27 +000096 ``pkg.mod``).
Brett Cannon78246b62009-01-25 04:56:30 +000097
Brett Cannon2c318a12009-02-07 01:15:27 +000098 The :func:`import_module` function acts as a simplifying wrapper around
Brett Cannon9f4cb1c2009-04-01 23:26:47 +000099 :func:`importlib.__import__`. This means all semantics of the function are
Brett Cannon3fa84222015-02-20 10:34:20 -0500100 derived from :func:`importlib.__import__`. The most important difference
101 between these two functions is that :func:`import_module` returns the
102 specified package or module (e.g. ``pkg.mod``), while :func:`__import__`
103 returns the top-level package or module (e.g. ``pkg``).
104
105 If you are dynamically importing a module that was created since the
106 interpreter began execution (e.g., created a Python source file), you may
107 need to call :func:`invalidate_caches` in order for the new module to be
108 noticed by the import system.
Guido van Rossum09613542009-03-30 20:34:57 +0000109
Brett Cannon98620d82013-12-13 13:57:41 -0500110 .. versionchanged:: 3.3
111 Parent packages are automatically imported.
112
Brett Cannonee78a2b2012-05-12 17:43:17 -0400113.. function:: find_loader(name, path=None)
114
115 Find the loader for a module, optionally within the specified *path*. If the
116 module is in :attr:`sys.modules`, then ``sys.modules[name].__loader__`` is
Brett Cannon32799232013-03-13 11:09:08 -0700117 returned (unless the loader would be ``None`` or is not set, in which case
Brett Cannonee78a2b2012-05-12 17:43:17 -0400118 :exc:`ValueError` is raised). Otherwise a search using :attr:`sys.meta_path`
119 is done. ``None`` is returned if no loader is found.
120
Brett Cannon56b4ca72012-11-17 09:30:55 -0500121 A dotted name does not have its parent's implicitly imported as that requires
122 loading them and that may not be desired. To properly import a submodule you
123 will need to import all parent packages of the submodule and use the correct
124 argument to *path*.
Brett Cannonee78a2b2012-05-12 17:43:17 -0400125
Brett Cannon32799232013-03-13 11:09:08 -0700126 .. versionadded:: 3.3
127
128 .. versionchanged:: 3.4
129 If ``__loader__`` is not set, raise :exc:`ValueError`, just like when the
130 attribute is set to ``None``.
131
Eric Snowca2d8542013-12-16 23:06:52 -0700132 .. deprecated:: 3.4
Eric Snow6029e082014-01-25 15:32:46 -0700133 Use :func:`importlib.util.find_spec` instead.
Eric Snowca2d8542013-12-16 23:06:52 -0700134
Antoine Pitrouc541f8e2012-02-20 01:48:16 +0100135.. function:: invalidate_caches()
136
Brett Cannonf4dc9202012-08-10 12:21:12 -0400137 Invalidate the internal caches of finders stored at
138 :data:`sys.meta_path`. If a finder implements ``invalidate_caches()`` then it
Brett Cannon4067aa22013-04-27 23:20:32 -0400139 will be called to perform the invalidation. This function should be called
140 if any modules are created/installed while your program is running to
141 guarantee all finders will notice the new module's existence.
Antoine Pitrouc541f8e2012-02-20 01:48:16 +0100142
143 .. versionadded:: 3.3
144
Brett Cannon3fe35e62013-06-14 15:04:26 -0400145.. function:: reload(module)
146
147 Reload a previously imported *module*. The argument must be a module object,
148 so it must have been successfully imported before. This is useful if you
149 have edited the module source file using an external editor and want to try
150 out the new version without leaving the Python interpreter. The return value
Brett Cannon8ad37862013-10-25 13:52:46 -0400151 is the module object (which can be different if re-importing causes a
152 different object to be placed in :data:`sys.modules`).
Brett Cannon3fe35e62013-06-14 15:04:26 -0400153
Brett Cannon8ad37862013-10-25 13:52:46 -0400154 When :func:`reload` is executed:
Brett Cannon3fe35e62013-06-14 15:04:26 -0400155
Larry Hastings3732ed22014-03-15 21:13:56 -0700156 * Python module's code is recompiled and the module-level code re-executed,
Brett Cannon3fe35e62013-06-14 15:04:26 -0400157 defining a new set of objects which are bound to names in the module's
158 dictionary by reusing the :term:`loader` which originally loaded the
159 module. The ``init`` function of extension modules is not called a second
160 time.
161
162 * As with all other objects in Python the old objects are only reclaimed
163 after their reference counts drop to zero.
164
165 * The names in the module namespace are updated to point to any new or
166 changed objects.
167
168 * Other references to the old objects (such as names external to the module) are
169 not rebound to refer to the new objects and must be updated in each namespace
170 where they occur if that is desired.
171
172 There are a number of other caveats:
173
Brett Cannon3fe35e62013-06-14 15:04:26 -0400174 When a module is reloaded, its dictionary (containing the module's global
175 variables) is retained. Redefinitions of names will override the old
176 definitions, so this is generally not a problem. If the new version of a
177 module does not define a name that was defined by the old version, the old
178 definition remains. This feature can be used to the module's advantage if it
179 maintains a global table or cache of objects --- with a :keyword:`try`
180 statement it can test for the table's presence and skip its initialization if
181 desired::
182
183 try:
184 cache
185 except NameError:
186 cache = {}
187
Robert Collins1ae28d22015-08-05 08:20:53 +1200188 It is generally not very useful to reload built-in or dynamically loaded
189 modules. Reloading :mod:`sys`, :mod:`__main__`, :mod:`builtins` and other
190 key modules is not recommended. In many cases extension modules are not
191 designed to be initialized more than once, and may fail in arbitrary ways
192 when reloaded.
Brett Cannon3fe35e62013-06-14 15:04:26 -0400193
194 If a module imports objects from another module using :keyword:`from` ...
195 :keyword:`import` ..., calling :func:`reload` for the other module does not
196 redefine the objects imported from it --- one way around this is to
197 re-execute the :keyword:`from` statement, another is to use :keyword:`import`
198 and qualified names (*module.name*) instead.
199
200 If a module instantiates instances of a class, reloading the module that
201 defines the class does not affect the method definitions of the instances ---
202 they continue to use the old class definition. The same is true for derived
203 classes.
204
205 .. versionadded:: 3.4
206
Brett Cannon78246b62009-01-25 04:56:30 +0000207
Brett Cannon2a922ed2009-03-09 03:35:50 +0000208:mod:`importlib.abc` -- Abstract base classes related to import
209---------------------------------------------------------------
210
211.. module:: importlib.abc
212 :synopsis: Abstract base classes related to import
213
Terry Jan Reedydcb6c882016-06-22 22:46:34 -0400214**Source code:** :source:`Lib/importlib/abc.py`
215
216--------------
217
218
Brett Cannon2a922ed2009-03-09 03:35:50 +0000219The :mod:`importlib.abc` module contains all of the core abstract base classes
220used by :keyword:`import`. Some subclasses of the core abstract base classes
221are also provided to help in implementing the core ABCs.
222
Andrew Svetlova8656542012-08-13 22:19:01 +0300223ABC hierarchy::
224
225 object
Brett Cannon1b799182012-08-17 14:08:24 -0400226 +-- Finder (deprecated)
Andrew Svetlova8656542012-08-13 22:19:01 +0300227 | +-- MetaPathFinder
228 | +-- PathEntryFinder
229 +-- Loader
230 +-- ResourceLoader --------+
231 +-- InspectLoader |
232 +-- ExecutionLoader --+
233 +-- FileLoader
234 +-- SourceLoader
Andrew Svetlova8656542012-08-13 22:19:01 +0300235
Brett Cannon2a922ed2009-03-09 03:35:50 +0000236
237.. class:: Finder
238
Brett Cannon1b799182012-08-17 14:08:24 -0400239 An abstract base class representing a :term:`finder`.
240
241 .. deprecated:: 3.3
242 Use :class:`MetaPathFinder` or :class:`PathEntryFinder` instead.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000243
Berker Peksag6e9d2e62015-12-08 12:14:50 +0200244 .. abstractmethod:: find_module(fullname, path=None)
Brett Cannonb46a1792012-02-27 18:15:42 -0500245
Brett Cannonf4dc9202012-08-10 12:21:12 -0400246 An abstact method for finding a :term:`loader` for the specified
247 module. Originally specified in :pep:`302`, this method was meant
248 for use in :data:`sys.meta_path` and in the path-based import subsystem.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000249
Brett Cannon100883f2013-04-09 16:59:39 -0400250 .. versionchanged:: 3.4
251 Returns ``None`` when called instead of raising
252 :exc:`NotImplementedError`.
253
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000254
Brett Cannon077ef452012-08-02 17:50:06 -0400255.. class:: MetaPathFinder
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000256
Brett Cannonf4dc9202012-08-10 12:21:12 -0400257 An abstract base class representing a :term:`meta path finder`. For
258 compatibility, this is a subclass of :class:`Finder`.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000259
260 .. versionadded:: 3.3
261
Eric Snowca2d8542013-12-16 23:06:52 -0700262 .. method:: find_spec(fullname, path, target=None)
263
264 An abstract method for finding a :term:`spec <module spec>` for
265 the specified module. If this is a top-level import, *path* will
266 be ``None``. Otherwise, this is a search for a subpackage or
267 module and *path* will be the value of :attr:`__path__` from the
268 parent package. If a spec cannot be found, ``None`` is returned.
269 When passed in, ``target`` is a module object that the finder may
270 use to make a more educated about what spec to return.
271
272 .. versionadded:: 3.4
273
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000274 .. method:: find_module(fullname, path)
275
Eric Snowca2d8542013-12-16 23:06:52 -0700276 A legacy method for finding a :term:`loader` for the specified
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000277 module. If this is a top-level import, *path* will be ``None``.
Ezio Melotti1f67e802012-10-21 07:24:13 +0300278 Otherwise, this is a search for a subpackage or module and *path*
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000279 will be the value of :attr:`__path__` from the parent
280 package. If a loader cannot be found, ``None`` is returned.
281
Brett Cannon8d942292014-01-07 15:52:42 -0500282 If :meth:`find_spec` is defined, backwards-compatible functionality is
283 provided.
284
Brett Cannon100883f2013-04-09 16:59:39 -0400285 .. versionchanged:: 3.4
286 Returns ``None`` when called instead of raising
Brett Cannon8d942292014-01-07 15:52:42 -0500287 :exc:`NotImplementedError`. Can use :meth:`find_spec` to provide
288 functionality.
Brett Cannon100883f2013-04-09 16:59:39 -0400289
Eric Snowca2d8542013-12-16 23:06:52 -0700290 .. deprecated:: 3.4
291 Use :meth:`find_spec` instead.
292
Brett Cannonf4dc9202012-08-10 12:21:12 -0400293 .. method:: invalidate_caches()
294
295 An optional method which, when called, should invalidate any internal
Brett Cannona6e85812012-08-11 19:41:27 -0400296 cache used by the finder. Used by :func:`importlib.invalidate_caches`
297 when invalidating the caches of all finders on :data:`sys.meta_path`.
Brett Cannonf4dc9202012-08-10 12:21:12 -0400298
Brett Cannon100883f2013-04-09 16:59:39 -0400299 .. versionchanged:: 3.4
300 Returns ``None`` when called instead of ``NotImplemented``.
301
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000302
Brett Cannon077ef452012-08-02 17:50:06 -0400303.. class:: PathEntryFinder
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000304
Brett Cannonf4dc9202012-08-10 12:21:12 -0400305 An abstract base class representing a :term:`path entry finder`. Though
306 it bears some similarities to :class:`MetaPathFinder`, ``PathEntryFinder``
307 is meant for use only within the path-based import subsystem provided
308 by :class:`PathFinder`. This ABC is a subclass of :class:`Finder` for
Brett Cannon100883f2013-04-09 16:59:39 -0400309 compatibility reasons only.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000310
311 .. versionadded:: 3.3
312
Eric Snowca2d8542013-12-16 23:06:52 -0700313 .. method:: find_spec(fullname, target=None)
314
315 An abstract method for finding a :term:`spec <module spec>` for
316 the specified module. The finder will search for the module only
317 within the :term:`path entry` to which it is assigned. If a spec
318 cannot be found, ``None`` is returned. When passed in, ``target``
319 is a module object that the finder may use to make a more educated
320 about what spec to return.
321
322 .. versionadded:: 3.4
323
Brett Cannon4067aa22013-04-27 23:20:32 -0400324 .. method:: find_loader(fullname)
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000325
Eric Snowca2d8542013-12-16 23:06:52 -0700326 A legacy method for finding a :term:`loader` for the specified
Brett Cannonf4dc9202012-08-10 12:21:12 -0400327 module. Returns a 2-tuple of ``(loader, portion)`` where ``portion``
328 is a sequence of file system locations contributing to part of a namespace
329 package. The loader may be ``None`` while specifying ``portion`` to
330 signify the contribution of the file system locations to a namespace
331 package. An empty list can be used for ``portion`` to signify the loader
Brett Cannon100883f2013-04-09 16:59:39 -0400332 is not part of a namespace package. If ``loader`` is ``None`` and
333 ``portion`` is the empty list then no loader or location for a namespace
334 package were found (i.e. failure to find anything for the module).
335
Brett Cannon8d942292014-01-07 15:52:42 -0500336 If :meth:`find_spec` is defined then backwards-compatible functionality is
337 provided.
338
Brett Cannon100883f2013-04-09 16:59:39 -0400339 .. versionchanged:: 3.4
340 Returns ``(None, [])`` instead of raising :exc:`NotImplementedError`.
Brett Cannon8d942292014-01-07 15:52:42 -0500341 Uses :meth:`find_spec` when available to provide functionality.
Brett Cannonf4dc9202012-08-10 12:21:12 -0400342
Eric Snowca2d8542013-12-16 23:06:52 -0700343 .. deprecated:: 3.4
344 Use :meth:`find_spec` instead.
345
Brett Cannon4067aa22013-04-27 23:20:32 -0400346 .. method:: find_module(fullname)
Brett Cannonf4dc9202012-08-10 12:21:12 -0400347
348 A concrete implementation of :meth:`Finder.find_module` which is
349 equivalent to ``self.find_loader(fullname)[0]``.
350
Eric Snowca2d8542013-12-16 23:06:52 -0700351 .. deprecated:: 3.4
352 Use :meth:`find_spec` instead.
353
Brett Cannonf4dc9202012-08-10 12:21:12 -0400354 .. method:: invalidate_caches()
355
356 An optional method which, when called, should invalidate any internal
Brett Cannona6e85812012-08-11 19:41:27 -0400357 cache used by the finder. Used by :meth:`PathFinder.invalidate_caches`
Brett Cannonf4dc9202012-08-10 12:21:12 -0400358 when invalidating the caches of all cached finders.
Brett Cannonb46a1792012-02-27 18:15:42 -0500359
Brett Cannon2a922ed2009-03-09 03:35:50 +0000360
361.. class:: Loader
362
363 An abstract base class for a :term:`loader`.
Guido van Rossum09613542009-03-30 20:34:57 +0000364 See :pep:`302` for the exact definition for a loader.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000365
Eric Snowca2d8542013-12-16 23:06:52 -0700366 .. method:: create_module(spec)
367
Brett Cannon02d84542015-01-09 11:39:21 -0500368 A method that returns the module object to use when
369 importing a module. This method may return ``None``,
370 indicating that default module creation semantics should take place.
Eric Snowca2d8542013-12-16 23:06:52 -0700371
372 .. versionadded:: 3.4
373
Brett Cannon02d84542015-01-09 11:39:21 -0500374 .. versionchanged:: 3.5
375 Starting in Python 3.6, this method will not be optional when
376 :meth:`exec_module` is defined.
377
Eric Snowca2d8542013-12-16 23:06:52 -0700378 .. method:: exec_module(module)
379
380 An abstract method that executes the module in its own namespace
381 when a module is imported or reloaded. The module should already
382 be initialized when exec_module() is called.
383
384 .. versionadded:: 3.4
385
Brett Cannon9c751b72009-03-09 16:28:16 +0000386 .. method:: load_module(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000387
Eric Snowca2d8542013-12-16 23:06:52 -0700388 A legacy method for loading a module. If the module cannot be
Brett Cannon2a922ed2009-03-09 03:35:50 +0000389 loaded, :exc:`ImportError` is raised, otherwise the loaded module is
390 returned.
391
Guido van Rossum09613542009-03-30 20:34:57 +0000392 If the requested module already exists in :data:`sys.modules`, that
Brett Cannon2a922ed2009-03-09 03:35:50 +0000393 module should be used and reloaded.
Guido van Rossum09613542009-03-30 20:34:57 +0000394 Otherwise the loader should create a new module and insert it into
395 :data:`sys.modules` before any loading begins, to prevent recursion
396 from the import. If the loader inserted a module and the load fails, it
Brett Cannon2a922ed2009-03-09 03:35:50 +0000397 must be removed by the loader from :data:`sys.modules`; modules already
398 in :data:`sys.modules` before the loader began execution should be left
Eric Snowb523f842013-11-22 09:05:39 -0700399 alone (see :func:`importlib.util.module_for_loader`).
Brett Cannon2a922ed2009-03-09 03:35:50 +0000400
Guido van Rossum09613542009-03-30 20:34:57 +0000401 The loader should set several attributes on the module.
402 (Note that some of these attributes can change when a module is
Eric Snowb523f842013-11-22 09:05:39 -0700403 reloaded):
Brett Cannon2a922ed2009-03-09 03:35:50 +0000404
405 - :attr:`__name__`
406 The name of the module.
407
408 - :attr:`__file__`
409 The path to where the module data is stored (not set for built-in
410 modules).
411
Brett Cannon2cefb3c2013-05-25 11:26:11 -0400412 - :attr:`__cached__`
413 The path to where a compiled version of the module is/should be
414 stored (not set when the attribute would be inappropriate).
415
Brett Cannon2a922ed2009-03-09 03:35:50 +0000416 - :attr:`__path__`
Guido van Rossum09613542009-03-30 20:34:57 +0000417 A list of strings specifying the search path within a
Brett Cannon2a922ed2009-03-09 03:35:50 +0000418 package. This attribute is not set on modules.
419
420 - :attr:`__package__`
421 The parent package for the module/package. If the module is
422 top-level then it has a value of the empty string. The
Brett Cannon100883f2013-04-09 16:59:39 -0400423 :func:`importlib.util.module_for_loader` decorator can handle the
424 details for :attr:`__package__`.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000425
426 - :attr:`__loader__`
Brett Cannon100883f2013-04-09 16:59:39 -0400427 The loader used to load the module. The
428 :func:`importlib.util.module_for_loader` decorator can handle the
429 details for :attr:`__package__`.
430
Brett Cannon8d942292014-01-07 15:52:42 -0500431 When :meth:`exec_module` is available then backwards-compatible
432 functionality is provided.
433
Brett Cannon100883f2013-04-09 16:59:39 -0400434 .. versionchanged:: 3.4
435 Raise :exc:`ImportError` when called instead of
Brett Cannon8d942292014-01-07 15:52:42 -0500436 :exc:`NotImplementedError`. Functionality provided when
437 :meth:`exec_module` is available.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000438
Eric Snowca2d8542013-12-16 23:06:52 -0700439 .. deprecated:: 3.4
440 The recommended API for loading a module is :meth:`exec_module`
Brett Cannon02d84542015-01-09 11:39:21 -0500441 (and :meth:`create_module`). Loaders should implement
Eric Snowca2d8542013-12-16 23:06:52 -0700442 it instead of load_module(). The import machinery takes care of
443 all the other responsibilities of load_module() when exec_module()
444 is implemented.
445
Barry Warsawd7d21942012-07-29 16:36:17 -0400446 .. method:: module_repr(module)
447
Eric Snowca2d8542013-12-16 23:06:52 -0700448 A legacy method which when implemented calculates and returns the
Brett Cannon100883f2013-04-09 16:59:39 -0400449 given module's repr, as a string. The module type's default repr() will
450 use the result of this method as appropriate.
Barry Warsawd7d21942012-07-29 16:36:17 -0400451
Georg Brandl526575d2013-04-11 16:10:13 +0200452 .. versionadded:: 3.3
Barry Warsawd7d21942012-07-29 16:36:17 -0400453
Brett Cannon100883f2013-04-09 16:59:39 -0400454 .. versionchanged:: 3.4
Georg Brandl526575d2013-04-11 16:10:13 +0200455 Made optional instead of an abstractmethod.
Brett Cannon100883f2013-04-09 16:59:39 -0400456
Eric Snowca2d8542013-12-16 23:06:52 -0700457 .. deprecated:: 3.4
458 The import machinery now takes care of this automatically.
459
Brett Cannon2a922ed2009-03-09 03:35:50 +0000460
461.. class:: ResourceLoader
462
463 An abstract base class for a :term:`loader` which implements the optional
464 :pep:`302` protocol for loading arbitrary resources from the storage
465 back-end.
466
Berker Peksag6e9d2e62015-12-08 12:14:50 +0200467 .. abstractmethod:: get_data(path)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000468
469 An abstract method to return the bytes for the data located at *path*.
Guido van Rossum09613542009-03-30 20:34:57 +0000470 Loaders that have a file-like storage back-end
Brett Cannon16248a42009-04-01 20:47:14 +0000471 that allows storing arbitrary data
Guido van Rossum09613542009-03-30 20:34:57 +0000472 can implement this abstract method to give direct access
Andrew Svetlov08af0002014-04-01 01:13:30 +0300473 to the data stored. :exc:`OSError` is to be raised if the *path* cannot
Brett Cannon2a922ed2009-03-09 03:35:50 +0000474 be found. The *path* is expected to be constructed using a module's
Brett Cannon16248a42009-04-01 20:47:14 +0000475 :attr:`__file__` attribute or an item from a package's :attr:`__path__`.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000476
Brett Cannon100883f2013-04-09 16:59:39 -0400477 .. versionchanged:: 3.4
Andrew Svetlov08af0002014-04-01 01:13:30 +0300478 Raises :exc:`OSError` instead of :exc:`NotImplementedError`.
Brett Cannon100883f2013-04-09 16:59:39 -0400479
Brett Cannon2a922ed2009-03-09 03:35:50 +0000480
481.. class:: InspectLoader
482
483 An abstract base class for a :term:`loader` which implements the optional
Guido van Rossum09613542009-03-30 20:34:57 +0000484 :pep:`302` protocol for loaders that inspect modules.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000485
Brett Cannona113ac52009-03-15 01:41:33 +0000486 .. method:: get_code(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000487
R David Murray0ae7ae12014-01-08 18:16:02 -0500488 Return the code object for a module, or ``None`` if the module does not
489 have a code object (as would be the case, for example, for a built-in
490 module). Raise an :exc:`ImportError` if loader cannot find the
491 requested module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000492
Brett Cannon3b62ca82013-05-27 21:11:04 -0400493 .. note::
494 While the method has a default implementation, it is suggested that
495 it be overridden if possible for performance.
496
R David Murray1b00f252012-08-15 10:43:58 -0400497 .. index::
498 single: universal newlines; importlib.abc.InspectLoader.get_source method
499
Brett Cannon100883f2013-04-09 16:59:39 -0400500 .. versionchanged:: 3.4
Brett Cannon3b62ca82013-05-27 21:11:04 -0400501 No longer abstract and a concrete implementation is provided.
Brett Cannon100883f2013-04-09 16:59:39 -0400502
Berker Peksag6e9d2e62015-12-08 12:14:50 +0200503 .. abstractmethod:: get_source(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000504
505 An abstract method to return the source of a module. It is returned as
R David Murray1b00f252012-08-15 10:43:58 -0400506 a text string using :term:`universal newlines`, translating all
R David Murrayee0a9452012-08-15 11:05:36 -0400507 recognized line separators into ``'\n'`` characters. Returns ``None``
508 if no source is available (e.g. a built-in module). Raises
509 :exc:`ImportError` if the loader cannot find the module specified.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000510
Brett Cannon100883f2013-04-09 16:59:39 -0400511 .. versionchanged:: 3.4
512 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
513
Brett Cannona113ac52009-03-15 01:41:33 +0000514 .. method:: is_package(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000515
Brett Cannona113ac52009-03-15 01:41:33 +0000516 An abstract method to return a true value if the module is a package, a
517 false value otherwise. :exc:`ImportError` is raised if the
518 :term:`loader` cannot find the module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000519
Brett Cannon100883f2013-04-09 16:59:39 -0400520 .. versionchanged:: 3.4
521 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
522
Brett Cannon6eaac132014-05-09 12:28:22 -0400523 .. staticmethod:: source_to_code(data, path='<string>')
Brett Cannon9ffe85e2013-05-26 16:45:10 -0400524
525 Create a code object from Python source.
526
527 The *data* argument can be whatever the :func:`compile` function
528 supports (i.e. string or bytes). The *path* argument should be
529 the "path" to where the source code originated from, which can be an
530 abstract concept (e.g. location in a zip file).
531
Brett Cannon6eaac132014-05-09 12:28:22 -0400532 With the subsequent code object one can execute it in a module by
533 running ``exec(code, module.__dict__)``.
534
Brett Cannon9ffe85e2013-05-26 16:45:10 -0400535 .. versionadded:: 3.4
536
Brett Cannon6eaac132014-05-09 12:28:22 -0400537 .. versionchanged:: 3.5
538 Made the method static.
539
Eric Snowca2d8542013-12-16 23:06:52 -0700540 .. method:: exec_module(module)
541
542 Implementation of :meth:`Loader.exec_module`.
543
544 .. versionadded:: 3.4
545
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400546 .. method:: load_module(fullname)
547
Eric Snowca2d8542013-12-16 23:06:52 -0700548 Implementation of :meth:`Loader.load_module`.
549
550 .. deprecated:: 3.4
551 use :meth:`exec_module` instead.
Brett Cannon0dbb4c72013-05-31 18:56:47 -0400552
Brett Cannon2a922ed2009-03-09 03:35:50 +0000553
Brett Cannon69194272009-07-20 04:23:48 +0000554.. class:: ExecutionLoader
555
556 An abstract base class which inherits from :class:`InspectLoader` that,
Brett Cannon23460292009-07-20 22:59:00 +0000557 when implemented, helps a module to be executed as a script. The ABC
Brett Cannon69194272009-07-20 04:23:48 +0000558 represents an optional :pep:`302` protocol.
559
Berker Peksag6e9d2e62015-12-08 12:14:50 +0200560 .. abstractmethod:: get_filename(fullname)
Brett Cannon69194272009-07-20 04:23:48 +0000561
Brett Cannonf23e3742010-06-27 23:57:46 +0000562 An abstract method that is to return the value of :attr:`__file__` for
Brett Cannon69194272009-07-20 04:23:48 +0000563 the specified module. If no path is available, :exc:`ImportError` is
564 raised.
565
Brett Cannonf23e3742010-06-27 23:57:46 +0000566 If source code is available, then the method should return the path to
567 the source file, regardless of whether a bytecode was used to load the
568 module.
569
Brett Cannon100883f2013-04-09 16:59:39 -0400570 .. versionchanged:: 3.4
571 Raises :exc:`ImportError` instead of :exc:`NotImplementedError`.
572
Brett Cannonf23e3742010-06-27 23:57:46 +0000573
Brett Cannon938d44d2012-04-22 19:58:33 -0400574.. class:: FileLoader(fullname, path)
575
576 An abstract base class which inherits from :class:`ResourceLoader` and
Andrew Svetlova60de4f2013-02-17 16:55:58 +0200577 :class:`ExecutionLoader`, providing concrete implementations of
Brett Cannon938d44d2012-04-22 19:58:33 -0400578 :meth:`ResourceLoader.get_data` and :meth:`ExecutionLoader.get_filename`.
579
580 The *fullname* argument is a fully resolved name of the module the loader is
581 to handle. The *path* argument is the path to the file for the module.
582
583 .. versionadded:: 3.3
584
585 .. attribute:: name
586
587 The name of the module the loader can handle.
588
589 .. attribute:: path
590
591 Path to the file of the module.
592
Barry Warsawd7d21942012-07-29 16:36:17 -0400593 .. method:: load_module(fullname)
Brett Cannonc0499522012-05-11 14:48:41 -0400594
Barry Warsawd7d21942012-07-29 16:36:17 -0400595 Calls super's ``load_module()``.
Brett Cannonc0499522012-05-11 14:48:41 -0400596
Eric Snowca2d8542013-12-16 23:06:52 -0700597 .. deprecated:: 3.4
598 Use :meth:`Loader.exec_module` instead.
599
Berker Peksag6e9d2e62015-12-08 12:14:50 +0200600 .. abstractmethod:: get_filename(fullname)
Brett Cannon938d44d2012-04-22 19:58:33 -0400601
Barry Warsawd7d21942012-07-29 16:36:17 -0400602 Returns :attr:`path`.
Brett Cannon938d44d2012-04-22 19:58:33 -0400603
Berker Peksag6e9d2e62015-12-08 12:14:50 +0200604 .. abstractmethod:: get_data(path)
Brett Cannon938d44d2012-04-22 19:58:33 -0400605
Brett Cannon3b62ca82013-05-27 21:11:04 -0400606 Reads *path* as a binary file and returns the bytes from it.
Brett Cannon938d44d2012-04-22 19:58:33 -0400607
608
Brett Cannonf23e3742010-06-27 23:57:46 +0000609.. class:: SourceLoader
610
611 An abstract base class for implementing source (and optionally bytecode)
612 file loading. The class inherits from both :class:`ResourceLoader` and
613 :class:`ExecutionLoader`, requiring the implementation of:
614
615 * :meth:`ResourceLoader.get_data`
616 * :meth:`ExecutionLoader.get_filename`
Brett Cannon6dfbff32010-07-21 09:48:31 +0000617 Should only return the path to the source file; sourceless
Brett Cannona81d5272013-06-16 19:17:12 -0400618 loading is not supported.
Brett Cannonf23e3742010-06-27 23:57:46 +0000619
620 The abstract methods defined by this class are to add optional bytecode
Brett Cannon5650e4f2012-11-18 10:03:31 -0500621 file support. Not implementing these optional methods (or causing them to
622 raise :exc:`NotImplementedError`) causes the loader to
Brett Cannonf23e3742010-06-27 23:57:46 +0000623 only work with source code. Implementing the methods allows the loader to
624 work with source *and* bytecode files; it does not allow for *sourceless*
625 loading where only bytecode is provided. Bytecode files are an
626 optimization to speed up loading by removing the parsing step of Python's
627 compiler, and so no bytecode-specific API is exposed.
628
Brett Cannon773468f2012-08-02 17:35:34 -0400629 .. method:: path_stats(path)
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100630
631 Optional abstract method which returns a :class:`dict` containing
Martin Pantereb995702016-07-28 01:11:04 +0000632 metadata about the specified path. Supported dictionary keys are:
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100633
634 - ``'mtime'`` (mandatory): an integer or floating-point number
635 representing the modification time of the source code;
636 - ``'size'`` (optional): the size in bytes of the source code.
637
638 Any other keys in the dictionary are ignored, to allow for future
Andrew Svetlov08af0002014-04-01 01:13:30 +0300639 extensions. If the path cannot be handled, :exc:`OSError` is raised.
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100640
641 .. versionadded:: 3.3
642
Brett Cannon100883f2013-04-09 16:59:39 -0400643 .. versionchanged:: 3.4
Andrew Svetlov08af0002014-04-01 01:13:30 +0300644 Raise :exc:`OSError` instead of :exc:`NotImplementedError`.
Brett Cannon100883f2013-04-09 16:59:39 -0400645
Brett Cannon773468f2012-08-02 17:35:34 -0400646 .. method:: path_mtime(path)
Brett Cannonf23e3742010-06-27 23:57:46 +0000647
648 Optional abstract method which returns the modification time for the
649 specified path.
650
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100651 .. deprecated:: 3.3
652 This method is deprecated in favour of :meth:`path_stats`. You don't
653 have to implement it, but it is still available for compatibility
Andrew Svetlov08af0002014-04-01 01:13:30 +0300654 purposes. Raise :exc:`OSError` if the path cannot be handled.
Brett Cannon100883f2013-04-09 16:59:39 -0400655
Georg Brandldf48b972014-03-24 09:06:18 +0100656 .. versionchanged:: 3.4
Andrew Svetlov08af0002014-04-01 01:13:30 +0300657 Raise :exc:`OSError` instead of :exc:`NotImplementedError`.
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100658
Brett Cannon773468f2012-08-02 17:35:34 -0400659 .. method:: set_data(path, data)
Brett Cannonf23e3742010-06-27 23:57:46 +0000660
661 Optional abstract method which writes the specified bytes to a file
Brett Cannon61b14252010-07-03 21:48:25 +0000662 path. Any intermediate directories which do not exist are to be created
663 automatically.
664
665 When writing to the path fails because the path is read-only
Brett Cannon2cefb3c2013-05-25 11:26:11 -0400666 (:attr:`errno.EACCES`/:exc:`PermissionError`), do not propagate the
667 exception.
Brett Cannonf23e3742010-06-27 23:57:46 +0000668
Brett Cannon100883f2013-04-09 16:59:39 -0400669 .. versionchanged:: 3.4
670 No longer raises :exc:`NotImplementedError` when called.
671
Brett Cannon773468f2012-08-02 17:35:34 -0400672 .. method:: get_code(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000673
674 Concrete implementation of :meth:`InspectLoader.get_code`.
675
Eric Snowca2d8542013-12-16 23:06:52 -0700676 .. method:: exec_module(module)
677
678 Concrete implementation of :meth:`Loader.exec_module`.
679
680 .. versionadded:: 3.4
681
Brett Cannon773468f2012-08-02 17:35:34 -0400682 .. method:: load_module(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000683
Eric Snowca2d8542013-12-16 23:06:52 -0700684 Concrete implementation of :meth:`Loader.load_module`.
685
686 .. deprecated:: 3.4
687 Use :meth:`exec_module` instead.
Brett Cannonf23e3742010-06-27 23:57:46 +0000688
Brett Cannon773468f2012-08-02 17:35:34 -0400689 .. method:: get_source(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000690
691 Concrete implementation of :meth:`InspectLoader.get_source`.
692
Brett Cannon773468f2012-08-02 17:35:34 -0400693 .. method:: is_package(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000694
695 Concrete implementation of :meth:`InspectLoader.is_package`. A module
Brett Cannonea0b8232012-06-15 20:00:53 -0400696 is determined to be a package if its file path (as provided by
697 :meth:`ExecutionLoader.get_filename`) is a file named
698 ``__init__`` when the file extension is removed **and** the module name
699 itself does not end in ``__init__``.
Brett Cannonf23e3742010-06-27 23:57:46 +0000700
Brett Cannon69194272009-07-20 04:23:48 +0000701
Brett Cannon78246b62009-01-25 04:56:30 +0000702:mod:`importlib.machinery` -- Importers and path hooks
703------------------------------------------------------
704
705.. module:: importlib.machinery
706 :synopsis: Importers and path hooks
707
Terry Jan Reedydcb6c882016-06-22 22:46:34 -0400708**Source code:** :source:`Lib/importlib/machinery.py`
709
710--------------
711
Brett Cannon78246b62009-01-25 04:56:30 +0000712This module contains the various objects that help :keyword:`import`
713find and load modules.
714
Brett Cannoncb66eb02012-05-11 12:58:42 -0400715.. attribute:: SOURCE_SUFFIXES
716
717 A list of strings representing the recognized file suffixes for source
718 modules.
719
720 .. versionadded:: 3.3
721
722.. attribute:: DEBUG_BYTECODE_SUFFIXES
723
724 A list of strings representing the file suffixes for non-optimized bytecode
725 modules.
726
727 .. versionadded:: 3.3
728
Brett Cannonf299abd2015-04-13 14:21:02 -0400729 .. deprecated:: 3.5
730 Use :attr:`BYTECODE_SUFFIXES` instead.
731
Brett Cannoncb66eb02012-05-11 12:58:42 -0400732.. attribute:: OPTIMIZED_BYTECODE_SUFFIXES
733
734 A list of strings representing the file suffixes for optimized bytecode
735 modules.
736
737 .. versionadded:: 3.3
738
Brett Cannonf299abd2015-04-13 14:21:02 -0400739 .. deprecated:: 3.5
740 Use :attr:`BYTECODE_SUFFIXES` instead.
741
Brett Cannoncb66eb02012-05-11 12:58:42 -0400742.. attribute:: BYTECODE_SUFFIXES
743
744 A list of strings representing the recognized file suffixes for bytecode
Brett Cannonf299abd2015-04-13 14:21:02 -0400745 modules (including the leading dot).
Brett Cannoncb66eb02012-05-11 12:58:42 -0400746
747 .. versionadded:: 3.3
748
Brett Cannonf299abd2015-04-13 14:21:02 -0400749 .. versionchanged:: 3.5
750 The value is no longer dependent on ``__debug__``.
751
Brett Cannoncb66eb02012-05-11 12:58:42 -0400752.. attribute:: EXTENSION_SUFFIXES
753
Nick Coghlan76e07702012-07-18 23:14:57 +1000754 A list of strings representing the recognized file suffixes for
Brett Cannoncb66eb02012-05-11 12:58:42 -0400755 extension modules.
756
757 .. versionadded:: 3.3
758
Nick Coghlanc5afd422012-07-18 23:59:08 +1000759.. function:: all_suffixes()
Nick Coghlan76e07702012-07-18 23:14:57 +1000760
761 Returns a combined list of strings representing all file suffixes for
Nick Coghlanc5afd422012-07-18 23:59:08 +1000762 modules recognized by the standard import machinery. This is a
Nick Coghlan76e07702012-07-18 23:14:57 +1000763 helper for code which simply needs to know if a filesystem path
Nick Coghlanc5afd422012-07-18 23:59:08 +1000764 potentially refers to a module without needing any details on the kind
Martin Panterd21e0b52015-10-10 10:36:22 +0000765 of module (for example, :func:`inspect.getmodulename`).
Nick Coghlan76e07702012-07-18 23:14:57 +1000766
767 .. versionadded:: 3.3
768
769
Brett Cannon78246b62009-01-25 04:56:30 +0000770.. class:: BuiltinImporter
771
Brett Cannon2a922ed2009-03-09 03:35:50 +0000772 An :term:`importer` for built-in modules. All known built-in modules are
773 listed in :data:`sys.builtin_module_names`. This class implements the
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000774 :class:`importlib.abc.MetaPathFinder` and
775 :class:`importlib.abc.InspectLoader` ABCs.
Brett Cannon78246b62009-01-25 04:56:30 +0000776
777 Only class methods are defined by this class to alleviate the need for
778 instantiation.
779
Nick Coghland5cacbb2015-05-23 22:24:10 +1000780 .. versionchanged:: 3.5
781 As part of :pep:`489`, the builtin importer now implements
782 :meth:`Loader.create_module` and :meth:`Loader.exec_module`
Eric Snowca2d8542013-12-16 23:06:52 -0700783
Brett Cannon78246b62009-01-25 04:56:30 +0000784
785.. class:: FrozenImporter
786
Brett Cannon2a922ed2009-03-09 03:35:50 +0000787 An :term:`importer` for frozen modules. This class implements the
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000788 :class:`importlib.abc.MetaPathFinder` and
789 :class:`importlib.abc.InspectLoader` ABCs.
Brett Cannon78246b62009-01-25 04:56:30 +0000790
791 Only class methods are defined by this class to alleviate the need for
792 instantiation.
793
Brett Cannondebb98d2009-02-16 04:18:01 +0000794
Nick Coghlanff794862012-08-02 21:45:24 +1000795.. class:: WindowsRegistryFinder
796
797 :term:`Finder` for modules declared in the Windows registry. This class
Nick Coghlan49417742012-08-02 23:03:58 +1000798 implements the :class:`importlib.abc.Finder` ABC.
Nick Coghlanff794862012-08-02 21:45:24 +1000799
800 Only class methods are defined by this class to alleviate the need for
801 instantiation.
802
803 .. versionadded:: 3.3
804
805
Brett Cannondebb98d2009-02-16 04:18:01 +0000806.. class:: PathFinder
807
Brett Cannon1b799182012-08-17 14:08:24 -0400808 A :term:`Finder` for :data:`sys.path` and package ``__path__`` attributes.
809 This class implements the :class:`importlib.abc.MetaPathFinder` ABC.
Brett Cannondebb98d2009-02-16 04:18:01 +0000810
Brett Cannon1b799182012-08-17 14:08:24 -0400811 Only class methods are defined by this class to alleviate the need for
812 instantiation.
Brett Cannondebb98d2009-02-16 04:18:01 +0000813
Eric Snowca2d8542013-12-16 23:06:52 -0700814 .. classmethod:: find_spec(fullname, path=None, target=None)
815
816 Class method that attempts to find a :term:`spec <module spec>`
817 for the module specified by *fullname* on :data:`sys.path` or, if
818 defined, on *path*. For each path entry that is searched,
819 :data:`sys.path_importer_cache` is checked. If a non-false object
820 is found then it is used as the :term:`path entry finder` to look
821 for the module being searched for. If no entry is found in
822 :data:`sys.path_importer_cache`, then :data:`sys.path_hooks` is
823 searched for a finder for the path entry and, if found, is stored
824 in :data:`sys.path_importer_cache` along with being queried about
825 the module. If no finder is ever found then ``None`` is both
826 stored in the cache and returned.
827
828 .. versionadded:: 3.4
829
Brett Cannonb6e25562014-11-21 12:19:28 -0500830 .. versionchanged:: 3.5
831 If the current working directory -- represented by an empty string --
832 is no longer valid then ``None`` is returned but no value is cached
833 in :data:`sys.path_importer_cache`.
834
Brett Cannon1b799182012-08-17 14:08:24 -0400835 .. classmethod:: find_module(fullname, path=None)
Brett Cannondebb98d2009-02-16 04:18:01 +0000836
Eric Snowca2d8542013-12-16 23:06:52 -0700837 A legacy wrapper around :meth:`find_spec`.
838
839 .. deprecated:: 3.4
840 Use :meth:`find_spec` instead.
Brett Cannond2e7b332009-02-17 02:45:03 +0000841
Brett Cannonf4dc9202012-08-10 12:21:12 -0400842 .. classmethod:: invalidate_caches()
843
Eric Snowca2d8542013-12-16 23:06:52 -0700844 Calls :meth:`importlib.abc.PathEntryFinder.invalidate_caches` on all
845 finders stored in :attr:`sys.path_importer_cache`.
Brett Cannonf4dc9202012-08-10 12:21:12 -0400846
Eric Snowca2d8542013-12-16 23:06:52 -0700847 .. versionchanged:: 3.4
848 Calls objects in :data:`sys.path_hooks` with the current working
849 directory for ``''`` (i.e. the empty string).
Brett Cannon27e27f72013-10-18 11:39:04 -0400850
Brett Cannond2e7b332009-02-17 02:45:03 +0000851
Brett Cannon938d44d2012-04-22 19:58:33 -0400852.. class:: FileFinder(path, \*loader_details)
853
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000854 A concrete implementation of :class:`importlib.abc.PathEntryFinder` which
855 caches results from the file system.
Brett Cannon938d44d2012-04-22 19:58:33 -0400856
857 The *path* argument is the directory for which the finder is in charge of
858 searching.
859
Brett Cannonac9f2f32012-08-10 13:47:54 -0400860 The *loader_details* argument is a variable number of 2-item tuples each
861 containing a loader and a sequence of file suffixes the loader recognizes.
Brett Cannon29b2f172013-06-21 18:31:55 -0400862 The loaders are expected to be callables which accept two arguments of
863 the module's name and the path to the file found.
Brett Cannon938d44d2012-04-22 19:58:33 -0400864
865 The finder will cache the directory contents as necessary, making stat calls
866 for each module search to verify the cache is not outdated. Because cache
867 staleness relies upon the granularity of the operating system's state
868 information of the file system, there is a potential race condition of
869 searching for a module, creating a new file, and then searching for the
870 module the new file represents. If the operations happen fast enough to fit
871 within the granularity of stat calls, then the module search will fail. To
872 prevent this from happening, when you create a module dynamically, make sure
873 to call :func:`importlib.invalidate_caches`.
874
875 .. versionadded:: 3.3
876
877 .. attribute:: path
878
879 The path the finder will search in.
880
Eric Snowca2d8542013-12-16 23:06:52 -0700881 .. method:: find_spec(fullname, target=None)
882
883 Attempt to find the spec to handle *fullname* within :attr:`path`.
884
885 .. versionadded:: 3.4
886
Brett Cannon1d753822013-06-16 19:06:55 -0400887 .. method:: find_loader(fullname)
Brett Cannon938d44d2012-04-22 19:58:33 -0400888
889 Attempt to find the loader to handle *fullname* within :attr:`path`.
890
891 .. method:: invalidate_caches()
892
893 Clear out the internal cache.
894
895 .. classmethod:: path_hook(\*loader_details)
896
897 A class method which returns a closure for use on :attr:`sys.path_hooks`.
898 An instance of :class:`FileFinder` is returned by the closure using the
899 path argument given to the closure directly and *loader_details*
900 indirectly.
901
902 If the argument to the closure is not an existing directory,
903 :exc:`ImportError` is raised.
904
905
906.. class:: SourceFileLoader(fullname, path)
907
908 A concrete implementation of :class:`importlib.abc.SourceLoader` by
909 subclassing :class:`importlib.abc.FileLoader` and providing some concrete
910 implementations of other methods.
911
912 .. versionadded:: 3.3
913
914 .. attribute:: name
915
916 The name of the module that this loader will handle.
917
918 .. attribute:: path
919
920 The path to the source file.
921
922 .. method:: is_package(fullname)
923
924 Return true if :attr:`path` appears to be for a package.
925
926 .. method:: path_stats(path)
927
928 Concrete implementation of :meth:`importlib.abc.SourceLoader.path_stats`.
929
930 .. method:: set_data(path, data)
931
932 Concrete implementation of :meth:`importlib.abc.SourceLoader.set_data`.
933
Brett Cannon062fcac2014-05-09 11:55:49 -0400934 .. method:: load_module(name=None)
935
936 Concrete implementation of :meth:`importlib.abc.Loader.load_module` where
937 specifying the name of the module to load is optional.
938
Brett Cannon938d44d2012-04-22 19:58:33 -0400939
Marc-Andre Lemburg4fe29c92012-04-25 02:31:37 +0200940.. class:: SourcelessFileLoader(fullname, path)
Brett Cannon938d44d2012-04-22 19:58:33 -0400941
942 A concrete implementation of :class:`importlib.abc.FileLoader` which can
943 import bytecode files (i.e. no source code files exist).
944
Marc-Andre Lemburg4fe29c92012-04-25 02:31:37 +0200945 Please note that direct use of bytecode files (and thus not source code
946 files) inhibits your modules from being usable by all Python
947 implementations or new versions of Python which change the bytecode
948 format.
Brett Cannon938d44d2012-04-22 19:58:33 -0400949
950 .. versionadded:: 3.3
951
952 .. attribute:: name
953
954 The name of the module the loader will handle.
955
956 .. attribute:: path
957
958 The path to the bytecode file.
959
960 .. method:: is_package(fullname)
961
962 Determines if the module is a package based on :attr:`path`.
963
964 .. method:: get_code(fullname)
965
966 Returns the code object for :attr:`name` created from :attr:`path`.
967
968 .. method:: get_source(fullname)
969
970 Returns ``None`` as bytecode files have no source when this loader is
971 used.
972
Brett Cannon062fcac2014-05-09 11:55:49 -0400973 .. method:: load_module(name=None)
974
975 Concrete implementation of :meth:`importlib.abc.Loader.load_module` where
976 specifying the name of the module to load is optional.
977
Brett Cannon938d44d2012-04-22 19:58:33 -0400978
979.. class:: ExtensionFileLoader(fullname, path)
980
Eric Snow51794452013-10-03 12:08:55 -0600981 A concrete implementation of :class:`importlib.abc.ExecutionLoader` for
Brett Cannon938d44d2012-04-22 19:58:33 -0400982 extension modules.
983
984 The *fullname* argument specifies the name of the module the loader is to
985 support. The *path* argument is the path to the extension module's file.
986
987 .. versionadded:: 3.3
988
989 .. attribute:: name
990
991 Name of the module the loader supports.
992
993 .. attribute:: path
994
995 Path to the extension module.
996
Nick Coghland5cacbb2015-05-23 22:24:10 +1000997 .. method:: create_module(spec)
Brett Cannon938d44d2012-04-22 19:58:33 -0400998
Nick Coghland5cacbb2015-05-23 22:24:10 +1000999 Creates the module object from the given specification in accordance
1000 with :pep:`489`.
Brett Cannon938d44d2012-04-22 19:58:33 -04001001
Nick Coghland5cacbb2015-05-23 22:24:10 +10001002 .. versionadded:: 3.5
1003
1004 .. method:: exec_module(module)
1005
1006 Initializes the given module object in accordance with :pep:`489`.
1007
1008 .. versionadded:: 3.5
Eric Snowca2d8542013-12-16 23:06:52 -07001009
Brett Cannon938d44d2012-04-22 19:58:33 -04001010 .. method:: is_package(fullname)
1011
Brett Cannonac9f2f32012-08-10 13:47:54 -04001012 Returns ``True`` if the file path points to a package's ``__init__``
1013 module based on :attr:`EXTENSION_SUFFIXES`.
Brett Cannon938d44d2012-04-22 19:58:33 -04001014
1015 .. method:: get_code(fullname)
1016
1017 Returns ``None`` as extension modules lack a code object.
1018
1019 .. method:: get_source(fullname)
1020
1021 Returns ``None`` as extension modules do not have source code.
1022
Eric Snow51794452013-10-03 12:08:55 -06001023 .. method:: get_filename(fullname)
1024
1025 Returns :attr:`path`.
1026
Eric Snowdcd01b42013-10-04 20:35:34 -06001027 .. versionadded:: 3.4
1028
Brett Cannon938d44d2012-04-22 19:58:33 -04001029
Eric Snowb523f842013-11-22 09:05:39 -07001030.. class:: ModuleSpec(name, loader, *, origin=None, loader_state=None, is_package=None)
1031
1032 A specification for a module's import-system-related state.
1033
1034 .. versionadded:: 3.4
1035
1036 .. attribute:: name
1037
1038 (``__name__``)
1039
1040 A string for the fully-qualified name of the module.
1041
1042 .. attribute:: loader
1043
1044 (``__loader__``)
1045
1046 The loader to use for loading. For namespace packages this should be
1047 set to None.
1048
1049 .. attribute:: origin
1050
1051 (``__file__``)
1052
1053 Name of the place from which the module is loaded, e.g. "builtin" for
1054 built-in modules and the filename for modules loaded from source.
1055 Normally "origin" should be set, but it may be None (the default)
1056 which indicates it is unspecified.
1057
1058 .. attribute:: submodule_search_locations
1059
1060 (``__path__``)
1061
1062 List of strings for where to find submodules, if a package (None
1063 otherwise).
1064
1065 .. attribute:: loader_state
1066
1067 Container of extra module-specific data for use during loading (or
1068 None).
1069
1070 .. attribute:: cached
1071
1072 (``__cached__``)
1073
1074 String for where the compiled module should be stored (or None).
1075
1076 .. attribute:: parent
1077
1078 (``__package__``)
1079
1080 (Read-only) Fully-qualified name of the package to which the module
1081 belongs as a submodule (or None).
1082
1083 .. attribute:: has_location
1084
Eric Snowb282b3d2013-12-10 22:16:41 -07001085 Boolean indicating whether or not the module's "origin"
Eric Snowb523f842013-11-22 09:05:39 -07001086 attribute refers to a loadable location.
1087
Brett Cannond2e7b332009-02-17 02:45:03 +00001088:mod:`importlib.util` -- Utility code for importers
1089---------------------------------------------------
1090
1091.. module:: importlib.util
Brett Cannon75321e82012-03-02 11:58:25 -05001092 :synopsis: Utility code for importers
Brett Cannond2e7b332009-02-17 02:45:03 +00001093
Terry Jan Reedydcb6c882016-06-22 22:46:34 -04001094
1095**Source code:** :source:`Lib/importlib/util.py`
1096
1097--------------
1098
Brett Cannond2e7b332009-02-17 02:45:03 +00001099This module contains the various objects that help in the construction of
1100an :term:`importer`.
1101
Brett Cannon05a647d2013-06-14 19:02:34 -04001102.. attribute:: MAGIC_NUMBER
1103
1104 The bytes which represent the bytecode version number. If you need help with
1105 loading/writing bytecode then consider :class:`importlib.abc.SourceLoader`.
1106
1107 .. versionadded:: 3.4
1108
Brett Cannonf299abd2015-04-13 14:21:02 -04001109.. function:: cache_from_source(path, debug_override=None, *, optimization=None)
Brett Cannona3c96152013-06-14 22:26:30 -04001110
Brett Cannonf299abd2015-04-13 14:21:02 -04001111 Return the :pep:`3147`/:pep:`488` path to the byte-compiled file associated
1112 with the source *path*. For example, if *path* is ``/foo/bar/baz.py`` the return
Brett Cannona3c96152013-06-14 22:26:30 -04001113 value would be ``/foo/bar/__pycache__/baz.cpython-32.pyc`` for Python 3.2.
1114 The ``cpython-32`` string comes from the current magic tag (see
1115 :func:`get_tag`; if :attr:`sys.implementation.cache_tag` is not defined then
Brett Cannonf299abd2015-04-13 14:21:02 -04001116 :exc:`NotImplementedError` will be raised).
Brett Cannona3c96152013-06-14 22:26:30 -04001117
Brett Cannonf299abd2015-04-13 14:21:02 -04001118 The *optimization* parameter is used to specify the optimization level of the
1119 bytecode file. An empty string represents no optimization, so
1120 ``/foo/bar/baz.py`` with an *optimization* of ``''`` will result in a
1121 bytecode path of ``/foo/bar/__pycache__/baz.cpython-32.pyc``. ``None`` causes
1122 the interpter's optimization level to be used. Any other value's string
1123 representation being used, so ``/foo/bar/baz.py`` with an *optimization* of
1124 ``2`` will lead to the bytecode path of
1125 ``/foo/bar/__pycache__/baz.cpython-32.opt-2.pyc``. The string representation
1126 of *optimization* can only be alphanumeric, else :exc:`ValueError` is raised.
1127
1128 The *debug_override* parameter is deprecated and can be used to override
1129 the system's value for ``__debug__``. A ``True`` value is the equivalent of
1130 setting *optimization* to the empty string. A ``False`` value is the same as
1131 setting *optimization* to ``1``. If both *debug_override* an *optimization*
1132 are not ``None`` then :exc:`TypeError` is raised.
Brett Cannona3c96152013-06-14 22:26:30 -04001133
1134 .. versionadded:: 3.4
1135
Berker Peksagfe5f6142016-01-30 19:30:06 +02001136 .. versionchanged:: 3.5
Brett Cannonf299abd2015-04-13 14:21:02 -04001137 The *optimization* parameter was added and the *debug_override* parameter
1138 was deprecated.
1139
Brett Cannona3c96152013-06-14 22:26:30 -04001140
1141.. function:: source_from_cache(path)
1142
1143 Given the *path* to a :pep:`3147` file name, return the associated source code
1144 file path. For example, if *path* is
1145 ``/foo/bar/__pycache__/baz.cpython-32.pyc`` the returned path would be
1146 ``/foo/bar/baz.py``. *path* need not exist, however if it does not conform
Larry Hastings770ce202015-04-19 13:50:12 -07001147 to :pep:`3147` or :pep:`488` format, a ``ValueError`` is raised. If
Brett Cannona3c96152013-06-14 22:26:30 -04001148 :attr:`sys.implementation.cache_tag` is not defined,
1149 :exc:`NotImplementedError` is raised.
1150
1151 .. versionadded:: 3.4
1152
Brett Cannonf24fecd2013-06-16 18:37:53 -04001153.. function:: decode_source(source_bytes)
1154
1155 Decode the given bytes representing source code and return it as a string
1156 with universal newlines (as required by
1157 :meth:`importlib.abc.InspectLoader.get_source`).
1158
1159 .. versionadded:: 3.4
1160
Brett Cannond200bf52012-05-13 13:45:09 -04001161.. function:: resolve_name(name, package)
1162
1163 Resolve a relative module name to an absolute one.
1164
1165 If **name** has no leading dots, then **name** is simply returned. This
1166 allows for usage such as
1167 ``importlib.util.resolve_name('sys', __package__)`` without doing a
1168 check to see if the **package** argument is needed.
1169
1170 :exc:`ValueError` is raised if **name** is a relative module name but
1171 package is a false value (e.g. ``None`` or the empty string).
1172 :exc:`ValueError` is also raised a relative name would escape its containing
1173 package (e.g. requesting ``..bacon`` from within the ``spam`` package).
1174
1175 .. versionadded:: 3.3
1176
Eric Snow6029e082014-01-25 15:32:46 -07001177.. function:: find_spec(name, package=None)
1178
1179 Find the :term:`spec <module spec>` for a module, optionally relative to
1180 the specified **package** name. If the module is in :attr:`sys.modules`,
1181 then ``sys.modules[name].__spec__`` is returned (unless the spec would be
1182 ``None`` or is not set, in which case :exc:`ValueError` is raised).
1183 Otherwise a search using :attr:`sys.meta_path` is done. ``None`` is
1184 returned if no spec is found.
1185
1186 If **name** is for a submodule (contains a dot), the parent module is
1187 automatically imported.
1188
1189 **name** and **package** work the same as for :func:`import_module`.
1190
1191 .. versionadded:: 3.4
1192
Brett Cannon2a17bde2014-05-30 14:55:29 -04001193.. function:: module_from_spec(spec)
1194
Brett Cannon02d84542015-01-09 11:39:21 -05001195 Create a new module based on **spec** and ``spec.loader.create_module()``.
Brett Cannon2a17bde2014-05-30 14:55:29 -04001196
Brett Cannon02d84542015-01-09 11:39:21 -05001197 If ``spec.loader.create_module()`` does not return ``None``, then any
Brett Cannon2a17bde2014-05-30 14:55:29 -04001198 pre-existing attributes will not be reset. Also, no :exc:`AttributeError`
1199 will be raised if triggered while accessing **spec** or setting an attribute
1200 on the module.
1201
1202 This function is preferred over using :class:`types.ModuleType` to create a
1203 new module as **spec** is used to set as many import-controlled attributes on
1204 the module as possible.
1205
1206 .. versionadded:: 3.5
1207
Georg Brandl8a1caa22010-07-29 16:01:11 +00001208.. decorator:: module_for_loader
Brett Cannond2e7b332009-02-17 02:45:03 +00001209
Brett Cannona22faca2013-05-28 17:50:14 -04001210 A :term:`decorator` for :meth:`importlib.abc.Loader.load_module`
Guido van Rossum09613542009-03-30 20:34:57 +00001211 to handle selecting the proper
Brett Cannond2e7b332009-02-17 02:45:03 +00001212 module object to load with. The decorated method is expected to have a call
Brett Cannon2a922ed2009-03-09 03:35:50 +00001213 signature taking two positional arguments
1214 (e.g. ``load_module(self, module)``) for which the second argument
Guido van Rossum09613542009-03-30 20:34:57 +00001215 will be the module **object** to be used by the loader.
Brett Cannonefad00d2012-04-27 17:27:14 -04001216 Note that the decorator will not work on static methods because of the
1217 assumption of two arguments.
Brett Cannond2e7b332009-02-17 02:45:03 +00001218
Guido van Rossum09613542009-03-30 20:34:57 +00001219 The decorated method will take in the **name** of the module to be loaded
1220 as expected for a :term:`loader`. If the module is not found in
Brett Cannon3dc48d62013-05-28 18:35:54 -04001221 :data:`sys.modules` then a new one is constructed. Regardless of where the
1222 module came from, :attr:`__loader__` set to **self** and :attr:`__package__`
1223 is set based on what :meth:`importlib.abc.InspectLoader.is_package` returns
1224 (if available). These attributes are set unconditionally to support
1225 reloading.
Brett Cannonefad00d2012-04-27 17:27:14 -04001226
1227 If an exception is raised by the decorated method and a module was added to
Brett Cannona87e31c2013-09-13 16:52:19 -04001228 :data:`sys.modules`, then the module will be removed to prevent a partially
1229 initialized module from being in left in :data:`sys.modules`. If the module
1230 was already in :data:`sys.modules` then it is left alone.
Brett Cannond2e7b332009-02-17 02:45:03 +00001231
Brett Cannonefad00d2012-04-27 17:27:14 -04001232 .. versionchanged:: 3.3
Georg Brandl61063cc2012-06-24 22:48:30 +02001233 :attr:`__loader__` and :attr:`__package__` are automatically set
1234 (when possible).
Brett Cannon57b46f52009-03-02 14:38:26 +00001235
Brett Cannon3dc48d62013-05-28 18:35:54 -04001236 .. versionchanged:: 3.4
Brett Cannon0dbb4c72013-05-31 18:56:47 -04001237 Set :attr:`__name__`, :attr:`__loader__` :attr:`__package__`
1238 unconditionally to support reloading.
1239
1240 .. deprecated:: 3.4
Eric Snowb523f842013-11-22 09:05:39 -07001241 The import machinery now directly performs all the functionality
1242 provided by this function.
Brett Cannon3dc48d62013-05-28 18:35:54 -04001243
Georg Brandl8a1caa22010-07-29 16:01:11 +00001244.. decorator:: set_loader
Brett Cannon2cf03a82009-03-10 05:17:37 +00001245
Brett Cannona22faca2013-05-28 17:50:14 -04001246 A :term:`decorator` for :meth:`importlib.abc.Loader.load_module`
1247 to set the :attr:`__loader__`
1248 attribute on the returned module. If the attribute is already set the
1249 decorator does nothing. It is assumed that the first positional argument to
1250 the wrapped method (i.e. ``self``) is what :attr:`__loader__` should be set
1251 to.
Brett Cannon2cf03a82009-03-10 05:17:37 +00001252
Brett Cannon4802bec2013-03-13 10:41:36 -07001253 .. versionchanged:: 3.4
Brett Cannon4c14b5d2013-05-04 13:56:58 -04001254 Set ``__loader__`` if set to ``None``, as if the attribute does not
Brett Cannon4802bec2013-03-13 10:41:36 -07001255 exist.
1256
Eric Snowca2d8542013-12-16 23:06:52 -07001257 .. deprecated:: 3.4
1258 The import machinery takes care of this automatically.
1259
Georg Brandl8a1caa22010-07-29 16:01:11 +00001260.. decorator:: set_package
Brett Cannon57b46f52009-03-02 14:38:26 +00001261
Brett Cannona22faca2013-05-28 17:50:14 -04001262 A :term:`decorator` for :meth:`importlib.abc.Loader.load_module` to set the :attr:`__package__` attribute on the returned module. If :attr:`__package__`
1263 is set and has a value other than ``None`` it will not be changed.
Brett Cannon16248a42009-04-01 20:47:14 +00001264
Eric Snowca2d8542013-12-16 23:06:52 -07001265 .. deprecated:: 3.4
1266 The import machinery takes care of this automatically.
1267
Eric Snowb523f842013-11-22 09:05:39 -07001268.. function:: spec_from_loader(name, loader, *, origin=None, is_package=None)
1269
1270 A factory function for creating a :class:`ModuleSpec` instance based
1271 on a loader. The parameters have the same meaning as they do for
1272 ModuleSpec. The function uses available :term:`loader` APIs, such as
1273 :meth:`InspectLoader.is_package`, to fill in any missing
1274 information on the spec.
1275
1276 .. versionadded:: 3.4
1277
1278.. function:: spec_from_file_location(name, location, *, loader=None, submodule_search_locations=None)
1279
1280 A factory function for creating a :class:`ModuleSpec` instance based
1281 on the path to a file. Missing information will be filled in on the
1282 spec by making use of loader APIs and by the implication that the
1283 module will be file-based.
1284
1285 .. versionadded:: 3.4
Brett Cannona04dbe42014-04-04 13:53:38 -04001286
1287.. class:: LazyLoader(loader)
1288
1289 A class which postpones the execution of the loader of a module until the
1290 module has an attribute accessed.
1291
1292 This class **only** works with loaders that define
Brett Cannon02d84542015-01-09 11:39:21 -05001293 :meth:`~importlib.abc.Loader.exec_module` as control over what module type
1294 is used for the module is required. For those same reasons, the loader's
1295 :meth:`~importlib.abc.Loader.create_module` method will be ignored (i.e., the
Brett Cannon27c712e2016-02-20 18:40:02 -08001296 loader's method should only return ``None``; this excludes
1297 :class:`BuiltinImporter` and :class:`ExtensionFileLoader`). Finally,
Brett Cannona04dbe42014-04-04 13:53:38 -04001298 modules which substitute the object placed into :attr:`sys.modules` will
1299 not work as there is no way to properly replace the module references
1300 throughout the interpreter safely; :exc:`ValueError` is raised if such a
1301 substitution is detected.
1302
1303 .. note::
1304 For projects where startup time is critical, this class allows for
1305 potentially minimizing the cost of loading a module if it is never used.
1306 For projects where startup time is not essential then use of this class is
1307 **heavily** discouraged due to error messages created during loading being
1308 postponed and thus occurring out of context.
1309
1310 .. versionadded:: 3.5
1311
1312 .. classmethod:: factory(loader)
1313
1314 A static method which returns a callable that creates a lazy loader. This
1315 is meant to be used in situations where the loader is passed by class
1316 instead of by instance.
1317 ::
1318
1319 suffixes = importlib.machinery.SOURCE_SUFFIXES
1320 loader = importlib.machinery.SourceFileLoader
1321 lazy_loader = importlib.util.LazyLoader.factory(loader)
Brett Cannon3bf1d872016-01-22 14:03:27 -08001322 finder = importlib.machinery.FileFinder(path, (lazy_loader, suffixes))