blob: 4cdb4f2abbc2b626e1984580491b66b6b52e78e1 [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
93 returned (unless the loader would be ``None``, in which case
94 :exc:`ValueError` is raised). Otherwise a search using :attr:`sys.meta_path`
95 is done. ``None`` is returned if no loader is found.
96
97 A dotted name does not have its parent's implicitly imported. If that is
98 desired (although not nessarily required to find the loader, it will most
99 likely be needed if the loader actually is used to load the module), then
100 you will have to import the packages containing the module prior to calling
101 this function.
102
Antoine Pitrouc541f8e2012-02-20 01:48:16 +0100103.. function:: invalidate_caches()
104
Brett Cannonf4dc9202012-08-10 12:21:12 -0400105 Invalidate the internal caches of finders stored at
106 :data:`sys.meta_path`. If a finder implements ``invalidate_caches()`` then it
107 will be called to perform the invalidation. This function may be needed if
108 some modules are installed while your program is running and you expect the
109 program to notice the changes.
Antoine Pitrouc541f8e2012-02-20 01:48:16 +0100110
111 .. versionadded:: 3.3
112
Brett Cannon78246b62009-01-25 04:56:30 +0000113
Brett Cannon2a922ed2009-03-09 03:35:50 +0000114:mod:`importlib.abc` -- Abstract base classes related to import
115---------------------------------------------------------------
116
117.. module:: importlib.abc
118 :synopsis: Abstract base classes related to import
119
120The :mod:`importlib.abc` module contains all of the core abstract base classes
121used by :keyword:`import`. Some subclasses of the core abstract base classes
122are also provided to help in implementing the core ABCs.
123
124
125.. class:: Finder
126
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000127 An abstract base class representing a :term:`finder`. Finder
128 implementations should derive from (or register with) the more specific
129 :class:`MetaPathFinder` or :class:`PathEntryFinder` ABCs.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000130
Brett Cannonf4dc9202012-08-10 12:21:12 -0400131 .. method:: find_module(fullname, path=None)
Brett Cannonb46a1792012-02-27 18:15:42 -0500132
Brett Cannonf4dc9202012-08-10 12:21:12 -0400133 An abstact method for finding a :term:`loader` for the specified
134 module. Originally specified in :pep:`302`, this method was meant
135 for use in :data:`sys.meta_path` and in the path-based import subsystem.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000136
137
Brett Cannon077ef452012-08-02 17:50:06 -0400138.. class:: MetaPathFinder
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000139
Brett Cannonf4dc9202012-08-10 12:21:12 -0400140 An abstract base class representing a :term:`meta path finder`. For
141 compatibility, this is a subclass of :class:`Finder`.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000142
143 .. versionadded:: 3.3
144
145 .. method:: find_module(fullname, path)
146
147 An abstract method for finding a :term:`loader` for the specified
148 module. If this is a top-level import, *path* will be ``None``.
149 Otheriwse, this is a search for a subpackage or module and *path*
150 will be the value of :attr:`__path__` from the parent
151 package. If a loader cannot be found, ``None`` is returned.
152
Brett Cannonf4dc9202012-08-10 12:21:12 -0400153 .. method:: invalidate_caches()
154
155 An optional method which, when called, should invalidate any internal
156 cache used by the finder. Used by :func:`invalidate_caches()` when
157 invalidating the caches of all finders on :data:`sys.meta_path`.
158
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000159
Brett Cannon077ef452012-08-02 17:50:06 -0400160.. class:: PathEntryFinder
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000161
Brett Cannonf4dc9202012-08-10 12:21:12 -0400162 An abstract base class representing a :term:`path entry finder`. Though
163 it bears some similarities to :class:`MetaPathFinder`, ``PathEntryFinder``
164 is meant for use only within the path-based import subsystem provided
165 by :class:`PathFinder`. This ABC is a subclass of :class:`Finder` for
166 compatibility.
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000167
168 .. versionadded:: 3.3
169
Brett Cannon773468f2012-08-02 17:35:34 -0400170 .. method:: find_loader(fullname):
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000171
172 An abstract method for finding a :term:`loader` for the specified
Brett Cannonf4dc9202012-08-10 12:21:12 -0400173 module. Returns a 2-tuple of ``(loader, portion)`` where ``portion``
174 is a sequence of file system locations contributing to part of a namespace
175 package. The loader may be ``None`` while specifying ``portion`` to
176 signify the contribution of the file system locations to a namespace
177 package. An empty list can be used for ``portion`` to signify the loader
178 is not part of a package. If ``loader`` is ``None`` and ``portion`` is
179 the empty list then no loader or location for a namespace package were
180 found (i.e. failure to find anything for the module).
181
182 .. method:: find_module(fullname):
183
184 A concrete implementation of :meth:`Finder.find_module` which is
185 equivalent to ``self.find_loader(fullname)[0]``.
186
187 .. method:: invalidate_caches()
188
189 An optional method which, when called, should invalidate any internal
190 cache used by the finder. Used by :meth:`PathFinder.invalidate_caches()`
191 when invalidating the caches of all cached finders.
Brett Cannonb46a1792012-02-27 18:15:42 -0500192
Brett Cannon2a922ed2009-03-09 03:35:50 +0000193
194.. class:: Loader
195
196 An abstract base class for a :term:`loader`.
Guido van Rossum09613542009-03-30 20:34:57 +0000197 See :pep:`302` for the exact definition for a loader.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000198
Brett Cannon9c751b72009-03-09 16:28:16 +0000199 .. method:: load_module(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000200
201 An abstract method for loading a module. If the module cannot be
202 loaded, :exc:`ImportError` is raised, otherwise the loaded module is
203 returned.
204
Guido van Rossum09613542009-03-30 20:34:57 +0000205 If the requested module already exists in :data:`sys.modules`, that
Brett Cannon2a922ed2009-03-09 03:35:50 +0000206 module should be used and reloaded.
Guido van Rossum09613542009-03-30 20:34:57 +0000207 Otherwise the loader should create a new module and insert it into
208 :data:`sys.modules` before any loading begins, to prevent recursion
209 from the import. If the loader inserted a module and the load fails, it
Brett Cannon2a922ed2009-03-09 03:35:50 +0000210 must be removed by the loader from :data:`sys.modules`; modules already
211 in :data:`sys.modules` before the loader began execution should be left
212 alone. The :func:`importlib.util.module_for_loader` decorator handles
213 all of these details.
214
Guido van Rossum09613542009-03-30 20:34:57 +0000215 The loader should set several attributes on the module.
216 (Note that some of these attributes can change when a module is
217 reloaded.)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000218
219 - :attr:`__name__`
220 The name of the module.
221
222 - :attr:`__file__`
223 The path to where the module data is stored (not set for built-in
224 modules).
225
226 - :attr:`__path__`
Guido van Rossum09613542009-03-30 20:34:57 +0000227 A list of strings specifying the search path within a
Brett Cannon2a922ed2009-03-09 03:35:50 +0000228 package. This attribute is not set on modules.
229
230 - :attr:`__package__`
231 The parent package for the module/package. If the module is
232 top-level then it has a value of the empty string. The
233 :func:`importlib.util.set_package` decorator can handle the details
234 for :attr:`__package__`.
235
236 - :attr:`__loader__`
Guido van Rossum09613542009-03-30 20:34:57 +0000237 The loader used to load the module.
238 (This is not set by the built-in import machinery,
239 but it should be set whenever a :term:`loader` is used.)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000240
Barry Warsawd7d21942012-07-29 16:36:17 -0400241 .. method:: module_repr(module)
242
243 An abstract method which when implemented calculates and returns the
244 given module's repr, as a string.
245
246 .. versionadded: 3.3
247
Brett Cannon2a922ed2009-03-09 03:35:50 +0000248
249.. class:: ResourceLoader
250
251 An abstract base class for a :term:`loader` which implements the optional
252 :pep:`302` protocol for loading arbitrary resources from the storage
253 back-end.
254
Brett Cannon9c751b72009-03-09 16:28:16 +0000255 .. method:: get_data(path)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000256
257 An abstract method to return the bytes for the data located at *path*.
Guido van Rossum09613542009-03-30 20:34:57 +0000258 Loaders that have a file-like storage back-end
Brett Cannon16248a42009-04-01 20:47:14 +0000259 that allows storing arbitrary data
Guido van Rossum09613542009-03-30 20:34:57 +0000260 can implement this abstract method to give direct access
Brett Cannon2a922ed2009-03-09 03:35:50 +0000261 to the data stored. :exc:`IOError` is to be raised if the *path* cannot
262 be found. The *path* is expected to be constructed using a module's
Brett Cannon16248a42009-04-01 20:47:14 +0000263 :attr:`__file__` attribute or an item from a package's :attr:`__path__`.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000264
265
266.. class:: InspectLoader
267
268 An abstract base class for a :term:`loader` which implements the optional
Guido van Rossum09613542009-03-30 20:34:57 +0000269 :pep:`302` protocol for loaders that inspect modules.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000270
Brett Cannona113ac52009-03-15 01:41:33 +0000271 .. method:: get_code(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000272
Brett Cannona113ac52009-03-15 01:41:33 +0000273 An abstract method to return the :class:`code` object for a module.
Georg Brandl375aec22011-01-15 17:03:02 +0000274 ``None`` is returned if the module does not have a code object
Brett Cannona113ac52009-03-15 01:41:33 +0000275 (e.g. built-in module). :exc:`ImportError` is raised if loader cannot
276 find the requested module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000277
Brett Cannon9c751b72009-03-09 16:28:16 +0000278 .. method:: get_source(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000279
280 An abstract method to return the source of a module. It is returned as
Georg Brandl375aec22011-01-15 17:03:02 +0000281 a text string with universal newlines. Returns ``None`` if no
Brett Cannon2a922ed2009-03-09 03:35:50 +0000282 source is available (e.g. a built-in module). Raises :exc:`ImportError`
283 if the loader cannot find the module specified.
284
Brett Cannona113ac52009-03-15 01:41:33 +0000285 .. method:: is_package(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000286
Brett Cannona113ac52009-03-15 01:41:33 +0000287 An abstract method to return a true value if the module is a package, a
288 false value otherwise. :exc:`ImportError` is raised if the
289 :term:`loader` cannot find the module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000290
291
Brett Cannon69194272009-07-20 04:23:48 +0000292.. class:: ExecutionLoader
293
294 An abstract base class which inherits from :class:`InspectLoader` that,
Brett Cannon23460292009-07-20 22:59:00 +0000295 when implemented, helps a module to be executed as a script. The ABC
Brett Cannon69194272009-07-20 04:23:48 +0000296 represents an optional :pep:`302` protocol.
297
298 .. method:: get_filename(fullname)
299
Brett Cannonf23e3742010-06-27 23:57:46 +0000300 An abstract method that is to return the value of :attr:`__file__` for
Brett Cannon69194272009-07-20 04:23:48 +0000301 the specified module. If no path is available, :exc:`ImportError` is
302 raised.
303
Brett Cannonf23e3742010-06-27 23:57:46 +0000304 If source code is available, then the method should return the path to
305 the source file, regardless of whether a bytecode was used to load the
306 module.
307
308
Brett Cannon938d44d2012-04-22 19:58:33 -0400309.. class:: FileLoader(fullname, path)
310
311 An abstract base class which inherits from :class:`ResourceLoader` and
312 :class:`ExecutionLoader`, providing concreate implementations of
313 :meth:`ResourceLoader.get_data` and :meth:`ExecutionLoader.get_filename`.
314
315 The *fullname* argument is a fully resolved name of the module the loader is
316 to handle. The *path* argument is the path to the file for the module.
317
318 .. versionadded:: 3.3
319
320 .. attribute:: name
321
322 The name of the module the loader can handle.
323
324 .. attribute:: path
325
326 Path to the file of the module.
327
Barry Warsawd7d21942012-07-29 16:36:17 -0400328 .. method:: load_module(fullname)
Brett Cannonc0499522012-05-11 14:48:41 -0400329
Barry Warsawd7d21942012-07-29 16:36:17 -0400330 Calls super's ``load_module()``.
Brett Cannonc0499522012-05-11 14:48:41 -0400331
Brett Cannon938d44d2012-04-22 19:58:33 -0400332 .. method:: get_filename(fullname)
333
Barry Warsawd7d21942012-07-29 16:36:17 -0400334 Returns :attr:`path`.
Brett Cannon938d44d2012-04-22 19:58:33 -0400335
336 .. method:: get_data(path)
337
338 Returns the open, binary file for *path*.
339
340
Brett Cannonf23e3742010-06-27 23:57:46 +0000341.. class:: SourceLoader
342
343 An abstract base class for implementing source (and optionally bytecode)
344 file loading. The class inherits from both :class:`ResourceLoader` and
345 :class:`ExecutionLoader`, requiring the implementation of:
346
347 * :meth:`ResourceLoader.get_data`
348 * :meth:`ExecutionLoader.get_filename`
Brett Cannon6dfbff32010-07-21 09:48:31 +0000349 Should only return the path to the source file; sourceless
Brett Cannonf23e3742010-06-27 23:57:46 +0000350 loading is not supported.
351
352 The abstract methods defined by this class are to add optional bytecode
353 file support. Not implementing these optional methods causes the loader to
354 only work with source code. Implementing the methods allows the loader to
355 work with source *and* bytecode files; it does not allow for *sourceless*
356 loading where only bytecode is provided. Bytecode files are an
357 optimization to speed up loading by removing the parsing step of Python's
358 compiler, and so no bytecode-specific API is exposed.
359
Brett Cannon773468f2012-08-02 17:35:34 -0400360 .. method:: path_stats(path)
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100361
362 Optional abstract method which returns a :class:`dict` containing
363 metadata about the specifed path. Supported dictionary keys are:
364
365 - ``'mtime'`` (mandatory): an integer or floating-point number
366 representing the modification time of the source code;
367 - ``'size'`` (optional): the size in bytes of the source code.
368
369 Any other keys in the dictionary are ignored, to allow for future
370 extensions.
371
372 .. versionadded:: 3.3
373
Brett Cannon773468f2012-08-02 17:35:34 -0400374 .. method:: path_mtime(path)
Brett Cannonf23e3742010-06-27 23:57:46 +0000375
376 Optional abstract method which returns the modification time for the
377 specified path.
378
Antoine Pitrou5136ac02012-01-13 18:52:16 +0100379 .. deprecated:: 3.3
380 This method is deprecated in favour of :meth:`path_stats`. You don't
381 have to implement it, but it is still available for compatibility
382 purposes.
383
Brett Cannon773468f2012-08-02 17:35:34 -0400384 .. method:: set_data(path, data)
Brett Cannonf23e3742010-06-27 23:57:46 +0000385
386 Optional abstract method which writes the specified bytes to a file
Brett Cannon61b14252010-07-03 21:48:25 +0000387 path. Any intermediate directories which do not exist are to be created
388 automatically.
389
390 When writing to the path fails because the path is read-only
391 (:attr:`errno.EACCES`), do not propagate the exception.
Brett Cannonf23e3742010-06-27 23:57:46 +0000392
Brett Cannon773468f2012-08-02 17:35:34 -0400393 .. method:: get_code(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000394
395 Concrete implementation of :meth:`InspectLoader.get_code`.
396
Brett Cannon773468f2012-08-02 17:35:34 -0400397 .. method:: load_module(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000398
399 Concrete implementation of :meth:`Loader.load_module`.
400
Brett Cannon773468f2012-08-02 17:35:34 -0400401 .. method:: get_source(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000402
403 Concrete implementation of :meth:`InspectLoader.get_source`.
404
Brett Cannon773468f2012-08-02 17:35:34 -0400405 .. method:: is_package(fullname)
Brett Cannonf23e3742010-06-27 23:57:46 +0000406
407 Concrete implementation of :meth:`InspectLoader.is_package`. A module
Brett Cannonea0b8232012-06-15 20:00:53 -0400408 is determined to be a package if its file path (as provided by
409 :meth:`ExecutionLoader.get_filename`) is a file named
410 ``__init__`` when the file extension is removed **and** the module name
411 itself does not end in ``__init__``.
Brett Cannonf23e3742010-06-27 23:57:46 +0000412
Brett Cannon69194272009-07-20 04:23:48 +0000413
Brett Cannon2a922ed2009-03-09 03:35:50 +0000414.. class:: PyLoader
415
Brett Cannon69194272009-07-20 04:23:48 +0000416 An abstract base class inheriting from
Brett Cannonf23e3742010-06-27 23:57:46 +0000417 :class:`ExecutionLoader` and
418 :class:`ResourceLoader` designed to ease the loading of
Brett Cannon2a922ed2009-03-09 03:35:50 +0000419 Python source modules (bytecode is not handled; see
Brett Cannonf23e3742010-06-27 23:57:46 +0000420 :class:`SourceLoader` for a source/bytecode ABC). A subclass
Brett Cannon2a922ed2009-03-09 03:35:50 +0000421 implementing this ABC will only need to worry about exposing how the source
422 code is stored; all other details for loading Python source code will be
423 handled by the concrete implementations of key methods.
424
Brett Cannonf23e3742010-06-27 23:57:46 +0000425 .. deprecated:: 3.2
426 This class has been deprecated in favor of :class:`SourceLoader` and is
427 slated for removal in Python 3.4. See below for how to create a
Georg Brandl6faee4e2010-09-21 14:48:28 +0000428 subclass that is compatible with Python 3.1 onwards.
Brett Cannonf23e3742010-06-27 23:57:46 +0000429
430 If compatibility with Python 3.1 is required, then use the following idiom
431 to implement a subclass that will work with Python 3.1 onwards (make sure
432 to implement :meth:`ExecutionLoader.get_filename`)::
433
434 try:
435 from importlib.abc import SourceLoader
436 except ImportError:
437 from importlib.abc import PyLoader as SourceLoader
438
439
440 class CustomLoader(SourceLoader):
441 def get_filename(self, fullname):
442 """Return the path to the source file."""
443 # Implement ...
444
445 def source_path(self, fullname):
446 """Implement source_path in terms of get_filename."""
447 try:
448 return self.get_filename(fullname)
449 except ImportError:
450 return None
451
452 def is_package(self, fullname):
453 """Implement is_package by looking for an __init__ file
454 name as returned by get_filename."""
455 filename = os.path.basename(self.get_filename(fullname))
456 return os.path.splitext(filename)[0] == '__init__'
457
458
Brett Cannon9c751b72009-03-09 16:28:16 +0000459 .. method:: source_path(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000460
461 An abstract method that returns the path to the source code for a
Georg Brandl375aec22011-01-15 17:03:02 +0000462 module. Should return ``None`` if there is no source code.
Brett Cannon3e761a92009-12-10 00:24:21 +0000463 Raises :exc:`ImportError` if the loader knows it cannot handle the
464 module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000465
Brett Cannon69194272009-07-20 04:23:48 +0000466 .. method:: get_filename(fullname)
467
468 A concrete implementation of
469 :meth:`importlib.abc.ExecutionLoader.get_filename` that
470 relies on :meth:`source_path`. If :meth:`source_path` returns
Georg Brandl375aec22011-01-15 17:03:02 +0000471 ``None``, then :exc:`ImportError` is raised.
Brett Cannon69194272009-07-20 04:23:48 +0000472
Brett Cannon9c751b72009-03-09 16:28:16 +0000473 .. method:: load_module(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000474
475 A concrete implementation of :meth:`importlib.abc.Loader.load_module`
Brett Cannonad876c72009-03-09 07:53:09 +0000476 that loads Python source code. All needed information comes from the
477 abstract methods required by this ABC. The only pertinent assumption
478 made by this method is that when loading a package
479 :attr:`__path__` is set to ``[os.path.dirname(__file__)]``.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000480
Brett Cannon9c751b72009-03-09 16:28:16 +0000481 .. method:: get_code(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000482
483 A concrete implementation of
484 :meth:`importlib.abc.InspectLoader.get_code` that creates code objects
Guido van Rossum09613542009-03-30 20:34:57 +0000485 from Python source code, by requesting the source code (using
Benjamin Peterson0089d752009-11-13 00:52:43 +0000486 :meth:`source_path` and :meth:`get_data`) and compiling it with the
487 built-in :func:`compile` function.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000488
Brett Cannond43b30b2009-03-10 03:29:23 +0000489 .. method:: get_source(fullname)
490
491 A concrete implementation of
492 :meth:`importlib.abc.InspectLoader.get_source`. Uses
Brett Cannon69194272009-07-20 04:23:48 +0000493 :meth:`importlib.abc.ResourceLoader.get_data` and :meth:`source_path`
494 to get the source code. It tries to guess the source encoding using
Guido van Rossum09613542009-03-30 20:34:57 +0000495 :func:`tokenize.detect_encoding`.
Brett Cannond43b30b2009-03-10 03:29:23 +0000496
Brett Cannon2a922ed2009-03-09 03:35:50 +0000497
498.. class:: PyPycLoader
499
Brett Cannonf23e3742010-06-27 23:57:46 +0000500 An abstract base class inheriting from :class:`PyLoader`.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000501 This ABC is meant to help in creating loaders that support both Python
502 source and bytecode.
503
Brett Cannonf23e3742010-06-27 23:57:46 +0000504 .. deprecated:: 3.2
505 This class has been deprecated in favor of :class:`SourceLoader` and to
506 properly support :pep:`3147`. If compatibility is required with
507 Python 3.1, implement both :class:`SourceLoader` and :class:`PyLoader`;
508 instructions on how to do so are included in the documentation for
509 :class:`PyLoader`. Do note that this solution will not support
510 sourceless/bytecode-only loading; only source *and* bytecode loading.
511
Brett Cannon1e331562012-07-02 14:35:34 -0400512 .. versionchanged:: 3.3
513 Updated to parse (but not use) the new source size field in bytecode
514 files when reading and to write out the field properly when writing.
515
Brett Cannon9c751b72009-03-09 16:28:16 +0000516 .. method:: source_mtime(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000517
518 An abstract method which returns the modification time for the source
519 code of the specified module. The modification time should be an
Georg Brandl375aec22011-01-15 17:03:02 +0000520 integer. If there is no source code, return ``None``. If the
Brett Cannon2a922ed2009-03-09 03:35:50 +0000521 module cannot be found then :exc:`ImportError` is raised.
522
Brett Cannon9c751b72009-03-09 16:28:16 +0000523 .. method:: bytecode_path(fullname)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000524
525 An abstract method which returns the path to the bytecode for the
Georg Brandl375aec22011-01-15 17:03:02 +0000526 specified module, if it exists. It returns ``None``
Guido van Rossum09613542009-03-30 20:34:57 +0000527 if no bytecode exists (yet).
Brett Cannon3e761a92009-12-10 00:24:21 +0000528 Raises :exc:`ImportError` if the loader knows it cannot handle the
529 module.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000530
Brett Cannon69194272009-07-20 04:23:48 +0000531 .. method:: get_filename(fullname)
532
533 A concrete implementation of
Brett Cannonf23e3742010-06-27 23:57:46 +0000534 :meth:`ExecutionLoader.get_filename` that relies on
535 :meth:`PyLoader.source_path` and :meth:`bytecode_path`.
Brett Cannon69194272009-07-20 04:23:48 +0000536 If :meth:`source_path` returns a path, then that value is returned.
537 Else if :meth:`bytecode_path` returns a path, that path will be
538 returned. If a path is not available from both methods,
539 :exc:`ImportError` is raised.
540
Brett Cannon9c751b72009-03-09 16:28:16 +0000541 .. method:: write_bytecode(fullname, bytecode)
Brett Cannon2a922ed2009-03-09 03:35:50 +0000542
543 An abstract method which has the loader write *bytecode* for future
Georg Brandl375aec22011-01-15 17:03:02 +0000544 use. If the bytecode is written, return ``True``. Return
545 ``False`` if the bytecode could not be written. This method
Brett Cannon2a922ed2009-03-09 03:35:50 +0000546 should not be called if :data:`sys.dont_write_bytecode` is true.
Guido van Rossum09613542009-03-30 20:34:57 +0000547 The *bytecode* argument should be a bytes string or bytes array.
Brett Cannon2a922ed2009-03-09 03:35:50 +0000548
549
Brett Cannon78246b62009-01-25 04:56:30 +0000550:mod:`importlib.machinery` -- Importers and path hooks
551------------------------------------------------------
552
553.. module:: importlib.machinery
554 :synopsis: Importers and path hooks
555
556This module contains the various objects that help :keyword:`import`
557find and load modules.
558
Brett Cannoncb66eb02012-05-11 12:58:42 -0400559.. attribute:: SOURCE_SUFFIXES
560
561 A list of strings representing the recognized file suffixes for source
562 modules.
563
564 .. versionadded:: 3.3
565
566.. attribute:: DEBUG_BYTECODE_SUFFIXES
567
568 A list of strings representing the file suffixes for non-optimized bytecode
569 modules.
570
571 .. versionadded:: 3.3
572
573.. attribute:: OPTIMIZED_BYTECODE_SUFFIXES
574
575 A list of strings representing the file suffixes for optimized bytecode
576 modules.
577
578 .. versionadded:: 3.3
579
580.. attribute:: BYTECODE_SUFFIXES
581
582 A list of strings representing the recognized file suffixes for bytecode
583 modules. Set to either :attr:`DEBUG_BYTECODE_SUFFIXES` or
584 :attr:`OPTIMIZED_BYTECODE_SUFFIXES` based on whether ``__debug__`` is true.
585
586 .. versionadded:: 3.3
587
588.. attribute:: EXTENSION_SUFFIXES
589
Nick Coghlan76e07702012-07-18 23:14:57 +1000590 A list of strings representing the recognized file suffixes for
Brett Cannoncb66eb02012-05-11 12:58:42 -0400591 extension modules.
592
593 .. versionadded:: 3.3
594
Nick Coghlanc5afd422012-07-18 23:59:08 +1000595.. function:: all_suffixes()
Nick Coghlan76e07702012-07-18 23:14:57 +1000596
597 Returns a combined list of strings representing all file suffixes for
Nick Coghlanc5afd422012-07-18 23:59:08 +1000598 modules recognized by the standard import machinery. This is a
Nick Coghlan76e07702012-07-18 23:14:57 +1000599 helper for code which simply needs to know if a filesystem path
Nick Coghlanc5afd422012-07-18 23:59:08 +1000600 potentially refers to a module without needing any details on the kind
601 of module (for example, :func:`inspect.getmodulename`)
Nick Coghlan76e07702012-07-18 23:14:57 +1000602
603 .. versionadded:: 3.3
604
605
Brett Cannon78246b62009-01-25 04:56:30 +0000606.. class:: BuiltinImporter
607
Brett Cannon2a922ed2009-03-09 03:35:50 +0000608 An :term:`importer` for built-in modules. All known built-in modules are
609 listed in :data:`sys.builtin_module_names`. This class implements the
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000610 :class:`importlib.abc.MetaPathFinder` and
611 :class:`importlib.abc.InspectLoader` ABCs.
Brett Cannon78246b62009-01-25 04:56:30 +0000612
613 Only class methods are defined by this class to alleviate the need for
614 instantiation.
615
Brett Cannon78246b62009-01-25 04:56:30 +0000616
617.. class:: FrozenImporter
618
Brett Cannon2a922ed2009-03-09 03:35:50 +0000619 An :term:`importer` for frozen modules. This class implements the
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000620 :class:`importlib.abc.MetaPathFinder` and
621 :class:`importlib.abc.InspectLoader` ABCs.
Brett Cannon78246b62009-01-25 04:56:30 +0000622
623 Only class methods are defined by this class to alleviate the need for
624 instantiation.
625
Brett Cannondebb98d2009-02-16 04:18:01 +0000626
Nick Coghlanff794862012-08-02 21:45:24 +1000627.. class:: WindowsRegistryFinder
628
629 :term:`Finder` for modules declared in the Windows registry. This class
Nick Coghlan49417742012-08-02 23:03:58 +1000630 implements the :class:`importlib.abc.Finder` ABC.
Nick Coghlanff794862012-08-02 21:45:24 +1000631
632 Only class methods are defined by this class to alleviate the need for
633 instantiation.
634
635 .. versionadded:: 3.3
636
637
Brett Cannondebb98d2009-02-16 04:18:01 +0000638.. class:: PathFinder
639
Nick Coghlan49417742012-08-02 23:03:58 +1000640 :term:`Finder` for :data:`sys.path` and package ``__path__`` attributes.
641 This class implements the :class:`importlib.abc.MetaPathFinder` ABC.
Brett Cannondebb98d2009-02-16 04:18:01 +0000642
Brett Cannon1b184d52009-11-07 08:22:58 +0000643 Only class methods are defined by this class to alleviate the need for
Brett Cannondebb98d2009-02-16 04:18:01 +0000644 instantiation.
645
646 .. classmethod:: find_module(fullname, path=None)
647
648 Class method that attempts to find a :term:`loader` for the module
Brett Cannon2a922ed2009-03-09 03:35:50 +0000649 specified by *fullname* on :data:`sys.path` or, if defined, on
Brett Cannondebb98d2009-02-16 04:18:01 +0000650 *path*. For each path entry that is searched,
Brett Cannon75321e82012-03-02 11:58:25 -0500651 :data:`sys.path_importer_cache` is checked. If a non-false object is
Brett Cannon2a922ed2009-03-09 03:35:50 +0000652 found then it is used as the :term:`finder` to look for the module
653 being searched for. If no entry is found in
Brett Cannondebb98d2009-02-16 04:18:01 +0000654 :data:`sys.path_importer_cache`, then :data:`sys.path_hooks` is
655 searched for a finder for the path entry and, if found, is stored in
656 :data:`sys.path_importer_cache` along with being queried about the
Nick Coghlan49417742012-08-02 23:03:58 +1000657 module. If no finder is ever found then ``None`` is both stored in
658 the cache and returned.
Brett Cannond2e7b332009-02-17 02:45:03 +0000659
Brett Cannonf4dc9202012-08-10 12:21:12 -0400660 .. classmethod:: invalidate_caches()
661
662 Call :meth:`importlib.abc.PathEntryFinder.invalidate_caches` on all
663 finders stored in :attr:`sys.path_importer_cache`.
664
Brett Cannond2e7b332009-02-17 02:45:03 +0000665
Brett Cannon938d44d2012-04-22 19:58:33 -0400666.. class:: FileFinder(path, \*loader_details)
667
Nick Coghlan8a9080f2012-08-02 21:26:03 +1000668 A concrete implementation of :class:`importlib.abc.PathEntryFinder` which
669 caches results from the file system.
Brett Cannon938d44d2012-04-22 19:58:33 -0400670
671 The *path* argument is the directory for which the finder is in charge of
672 searching.
673
Brett Cannonac9f2f32012-08-10 13:47:54 -0400674 The *loader_details* argument is a variable number of 2-item tuples each
675 containing a loader and a sequence of file suffixes the loader recognizes.
Brett Cannon938d44d2012-04-22 19:58:33 -0400676
677 The finder will cache the directory contents as necessary, making stat calls
678 for each module search to verify the cache is not outdated. Because cache
679 staleness relies upon the granularity of the operating system's state
680 information of the file system, there is a potential race condition of
681 searching for a module, creating a new file, and then searching for the
682 module the new file represents. If the operations happen fast enough to fit
683 within the granularity of stat calls, then the module search will fail. To
684 prevent this from happening, when you create a module dynamically, make sure
685 to call :func:`importlib.invalidate_caches`.
686
687 .. versionadded:: 3.3
688
689 .. attribute:: path
690
691 The path the finder will search in.
692
693 .. method:: find_module(fullname)
694
695 Attempt to find the loader to handle *fullname* within :attr:`path`.
696
697 .. method:: invalidate_caches()
698
699 Clear out the internal cache.
700
701 .. classmethod:: path_hook(\*loader_details)
702
703 A class method which returns a closure for use on :attr:`sys.path_hooks`.
704 An instance of :class:`FileFinder` is returned by the closure using the
705 path argument given to the closure directly and *loader_details*
706 indirectly.
707
708 If the argument to the closure is not an existing directory,
709 :exc:`ImportError` is raised.
710
711
712.. class:: SourceFileLoader(fullname, path)
713
714 A concrete implementation of :class:`importlib.abc.SourceLoader` by
715 subclassing :class:`importlib.abc.FileLoader` and providing some concrete
716 implementations of other methods.
717
718 .. versionadded:: 3.3
719
720 .. attribute:: name
721
722 The name of the module that this loader will handle.
723
724 .. attribute:: path
725
726 The path to the source file.
727
728 .. method:: is_package(fullname)
729
730 Return true if :attr:`path` appears to be for a package.
731
732 .. method:: path_stats(path)
733
734 Concrete implementation of :meth:`importlib.abc.SourceLoader.path_stats`.
735
736 .. method:: set_data(path, data)
737
738 Concrete implementation of :meth:`importlib.abc.SourceLoader.set_data`.
739
Brett Cannon938d44d2012-04-22 19:58:33 -0400740
Marc-Andre Lemburg4fe29c92012-04-25 02:31:37 +0200741.. class:: SourcelessFileLoader(fullname, path)
Brett Cannon938d44d2012-04-22 19:58:33 -0400742
743 A concrete implementation of :class:`importlib.abc.FileLoader` which can
744 import bytecode files (i.e. no source code files exist).
745
Marc-Andre Lemburg4fe29c92012-04-25 02:31:37 +0200746 Please note that direct use of bytecode files (and thus not source code
747 files) inhibits your modules from being usable by all Python
748 implementations or new versions of Python which change the bytecode
749 format.
Brett Cannon938d44d2012-04-22 19:58:33 -0400750
751 .. versionadded:: 3.3
752
753 .. attribute:: name
754
755 The name of the module the loader will handle.
756
757 .. attribute:: path
758
759 The path to the bytecode file.
760
761 .. method:: is_package(fullname)
762
763 Determines if the module is a package based on :attr:`path`.
764
765 .. method:: get_code(fullname)
766
767 Returns the code object for :attr:`name` created from :attr:`path`.
768
769 .. method:: get_source(fullname)
770
771 Returns ``None`` as bytecode files have no source when this loader is
772 used.
773
Brett Cannon938d44d2012-04-22 19:58:33 -0400774
775.. class:: ExtensionFileLoader(fullname, path)
776
777 A concrete implementation of :class:`importlib.abc.InspectLoader` for
778 extension modules.
779
780 The *fullname* argument specifies the name of the module the loader is to
781 support. The *path* argument is the path to the extension module's file.
782
783 .. versionadded:: 3.3
784
785 .. attribute:: name
786
787 Name of the module the loader supports.
788
789 .. attribute:: path
790
791 Path to the extension module.
792
Barry Warsawd7d21942012-07-29 16:36:17 -0400793 .. method:: load_module(fullname)
Brett Cannon938d44d2012-04-22 19:58:33 -0400794
Brett Cannonc0499522012-05-11 14:48:41 -0400795 Loads the extension module if and only if *fullname* is the same as
796 :attr:`name` or is ``None``.
Brett Cannon938d44d2012-04-22 19:58:33 -0400797
798 .. method:: is_package(fullname)
799
Brett Cannonac9f2f32012-08-10 13:47:54 -0400800 Returns ``True`` if the file path points to a package's ``__init__``
801 module based on :attr:`EXTENSION_SUFFIXES`.
Brett Cannon938d44d2012-04-22 19:58:33 -0400802
803 .. method:: get_code(fullname)
804
805 Returns ``None`` as extension modules lack a code object.
806
807 .. method:: get_source(fullname)
808
809 Returns ``None`` as extension modules do not have source code.
810
811
Brett Cannond2e7b332009-02-17 02:45:03 +0000812:mod:`importlib.util` -- Utility code for importers
813---------------------------------------------------
814
815.. module:: importlib.util
Brett Cannon75321e82012-03-02 11:58:25 -0500816 :synopsis: Utility code for importers
Brett Cannond2e7b332009-02-17 02:45:03 +0000817
818This module contains the various objects that help in the construction of
819an :term:`importer`.
820
Brett Cannond200bf52012-05-13 13:45:09 -0400821.. function:: resolve_name(name, package)
822
823 Resolve a relative module name to an absolute one.
824
825 If **name** has no leading dots, then **name** is simply returned. This
826 allows for usage such as
827 ``importlib.util.resolve_name('sys', __package__)`` without doing a
828 check to see if the **package** argument is needed.
829
830 :exc:`ValueError` is raised if **name** is a relative module name but
831 package is a false value (e.g. ``None`` or the empty string).
832 :exc:`ValueError` is also raised a relative name would escape its containing
833 package (e.g. requesting ``..bacon`` from within the ``spam`` package).
834
835 .. versionadded:: 3.3
836
Georg Brandl8a1caa22010-07-29 16:01:11 +0000837.. decorator:: module_for_loader
Brett Cannond2e7b332009-02-17 02:45:03 +0000838
Guido van Rossum09613542009-03-30 20:34:57 +0000839 A :term:`decorator` for a :term:`loader` method,
840 to handle selecting the proper
Brett Cannond2e7b332009-02-17 02:45:03 +0000841 module object to load with. The decorated method is expected to have a call
Brett Cannon2a922ed2009-03-09 03:35:50 +0000842 signature taking two positional arguments
843 (e.g. ``load_module(self, module)``) for which the second argument
Guido van Rossum09613542009-03-30 20:34:57 +0000844 will be the module **object** to be used by the loader.
Brett Cannonefad00d2012-04-27 17:27:14 -0400845 Note that the decorator will not work on static methods because of the
846 assumption of two arguments.
Brett Cannond2e7b332009-02-17 02:45:03 +0000847
Guido van Rossum09613542009-03-30 20:34:57 +0000848 The decorated method will take in the **name** of the module to be loaded
849 as expected for a :term:`loader`. If the module is not found in
Brett Cannon57b46f52009-03-02 14:38:26 +0000850 :data:`sys.modules` then a new one is constructed with its
Brett Cannonefad00d2012-04-27 17:27:14 -0400851 :attr:`__name__` attribute set to **name**, :attr:`__loader__` set to
852 **self**, and :attr:`__package__` set if
853 :meth:`importlib.abc.InspectLoader.is_package` is defined for **self** and
854 does not raise :exc:`ImportError` for **name**. If a new module is not
855 needed then the module found in :data:`sys.modules` will be passed into the
856 method.
857
858 If an exception is raised by the decorated method and a module was added to
Brett Cannond2e7b332009-02-17 02:45:03 +0000859 :data:`sys.modules` it will be removed to prevent a partially initialized
Brett Cannon57b46f52009-03-02 14:38:26 +0000860 module from being in left in :data:`sys.modules`. If the module was already
861 in :data:`sys.modules` then it is left alone.
Brett Cannond2e7b332009-02-17 02:45:03 +0000862
Guido van Rossum09613542009-03-30 20:34:57 +0000863 Use of this decorator handles all the details of which module object a
Brett Cannonefad00d2012-04-27 17:27:14 -0400864 loader should initialize as specified by :pep:`302` as best as possible.
865
866 .. versionchanged:: 3.3
Georg Brandl61063cc2012-06-24 22:48:30 +0200867 :attr:`__loader__` and :attr:`__package__` are automatically set
868 (when possible).
Brett Cannon57b46f52009-03-02 14:38:26 +0000869
Georg Brandl8a1caa22010-07-29 16:01:11 +0000870.. decorator:: set_loader
Brett Cannon2cf03a82009-03-10 05:17:37 +0000871
Guido van Rossum09613542009-03-30 20:34:57 +0000872 A :term:`decorator` for a :term:`loader` method,
873 to set the :attr:`__loader__`
Brett Cannon2cf03a82009-03-10 05:17:37 +0000874 attribute on loaded modules. If the attribute is already set the decorator
875 does nothing. It is assumed that the first positional argument to the
Brett Cannon75321e82012-03-02 11:58:25 -0500876 wrapped method (i.e. ``self``) is what :attr:`__loader__` should be set to.
Brett Cannon2cf03a82009-03-10 05:17:37 +0000877
Brett Cannonefad00d2012-04-27 17:27:14 -0400878 .. note::
879
880 It is recommended that :func:`module_for_loader` be used over this
881 decorator as it subsumes this functionality.
882
883
Georg Brandl8a1caa22010-07-29 16:01:11 +0000884.. decorator:: set_package
Brett Cannon57b46f52009-03-02 14:38:26 +0000885
886 A :term:`decorator` for a :term:`loader` to set the :attr:`__package__`
887 attribute on the module returned by the loader. If :attr:`__package__` is
Georg Brandl375aec22011-01-15 17:03:02 +0000888 set and has a value other than ``None`` it will not be changed.
Brett Cannon57b46f52009-03-02 14:38:26 +0000889 Note that the module returned by the loader is what has the attribute
890 set on and not the module found in :data:`sys.modules`.
Guido van Rossum09613542009-03-30 20:34:57 +0000891
Brett Cannon16248a42009-04-01 20:47:14 +0000892 Reliance on this decorator is discouraged when it is possible to set
Brett Cannon75321e82012-03-02 11:58:25 -0500893 :attr:`__package__` before importing. By
894 setting it beforehand the code for the module is executed with the
895 attribute set and thus can be used by global level code during
Brett Cannon16248a42009-04-01 20:47:14 +0000896 initialization.
897
Brett Cannonefad00d2012-04-27 17:27:14 -0400898 .. note::
899
900 It is recommended that :func:`module_for_loader` be used over this
901 decorator as it subsumes this functionality.