Kaydet (Commit) e260ba2d authored tarafından Georg Brandl's avatar Georg Brandl

#1325: Add docs and tests for zipimporter.archive and zipimporter.prefix.

üst 516787dd
...@@ -33,21 +33,6 @@ Using the built-in :func:`reload` function will fail if called on a module ...@@ -33,21 +33,6 @@ Using the built-in :func:`reload` function will fail if called on a module
loaded from a ZIP archive; it is unlikely that :func:`reload` would be needed, loaded from a ZIP archive; it is unlikely that :func:`reload` would be needed,
since this would imply that the ZIP has been altered during runtime. since this would imply that the ZIP has been altered during runtime.
The available attributes of this module are:
.. exception:: ZipImportError
Exception raised by zipimporter objects. It's a subclass of :exc:`ImportError`,
so it can be caught as :exc:`ImportError`, too.
.. class:: zipimporter
The class for importing ZIP files. See section :ref:`zipimporter-objects`
for constructor details.
.. seealso:: .. seealso::
`PKZIP Application Note <http://www.pkware.com/business_and_developers/developer/appnote/>`_ `PKZIP Application Note <http://www.pkware.com/business_and_developers/developer/appnote/>`_
...@@ -63,18 +48,33 @@ The available attributes of this module are: ...@@ -63,18 +48,33 @@ The available attributes of this module are:
The PEP to add the import hooks that help this module work. The PEP to add the import hooks that help this module work.
This module defines an exception:
.. exception:: ZipImportError
Exception raised by zipimporter objects. It's a subclass of :exc:`ImportError`,
so it can be caught as :exc:`ImportError`, too.
.. _zipimporter-objects: .. _zipimporter-objects:
zipimporter Objects zipimporter Objects
------------------- -------------------
:class:`zipimporter` is the class for importing ZIP files.
.. class:: zipimporter(archivepath) .. class:: zipimporter(archivepath)
Create a new zipimporter instance. *archivepath* must be a path to a zipfile. Create a new zipimporter instance. *archivepath* must be a path to a ZIP file.
:exc:`ZipImportError` is raised if *archivepath* doesn't point to a valid ZIP :exc:`ZipImportError` is raised if *archivepath* doesn't point to a valid ZIP
archive. archive.
*archivepath* can also contain a path within the ZIP file -- the importer
object will then look under that path instead of the ZIP file root. For
example, an *archivepath* of :file:`foo/bar.zip/lib` will look for modules
in the :file:`lib` directory inside the ZIP file :file:`foo/bar.zip`
(provided that it exists).
.. method:: zipimporter.find_module(fullname[, path]) .. method:: zipimporter.find_module(fullname[, path])
...@@ -116,11 +116,22 @@ zipimporter Objects ...@@ -116,11 +116,22 @@ zipimporter Objects
:exc:`ZipImportError` if it wasn't found. :exc:`ZipImportError` if it wasn't found.
Examples .. attribute:: zipimporter.archive
--------
The file name of the importer's associated ZIP file.
.. attribute:: zipimporter.prefix
The path within the ZIP file where modules are searched; see
:class:`zipimporter` for details.
.. _zipimport-examples: .. _zipimport-examples:
Examples
--------
Here is an example that imports a module from a ZIP archive - note that the Here is an example that imports a module from a ZIP archive - note that the
:mod:`zipimport` module is not explicitly used. :: :mod:`zipimport` module is not explicitly used. ::
......
...@@ -223,6 +223,11 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase): ...@@ -223,6 +223,11 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
mod = __import__(module_path_to_dotted_name(mod_name)) mod = __import__(module_path_to_dotted_name(mod_name))
self.assertEquals(zi.get_source(TESTPACK), None) self.assertEquals(zi.get_source(TESTPACK), None)
self.assertEquals(zi.get_source(mod_name), None) self.assertEquals(zi.get_source(mod_name), None)
# test prefix and archivepath members
zi2 = zipimport.zipimporter(TEMP_ZIP + os.sep + TESTPACK)
self.assertEquals(zi2.archive, TEMP_ZIP)
self.assertEquals(zi2.prefix, TESTPACK + os.sep)
finally: finally:
z.close() z.close()
os.remove(TEMP_ZIP) os.remove(TEMP_ZIP)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment