blob: 5360d3c11d31bd98aa3bacc4025e8140e59b5ff3 [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
112 will be called to perform the invalidation. This function may be needed if
113 some modules are installed while your program is running and you expect the
114 program to notice the changes.
Antoine Pitrouc541f8e2012-02-20 01:48:16 +0100115
116 .. versionadded:: 3.3
117
Brett Cannon78246b62009-01-25 04:56:30 +0000118
Brett Cannon2a922ed2009-03-09 03:35:50 +0000119:mod:`importlib.abc` -- Abstract base classes related to import
120---------------------------------------------------------------
121
122.. module:: importlib.abc
123 :synopsis: Abstract base classes related to import
124
125The :mod:`importlib.abc` module contains all of the core abstract base classes
126used by :keyword:`import`. Some subclasses of the core abstract base classes
127are also provided to help in implementing the core ABCs.
128
Andrew Svetlova8656542012-08-13 22:19:01 +0300129ABC hierarchy::
130
131 object
Brett Cannon1b799182012-08-17 14:08:24 -0400132 +-- Finder (deprecated)
Andrew Svetlova8656542012-08-13 22:19:01 +0300133 | +-- MetaPathFinder
134 | +-- PathEntryFinder
135 +-- Loader
136 +-- ResourceLoader --------+
137 +-- InspectLoader |
138 +-- ExecutionLoader --+
139 +-- FileLoader
140 +-- SourceLoader
Andrew Svetlova8656542012-08-13 22:19:01 +0300141
Brett Cannon2a922ed2009-03-09 03:35:50 +0000142
143.. class:: Finder
144
Brett Cannon1b799182012-08-17 14:08:24 -0400145 An abstract base class representing a :term:`finder`.
146
147 .. deprecated:: 3.3
148 Use :class:`MetaPathFinder` or :class:`PathEntryFinder` instead.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000149
Brett Cannonf4dc9202012-08-10 12:21:12 -0400150 .. method:: find_module(fullname, path=None)
Brett Cannonb46a1792012-02-27 18:15:42 -0500151
Brett Cannonf4dc9202012-08-10 12:21:12 -0400152 An abstact method for finding a :term:`loader` for the specified
153 module. Originally specified in :pep:`302`, this method was meant
154 for use in :data:`sys.meta_path` and in the path-based import subsystem.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000155
156
Brett Cannon077ef452012-08-02 17:50:06 -0400157.. class:: MetaPathFinder
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000158
Brett Cannonf4dc9202012-08-10 12:21:12 -0400159 An abstract base class representing a :term:`meta path finder`. For
160 compatibility, this is a subclass of :class:`Finder`.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000161
162 .. versionadded:: 3.3
163
164 .. method:: find_module(fullname, path)
165
166 An abstract method for finding a :term:`loader` for the specified
167 module. If this is a top-level import, *path* will be ``None``.
Ezio Melotti1f67e802012-10-21 07:24:13 +0300168 Otherwise, this is a search for a subpackage or module and *path*
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000169 will be the value of :attr:`__path__` from the parent
170 package. If a loader cannot be found, ``None`` is returned.
171
Brett Cannonf4dc9202012-08-10 12:21:12 -0400172 .. method:: invalidate_caches()
173
174 An optional method which, when called, should invalidate any internal
Brett Cannona6e85812012-08-11 19:41:27 -0400175 cache used by the finder. Used by :func:`importlib.invalidate_caches`
176 when invalidating the caches of all finders on :data:`sys.meta_path`.
Brett Cannonf4dc9202012-08-10 12:21:12 -0400177
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000178
Brett Cannon077ef452012-08-02 17:50:06 -0400179.. class:: PathEntryFinder
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000180
Brett Cannonf4dc9202012-08-10 12:21:12 -0400181 An abstract base class representing a :term:`path entry finder`. Though
182 it bears some similarities to :class:`MetaPathFinder`, ``PathEntryFinder``
183 is meant for use only within the path-based import subsystem provided
184 by :class:`PathFinder`. This ABC is a subclass of :class:`Finder` for
185 compatibility.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000186
187 .. versionadded:: 3.3
188
Brett Cannon773468f2012-08-02 17:35:34 -0400189 .. method:: find_loader(fullname):
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000190
191 An abstract method for finding a :term:`loader` for the specified
Brett Cannonf4dc9202012-08-10 12:21:12 -0400192 module. Returns a 2-tuple of ``(loader, portion)`` where ``portion``
193 is a sequence of file system locations contributing to part of a namespace
194 package. The loader may be ``None`` while specifying ``portion`` to
195 signify the contribution of the file system locations to a namespace
196 package. An empty list can be used for ``portion`` to signify the loader
197 is not part of a package. If ``loader`` is ``None`` and ``portion`` is
198 the empty list then no loader or location for a namespace package were
199 found (i.e. failure to find anything for the module).
200
201 .. method:: find_module(fullname):
202
203 A concrete implementation of :meth:`Finder.find_module` which is
204 equivalent to ``self.find_loader(fullname)[0]``.
205
206 .. method:: invalidate_caches()
207
208 An optional method which, when called, should invalidate any internal
Brett Cannona6e85812012-08-11 19:41:27 -0400209 cache used by the finder. Used by :meth:`PathFinder.invalidate_caches`
Brett Cannonf4dc9202012-08-10 12:21:12 -0400210 when invalidating the caches of all cached finders.
Brett Cannonb46a1792012-02-27 18:15:42 -0500211
Brett Cannon2a922ed2009-03-09 03:35:50 +0000212
213.. class:: Loader
214
215 An abstract base class for a :term:`loader`.
Guido van Rossum09613542009-03-30 20:34:57 +0000216 See :pep:`302` for the exact definition for a loader.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000217
Brett Cannon9c751b72009-03-09 16:28:16 +0000218 .. method:: load_module(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000219
220 An abstract method for loading a module. If the module cannot be
221 loaded, :exc:`ImportError` is raised, otherwise the loaded module is
222 returned.
223
Guido van Rossum09613542009-03-30 20:34:57 +0000224 If the requested module already exists in :data:`sys.modules`, that
Brett Cannon2a922ed2009-03-09 03:35:50 +0000225 module should be used and reloaded.
Guido van Rossum09613542009-03-30 20:34:57 +0000226 Otherwise the loader should create a new module and insert it into
227 :data:`sys.modules` before any loading begins, to prevent recursion
228 from the import. If the loader inserted a module and the load fails, it
Brett Cannon2a922ed2009-03-09 03:35:50 +0000229 must be removed by the loader from :data:`sys.modules`; modules already
230 in :data:`sys.modules` before the loader began execution should be left
231 alone. The :func:`importlib.util.module_for_loader` decorator handles
232 all of these details.
233
Guido van Rossum09613542009-03-30 20:34:57 +0000234 The loader should set several attributes on the module.
235 (Note that some of these attributes can change when a module is
236 reloaded.)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000237
238 - :attr:`__name__`
239 The name of the module.
240
241 - :attr:`__file__`
242 The path to where the module data is stored (not set for built-in
243 modules).
244
245 - :attr:`__path__`
Guido van Rossum09613542009-03-30 20:34:57 +0000246 A list of strings specifying the search path within a
Brett Cannon2a922ed2009-03-09 03:35:50 +0000247 package. This attribute is not set on modules.
248
249 - :attr:`__package__`
250 The parent package for the module/package. If the module is
251 top-level then it has a value of the empty string. The
252 :func:`importlib.util.set_package` decorator can handle the details
253 for :attr:`__package__`.
254
255 - :attr:`__loader__`
Guido van Rossum09613542009-03-30 20:34:57 +0000256 The loader used to load the module.
257 (This is not set by the built-in import machinery,
258 but it should be set whenever a :term:`loader` is used.)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000259
Barry Warsawd7d21942012-07-29 16:36:17 -0400260 .. method:: module_repr(module)
261
262 An abstract method which when implemented calculates and returns the
263 given module's repr, as a string.
264
265 .. versionadded: 3.3
266
Brett Cannon2a922ed2009-03-09 03:35:50 +0000267
268.. class:: ResourceLoader
269
270 An abstract base class for a :term:`loader` which implements the optional
271 :pep:`302` protocol for loading arbitrary resources from the storage
272 back-end.
273
Brett Cannon9c751b72009-03-09 16:28:16 +0000274 .. method:: get_data(path)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000275
276 An abstract method to return the bytes for the data located at *path*.
Guido van Rossum09613542009-03-30 20:34:57 +0000277 Loaders that have a file-like storage back-end
Brett Cannon16248a42009-04-01 20:47:14 +0000278 that allows storing arbitrary data
Guido van Rossum09613542009-03-30 20:34:57 +0000279 can implement this abstract method to give direct access
Brett Cannon2a922ed2009-03-09 03:35:50 +0000280 to the data stored. :exc:`IOError` is to be raised if the *path* cannot
281 be found. The *path* is expected to be constructed using a module's
Brett Cannon16248a42009-04-01 20:47:14 +0000282 :attr:`__file__` attribute or an item from a package's :attr:`__path__`.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000283
284
285.. class:: InspectLoader
286
287 An abstract base class for a :term:`loader` which implements the optional
Guido van Rossum09613542009-03-30 20:34:57 +0000288 :pep:`302` protocol for loaders that inspect modules.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000289
Brett Cannona113ac52009-03-15 01:41:33 +0000290 .. method:: get_code(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000291
Brett Cannona113ac52009-03-15 01:41:33 +0000292 An abstract method to return the :class:`code` object for a module.
Georg Brandl375aec22011-01-15 17:03:02 +0000293 ``None`` is returned if the module does not have a code object
Brett Cannona113ac52009-03-15 01:41:33 +0000294 (e.g. built-in module). :exc:`ImportError` is raised if loader cannot
295 find the requested module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000296
R David Murray1b00f252012-08-15 10:43:58 -0400297 .. index::
298 single: universal newlines; importlib.abc.InspectLoader.get_source method
299
Brett Cannon9c751b72009-03-09 16:28:16 +0000300 .. method:: get_source(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000301
302 An abstract method to return the source of a module. It is returned as
R David Murray1b00f252012-08-15 10:43:58 -0400303 a text string using :term:`universal newlines`, translating all
R David Murrayee0a9452012-08-15 11:05:36 -0400304 recognized line separators into ``'\n'`` characters. Returns ``None``
305 if no source is available (e.g. a built-in module). Raises
306 :exc:`ImportError` if the loader cannot find the module specified.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000307
Brett Cannona113ac52009-03-15 01:41:33 +0000308 .. method:: is_package(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000309
Brett Cannona113ac52009-03-15 01:41:33 +0000310 An abstract method to return a true value if the module is a package, a
311 false value otherwise. :exc:`ImportError` is raised if the
312 :term:`loader` cannot find the module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000313
314
Brett Cannon69194272009-07-20 04:23:48 +0000315.. class:: ExecutionLoader
316
317 An abstract base class which inherits from :class:`InspectLoader` that,
Brett Cannon23460292009-07-20 22:59:00 +0000318 when implemented, helps a module to be executed as a script. The ABC
Brett Cannon69194272009-07-20 04:23:48 +0000319 represents an optional :pep:`302` protocol.
320
321 .. method:: get_filename(fullname)
322
Brett Cannonf23e3742010-06-27 23:57:46 +0000323 An abstract method that is to return the value of :attr:`__file__` for
Brett Cannon69194272009-07-20 04:23:48 +0000324 the specified module. If no path is available, :exc:`ImportError` is
325 raised.
326
Brett Cannonf23e3742010-06-27 23:57:46 +0000327 If source code is available, then the method should return the path to
328 the source file, regardless of whether a bytecode was used to load the
329 module.
330
331
Brett Cannon938d44d2012-04-22 19:58:33 -0400332.. class:: FileLoader(fullname, path)
333
334 An abstract base class which inherits from :class:`ResourceLoader` and
Andrew Svetlova60de4f2013-02-17 16:55:58 +0200335 :class:`ExecutionLoader`, providing concrete implementations of
Brett Cannon938d44d2012-04-22 19:58:33 -0400336 :meth:`ResourceLoader.get_data` and :meth:`ExecutionLoader.get_filename`.
337
338 The *fullname* argument is a fully resolved name of the module the loader is
339 to handle. The *path* argument is the path to the file for the module.
340
341 .. versionadded:: 3.3
342
343 .. attribute:: name
344
345 The name of the module the loader can handle.
346
347 .. attribute:: path
348
349 Path to the file of the module.
350
Barry Warsawd7d21942012-07-29 16:36:17 -0400351 .. method:: load_module(fullname)
Brett Cannonc0499522012-05-11 14:48:41 -0400352
Barry Warsawd7d21942012-07-29 16:36:17 -0400353 Calls super's ``load_module()``.
Brett Cannonc0499522012-05-11 14:48:41 -0400354
Brett Cannon938d44d2012-04-22 19:58:33 -0400355 .. method:: get_filename(fullname)
356
Barry Warsawd7d21942012-07-29 16:36:17 -0400357 Returns :attr:`path`.
Brett Cannon938d44d2012-04-22 19:58:33 -0400358
359 .. method:: get_data(path)
360
361 Returns the open, binary file for *path*.
362
363
Brett Cannonf23e3742010-06-27 23:57:46 +0000364.. class:: SourceLoader
365
366 An abstract base class for implementing source (and optionally bytecode)
367 file loading. The class inherits from both :class:`ResourceLoader` and
368 :class:`ExecutionLoader`, requiring the implementation of:
369
370 * :meth:`ResourceLoader.get_data`
371 * :meth:`ExecutionLoader.get_filename`
Brett Cannon6dfbff32010-07-21 09:48:31 +0000372 Should only return the path to the source file; sourceless
Brett Cannon5650e4f2012-11-18 10:03:31 -0500373 loading is not supported (see :class:`SourcelessLoader` if that
374 functionality is required)
Brett Cannonf23e3742010-06-27 23:57:46 +0000375
376 The abstract methods defined by this class are to add optional bytecode
Brett Cannon5650e4f2012-11-18 10:03:31 -0500377 file support. Not implementing these optional methods (or causing them to
378 raise :exc:`NotImplementedError`) causes the loader to
Brett Cannonf23e3742010-06-27 23:57:46 +0000379 only work with source code. Implementing the methods allows the loader to
380 work with source *and* bytecode files; it does not allow for *sourceless*
381 loading where only bytecode is provided. Bytecode files are an
382 optimization to speed up loading by removing the parsing step of Python's
383 compiler, and so no bytecode-specific API is exposed.
384
Brett Cannon773468f2012-08-02 17:35:34 -0400385 .. method:: path_stats(path)
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100386
387 Optional abstract method which returns a :class:`dict` containing
388 metadata about the specifed path. Supported dictionary keys are:
389
390 - ``'mtime'`` (mandatory): an integer or floating-point number
391 representing the modification time of the source code;
392 - ``'size'`` (optional): the size in bytes of the source code.
393
394 Any other keys in the dictionary are ignored, to allow for future
395 extensions.
396
397 .. versionadded:: 3.3
398
Brett Cannon773468f2012-08-02 17:35:34 -0400399 .. method:: path_mtime(path)
Brett Cannonf23e3742010-06-27 23:57:46 +0000400
401 Optional abstract method which returns the modification time for the
402 specified path.
403
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100404 .. deprecated:: 3.3
405 This method is deprecated in favour of :meth:`path_stats`. You don't
406 have to implement it, but it is still available for compatibility
407 purposes.
408
Brett Cannon773468f2012-08-02 17:35:34 -0400409 .. method:: set_data(path, data)
Brett Cannonf23e3742010-06-27 23:57:46 +0000410
411 Optional abstract method which writes the specified bytes to a file
Brett Cannon61b14252010-07-03 21:48:25 +0000412 path. Any intermediate directories which do not exist are to be created
413 automatically.
414
415 When writing to the path fails because the path is read-only
416 (:attr:`errno.EACCES`), do not propagate the exception.
Brett Cannonf23e3742010-06-27 23:57:46 +0000417
Eric Snowa6cfb282012-12-04 23:43:43 -0800418 .. method:: source_to_code(data, path)
Brett Cannon5650e4f2012-11-18 10:03:31 -0500419
420 Create a code object from Python source.
421
422 The *data* argument can be whatever the :func:`compile` function
423 supports (i.e. string or bytes). The *path* argument should be
424 the "path" to where the source code originated from, which can be an
425 abstract concept (e.g. location in a zip file).
426
427 .. versionadded:: 3.4
428
Brett Cannon773468f2012-08-02 17:35:34 -0400429 .. method:: get_code(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000430
431 Concrete implementation of :meth:`InspectLoader.get_code`.
432
Brett Cannon773468f2012-08-02 17:35:34 -0400433 .. method:: load_module(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000434
435 Concrete implementation of :meth:`Loader.load_module`.
436
Brett Cannon773468f2012-08-02 17:35:34 -0400437 .. method:: get_source(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000438
439 Concrete implementation of :meth:`InspectLoader.get_source`.
440
Brett Cannon773468f2012-08-02 17:35:34 -0400441 .. method:: is_package(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000442
443 Concrete implementation of :meth:`InspectLoader.is_package`. A module
Brett Cannonea0b8232012-06-15 20:00:53 -0400444 is determined to be a package if its file path (as provided by
445 :meth:`ExecutionLoader.get_filename`) is a file named
446 ``__init__`` when the file extension is removed **and** the module name
447 itself does not end in ``__init__``.
Brett Cannonf23e3742010-06-27 23:57:46 +0000448
Brett Cannon69194272009-07-20 04:23:48 +0000449
Brett Cannon78246b62009-01-25 04:56:30 +0000450:mod:`importlib.machinery` -- Importers and path hooks
451------------------------------------------------------
452
453.. module:: importlib.machinery
454 :synopsis: Importers and path hooks
455
456This module contains the various objects that help :keyword:`import`
457find and load modules.
458
Brett Cannoncb66eb02012-05-11 12:58:42 -0400459.. attribute:: SOURCE_SUFFIXES
460
461 A list of strings representing the recognized file suffixes for source
462 modules.
463
464 .. versionadded:: 3.3
465
466.. attribute:: DEBUG_BYTECODE_SUFFIXES
467
468 A list of strings representing the file suffixes for non-optimized bytecode
469 modules.
470
471 .. versionadded:: 3.3
472
473.. attribute:: OPTIMIZED_BYTECODE_SUFFIXES
474
475 A list of strings representing the file suffixes for optimized bytecode
476 modules.
477
478 .. versionadded:: 3.3
479
480.. attribute:: BYTECODE_SUFFIXES
481
482 A list of strings representing the recognized file suffixes for bytecode
483 modules. Set to either :attr:`DEBUG_BYTECODE_SUFFIXES` or
484 :attr:`OPTIMIZED_BYTECODE_SUFFIXES` based on whether ``__debug__`` is true.
485
486 .. versionadded:: 3.3
487
488.. attribute:: EXTENSION_SUFFIXES
489
Nick Coghlan76e07702012-07-18 23:14:57 +1000490 A list of strings representing the recognized file suffixes for
Brett Cannoncb66eb02012-05-11 12:58:42 -0400491 extension modules.
492
493 .. versionadded:: 3.3
494
Nick Coghlanc5afd422012-07-18 23:59:08 +1000495.. function:: all_suffixes()
Nick Coghlan76e07702012-07-18 23:14:57 +1000496
497 Returns a combined list of strings representing all file suffixes for
Nick Coghlanc5afd422012-07-18 23:59:08 +1000498 modules recognized by the standard import machinery. This is a
Nick Coghlan76e07702012-07-18 23:14:57 +1000499 helper for code which simply needs to know if a filesystem path
Nick Coghlanc5afd422012-07-18 23:59:08 +1000500 potentially refers to a module without needing any details on the kind
501 of module (for example, :func:`inspect.getmodulename`)
Nick Coghlan76e07702012-07-18 23:14:57 +1000502
503 .. versionadded:: 3.3
504
505
Brett Cannon78246b62009-01-25 04:56:30 +0000506.. class:: BuiltinImporter
507
Brett Cannon2a922ed2009-03-09 03:35:50 +0000508 An :term:`importer` for built-in modules. All known built-in modules are
509 listed in :data:`sys.builtin_module_names`. This class implements the
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000510 :class:`importlib.abc.MetaPathFinder` and
511 :class:`importlib.abc.InspectLoader` ABCs.
Brett Cannon78246b62009-01-25 04:56:30 +0000512
513 Only class methods are defined by this class to alleviate the need for
514 instantiation.
515
Brett Cannon78246b62009-01-25 04:56:30 +0000516
517.. class:: FrozenImporter
518
Brett Cannon2a922ed2009-03-09 03:35:50 +0000519 An :term:`importer` for frozen modules. This class implements the
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000520 :class:`importlib.abc.MetaPathFinder` and
521 :class:`importlib.abc.InspectLoader` ABCs.
Brett Cannon78246b62009-01-25 04:56:30 +0000522
523 Only class methods are defined by this class to alleviate the need for
524 instantiation.
525
Brett Cannondebb98d2009-02-16 04:18:01 +0000526
Nick Coghlanff794862012-08-02 21:45:24 +1000527.. class:: WindowsRegistryFinder
528
529 :term:`Finder` for modules declared in the Windows registry. This class
Nick Coghlan49417742012-08-02 23:03:58 +1000530 implements the :class:`importlib.abc.Finder` ABC.
Nick Coghlanff794862012-08-02 21:45:24 +1000531
532 Only class methods are defined by this class to alleviate the need for
533 instantiation.
534
535 .. versionadded:: 3.3
536
537
Brett Cannondebb98d2009-02-16 04:18:01 +0000538.. class:: PathFinder
539
Brett Cannon1b799182012-08-17 14:08:24 -0400540 A :term:`Finder` for :data:`sys.path` and package ``__path__`` attributes.
541 This class implements the :class:`importlib.abc.MetaPathFinder` ABC.
Brett Cannondebb98d2009-02-16 04:18:01 +0000542
Brett Cannon1b799182012-08-17 14:08:24 -0400543 Only class methods are defined by this class to alleviate the need for
544 instantiation.
Brett Cannondebb98d2009-02-16 04:18:01 +0000545
Brett Cannon1b799182012-08-17 14:08:24 -0400546 .. classmethod:: find_module(fullname, path=None)
Brett Cannondebb98d2009-02-16 04:18:01 +0000547
Brett Cannon1b799182012-08-17 14:08:24 -0400548 Class method that attempts to find a :term:`loader` for the module
549 specified by *fullname* on :data:`sys.path` or, if defined, on
550 *path*. For each path entry that is searched,
551 :data:`sys.path_importer_cache` is checked. If a non-false object is
552 found then it is used as the :term:`finder` to look for the module
553 being searched for. If no entry is found in
554 :data:`sys.path_importer_cache`, then :data:`sys.path_hooks` is
555 searched for a finder for the path entry and, if found, is stored in
556 :data:`sys.path_importer_cache` along with being queried about the
557 module. If no finder is ever found then ``None`` is both stored in
558 the cache and returned.
Brett Cannond2e7b332009-02-17 02:45:03 +0000559
Brett Cannonf4dc9202012-08-10 12:21:12 -0400560 .. classmethod:: invalidate_caches()
561
Brett Cannon1b799182012-08-17 14:08:24 -0400562 Calls :meth:`importlib.abc.PathEntryFinder.invalidate_caches` on all
563 finders stored in :attr:`sys.path_importer_cache`.
Brett Cannonf4dc9202012-08-10 12:21:12 -0400564
Brett Cannond2e7b332009-02-17 02:45:03 +0000565
Brett Cannon938d44d2012-04-22 19:58:33 -0400566.. class:: FileFinder(path, \*loader_details)
567
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000568 A concrete implementation of :class:`importlib.abc.PathEntryFinder` which
569 caches results from the file system.
Brett Cannon938d44d2012-04-22 19:58:33 -0400570
571 The *path* argument is the directory for which the finder is in charge of
572 searching.
573
Brett Cannonac9f2f32012-08-10 13:47:54 -0400574 The *loader_details* argument is a variable number of 2-item tuples each
575 containing a loader and a sequence of file suffixes the loader recognizes.
Brett Cannon938d44d2012-04-22 19:58:33 -0400576
577 The finder will cache the directory contents as necessary, making stat calls
578 for each module search to verify the cache is not outdated. Because cache
579 staleness relies upon the granularity of the operating system's state
580 information of the file system, there is a potential race condition of
581 searching for a module, creating a new file, and then searching for the
582 module the new file represents. If the operations happen fast enough to fit
583 within the granularity of stat calls, then the module search will fail. To
584 prevent this from happening, when you create a module dynamically, make sure
585 to call :func:`importlib.invalidate_caches`.
586
587 .. versionadded:: 3.3
588
589 .. attribute:: path
590
591 The path the finder will search in.
592
593 .. method:: find_module(fullname)
594
595 Attempt to find the loader to handle *fullname* within :attr:`path`.
596
597 .. method:: invalidate_caches()
598
599 Clear out the internal cache.
600
601 .. classmethod:: path_hook(\*loader_details)
602
603 A class method which returns a closure for use on :attr:`sys.path_hooks`.
604 An instance of :class:`FileFinder` is returned by the closure using the
605 path argument given to the closure directly and *loader_details*
606 indirectly.
607
608 If the argument to the closure is not an existing directory,
609 :exc:`ImportError` is raised.
610
611
612.. class:: SourceFileLoader(fullname, path)
613
614 A concrete implementation of :class:`importlib.abc.SourceLoader` by
615 subclassing :class:`importlib.abc.FileLoader` and providing some concrete
616 implementations of other methods.
617
618 .. versionadded:: 3.3
619
620 .. attribute:: name
621
622 The name of the module that this loader will handle.
623
624 .. attribute:: path
625
626 The path to the source file.
627
628 .. method:: is_package(fullname)
629
630 Return true if :attr:`path` appears to be for a package.
631
632 .. method:: path_stats(path)
633
634 Concrete implementation of :meth:`importlib.abc.SourceLoader.path_stats`.
635
636 .. method:: set_data(path, data)
637
638 Concrete implementation of :meth:`importlib.abc.SourceLoader.set_data`.
639
Brett Cannon938d44d2012-04-22 19:58:33 -0400640
Marc-Andre Lemburg4fe29c92012-04-25 02:31:37 +0200641.. class:: SourcelessFileLoader(fullname, path)
Brett Cannon938d44d2012-04-22 19:58:33 -0400642
643 A concrete implementation of :class:`importlib.abc.FileLoader` which can
644 import bytecode files (i.e. no source code files exist).
645
Marc-Andre Lemburg4fe29c92012-04-25 02:31:37 +0200646 Please note that direct use of bytecode files (and thus not source code
647 files) inhibits your modules from being usable by all Python
648 implementations or new versions of Python which change the bytecode
649 format.
Brett Cannon938d44d2012-04-22 19:58:33 -0400650
651 .. versionadded:: 3.3
652
653 .. attribute:: name
654
655 The name of the module the loader will handle.
656
657 .. attribute:: path
658
659 The path to the bytecode file.
660
661 .. method:: is_package(fullname)
662
663 Determines if the module is a package based on :attr:`path`.
664
665 .. method:: get_code(fullname)
666
667 Returns the code object for :attr:`name` created from :attr:`path`.
668
669 .. method:: get_source(fullname)
670
671 Returns ``None`` as bytecode files have no source when this loader is
672 used.
673
Brett Cannon938d44d2012-04-22 19:58:33 -0400674
675.. class:: ExtensionFileLoader(fullname, path)
676
677 A concrete implementation of :class:`importlib.abc.InspectLoader` for
678 extension modules.
679
680 The *fullname* argument specifies the name of the module the loader is to
681 support. The *path* argument is the path to the extension module's file.
682
683 .. versionadded:: 3.3
684
685 .. attribute:: name
686
687 Name of the module the loader supports.
688
689 .. attribute:: path
690
691 Path to the extension module.
692
Barry Warsawd7d21942012-07-29 16:36:17 -0400693 .. method:: load_module(fullname)
Brett Cannon938d44d2012-04-22 19:58:33 -0400694
Brett Cannonc0499522012-05-11 14:48:41 -0400695 Loads the extension module if and only if *fullname* is the same as
696 :attr:`name` or is ``None``.
Brett Cannon938d44d2012-04-22 19:58:33 -0400697
698 .. method:: is_package(fullname)
699
Brett Cannonac9f2f32012-08-10 13:47:54 -0400700 Returns ``True`` if the file path points to a package's ``__init__``
701 module based on :attr:`EXTENSION_SUFFIXES`.
Brett Cannon938d44d2012-04-22 19:58:33 -0400702
703 .. method:: get_code(fullname)
704
705 Returns ``None`` as extension modules lack a code object.
706
707 .. method:: get_source(fullname)
708
709 Returns ``None`` as extension modules do not have source code.
710
711
Brett Cannond2e7b332009-02-17 02:45:03 +0000712:mod:`importlib.util` -- Utility code for importers
713---------------------------------------------------
714
715.. module:: importlib.util
Brett Cannon75321e82012-03-02 11:58:25 -0500716 :synopsis: Utility code for importers
Brett Cannond2e7b332009-02-17 02:45:03 +0000717
718This module contains the various objects that help in the construction of
719an :term:`importer`.
720
Brett Cannond200bf52012-05-13 13:45:09 -0400721.. function:: resolve_name(name, package)
722
723 Resolve a relative module name to an absolute one.
724
725 If **name** has no leading dots, then **name** is simply returned. This
726 allows for usage such as
727 ``importlib.util.resolve_name('sys', __package__)`` without doing a
728 check to see if the **package** argument is needed.
729
730 :exc:`ValueError` is raised if **name** is a relative module name but
731 package is a false value (e.g. ``None`` or the empty string).
732 :exc:`ValueError` is also raised a relative name would escape its containing
733 package (e.g. requesting ``..bacon`` from within the ``spam`` package).
734
735 .. versionadded:: 3.3
736
Georg Brandl8a1caa22010-07-29 16:01:11 +0000737.. decorator:: module_for_loader
Brett Cannond2e7b332009-02-17 02:45:03 +0000738
Guido van Rossum09613542009-03-30 20:34:57 +0000739 A :term:`decorator` for a :term:`loader` method,
740 to handle selecting the proper
Brett Cannond2e7b332009-02-17 02:45:03 +0000741 module object to load with. The decorated method is expected to have a call
Brett Cannon2a922ed2009-03-09 03:35:50 +0000742 signature taking two positional arguments
743 (e.g. ``load_module(self, module)``) for which the second argument
Guido van Rossum09613542009-03-30 20:34:57 +0000744 will be the module **object** to be used by the loader.
Brett Cannonefad00d2012-04-27 17:27:14 -0400745 Note that the decorator will not work on static methods because of the
746 assumption of two arguments.
Brett Cannond2e7b332009-02-17 02:45:03 +0000747
Guido van Rossum09613542009-03-30 20:34:57 +0000748 The decorated method will take in the **name** of the module to be loaded
749 as expected for a :term:`loader`. If the module is not found in
Brett Cannon57b46f52009-03-02 14:38:26 +0000750 :data:`sys.modules` then a new one is constructed with its
Brett Cannonefad00d2012-04-27 17:27:14 -0400751 :attr:`__name__` attribute set to **name**, :attr:`__loader__` set to
752 **self**, and :attr:`__package__` set if
753 :meth:`importlib.abc.InspectLoader.is_package` is defined for **self** and
754 does not raise :exc:`ImportError` for **name**. If a new module is not
755 needed then the module found in :data:`sys.modules` will be passed into the
756 method.
757
758 If an exception is raised by the decorated method and a module was added to
Brett Cannond2e7b332009-02-17 02:45:03 +0000759 :data:`sys.modules` it will be removed to prevent a partially initialized
Brett Cannon57b46f52009-03-02 14:38:26 +0000760 module from being in left in :data:`sys.modules`. If the module was already
761 in :data:`sys.modules` then it is left alone.
Brett Cannond2e7b332009-02-17 02:45:03 +0000762
Guido van Rossum09613542009-03-30 20:34:57 +0000763 Use of this decorator handles all the details of which module object a
Brett Cannonefad00d2012-04-27 17:27:14 -0400764 loader should initialize as specified by :pep:`302` as best as possible.
765
766 .. versionchanged:: 3.3
Georg Brandl61063cc2012-06-24 22:48:30 +0200767 :attr:`__loader__` and :attr:`__package__` are automatically set
768 (when possible).
Brett Cannon57b46f52009-03-02 14:38:26 +0000769
Georg Brandl8a1caa22010-07-29 16:01:11 +0000770.. decorator:: set_loader
Brett Cannon2cf03a82009-03-10 05:17:37 +0000771
Guido van Rossum09613542009-03-30 20:34:57 +0000772 A :term:`decorator` for a :term:`loader` method,
773 to set the :attr:`__loader__`
Brett Cannon2cf03a82009-03-10 05:17:37 +0000774 attribute on loaded modules. If the attribute is already set the decorator
775 does nothing. It is assumed that the first positional argument to the
Brett Cannon75321e82012-03-02 11:58:25 -0500776 wrapped method (i.e. ``self``) is what :attr:`__loader__` should be set to.
Brett Cannon2cf03a82009-03-10 05:17:37 +0000777
Brett Cannonefad00d2012-04-27 17:27:14 -0400778 .. note::
779
780 It is recommended that :func:`module_for_loader` be used over this
781 decorator as it subsumes this functionality.
782
Brett Cannon4802bec2013-03-13 10:41:36 -0700783 .. versionchanged:: 3.4
784 Set ``__loader__`` if set to ``None`` as well if the attribute does not
785 exist.
786
Brett Cannonefad00d2012-04-27 17:27:14 -0400787
Georg Brandl8a1caa22010-07-29 16:01:11 +0000788.. decorator:: set_package
Brett Cannon57b46f52009-03-02 14:38:26 +0000789
790 A :term:`decorator` for a :term:`loader` to set the :attr:`__package__`
791 attribute on the module returned by the loader. If :attr:`__package__` is
Georg Brandl375aec22011-01-15 17:03:02 +0000792 set and has a value other than ``None`` it will not be changed.
Brett Cannon57b46f52009-03-02 14:38:26 +0000793 Note that the module returned by the loader is what has the attribute
794 set on and not the module found in :data:`sys.modules`.
Guido van Rossum09613542009-03-30 20:34:57 +0000795
Brett Cannon16248a42009-04-01 20:47:14 +0000796 Reliance on this decorator is discouraged when it is possible to set
Brett Cannon75321e82012-03-02 11:58:25 -0500797 :attr:`__package__` before importing. By
798 setting it beforehand the code for the module is executed with the
799 attribute set and thus can be used by global level code during
Brett Cannon16248a42009-04-01 20:47:14 +0000800 initialization.
801
Brett Cannonefad00d2012-04-27 17:27:14 -0400802 .. note::
803
804 It is recommended that :func:`module_for_loader` be used over this
805 decorator as it subsumes this functionality.