summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Coghlan <ncoghlan@gmail.com>2009-02-08 03:37:27 (GMT)
committerNick Coghlan <ncoghlan@gmail.com>2009-02-08 03:37:27 (GMT)
commit9a1d6e3022c8eb3cc3b05a30ea975da971bd5938 (patch)
tree14c1d51e518f7ea189700355f1b2a004baf1e871
parent3f48ae35c710c5e5101d5de6721b1e2ccb56df68 (diff)
downloadcpython-9a1d6e3022c8eb3cc3b05a30ea975da971bd5938.zip
cpython-9a1d6e3022c8eb3cc3b05a30ea975da971bd5938.tar.gz
cpython-9a1d6e3022c8eb3cc3b05a30ea975da971bd5938.tar.bz2
Merged revisions 69425 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r69425 | nick.coghlan | 2009-02-08 13:17:00 +1000 (Sun, 08 Feb 2009) | 1 line Issue #4512 closeout: Make ZipImport.get_filename() a public method ........
-rw-r--r--Doc/library/zipimport.rst9
-rw-r--r--Lib/test/test_zipimport.py12
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/zipimport.c6
4 files changed, 21 insertions, 9 deletions
diff --git a/Doc/library/zipimport.rst b/Doc/library/zipimport.rst
index 912378e..3fd0595 100644
--- a/Doc/library/zipimport.rst
+++ b/Doc/library/zipimport.rst
@@ -88,6 +88,15 @@ zipimporter Objects
file wasn't found.
+ .. method:: get_filename(fullname)
+
+ Return the value ``__file__`` would be set to if the specified module
+ was imported. Raise :exc:`ZipImportError` if the module couldn't be
+ found.
+
+ .. versionadded:: 3.1
+
+
.. method:: get_source(fullname)
Return the source code for the specified module. Raise
diff --git a/Lib/test/test_zipimport.py b/Lib/test/test_zipimport.py
index 5637467..f41deaf 100644
--- a/Lib/test/test_zipimport.py
+++ b/Lib/test/test_zipimport.py
@@ -212,7 +212,7 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
self.assertEquals(zi.archive, TEMP_ZIP)
self.assertEquals(zi.is_package(TESTPACK), True)
mod = zi.load_module(TESTPACK)
- self.assertEquals(zi._get_filename(TESTPACK), mod.__file__)
+ self.assertEquals(zi.get_filename(TESTPACK), mod.__file__)
self.assertEquals(zi.is_package(packdir + '__init__'), False)
self.assertEquals(zi.is_package(packdir + TESTPACK2), True)
@@ -224,11 +224,11 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
mod = sys.modules[mod_name]
self.assertEquals(zi.get_source(TESTPACK), None)
self.assertEquals(zi.get_source(mod_path), None)
- self.assertEquals(zi._get_filename(mod_path), mod.__file__)
+ self.assertEquals(zi.get_filename(mod_path), mod.__file__)
# To pass in the module name instead of the path, we must use the right importer
loader = mod.__loader__
self.assertEquals(loader.get_source(mod_name), None)
- self.assertEquals(loader._get_filename(mod_name), mod.__file__)
+ self.assertEquals(loader.get_filename(mod_name), mod.__file__)
# test prefix and archivepath members
zi2 = zipimport.zipimporter(TEMP_ZIP + os.sep + TESTPACK)
@@ -257,7 +257,7 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
self.assertEquals(zi.prefix, packdir)
self.assertEquals(zi.is_package(TESTPACK2), True)
mod = zi.load_module(TESTPACK2)
- self.assertEquals(zi._get_filename(TESTPACK2), mod.__file__)
+ self.assertEquals(zi.get_filename(TESTPACK2), mod.__file__)
self.assertEquals(zi.is_package(TESTPACK2 + os.sep + '__init__'), False)
self.assertEquals(zi.is_package(TESTPACK2 + os.sep + TESTMOD), False)
@@ -268,11 +268,11 @@ class UncompressedZipImportTestCase(ImportHooksBaseTestCase):
mod = sys.modules[mod_name]
self.assertEquals(zi.get_source(TESTPACK2), None)
self.assertEquals(zi.get_source(mod_path), None)
- self.assertEquals(zi._get_filename(mod_path), mod.__file__)
+ self.assertEquals(zi.get_filename(mod_path), mod.__file__)
# To pass in the module name instead of the path, we must use the right importer
loader = mod.__loader__
self.assertEquals(loader.get_source(mod_name), None)
- self.assertEquals(loader._get_filename(mod_name), mod.__file__)
+ self.assertEquals(loader.get_filename(mod_name), mod.__file__)
finally:
z.close()
os.remove(TEMP_ZIP)
diff --git a/Misc/NEWS b/Misc/NEWS
index df877ad..ee1bc56 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -155,6 +155,9 @@ Core and Builtins
Library
-------
+- Issue #4512 (part 2): Promote ``ZipImporter._get_filename()`` to be a
+ public documented method ``ZipImporter.get_filename()``.
+
- Issue #4195: The ``runpy`` module (and the ``-m`` switch) now support
the execution of packages by looking for and executing a ``__main__``
submodule when a package name is supplied. Initial patch by Andi
diff --git a/Modules/zipimport.c b/Modules/zipimport.c
index ba37f8b..53bc799 100644
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -363,7 +363,7 @@ zipimporter_get_filename(PyObject *obj, PyObject *args)
char *fullname, *modpath;
int ispackage;
- if (!PyArg_ParseTuple(args, "s:zipimporter._get_filename",
+ if (!PyArg_ParseTuple(args, "s:zipimporter.get_filename",
&fullname))
return NULL;
@@ -543,7 +543,7 @@ contain the module, but has no source for it.");
PyDoc_STRVAR(doc_get_filename,
-"_get_filename(fullname) -> filename string.\n\
+"get_filename(fullname) -> filename string.\n\
\n\
Return the filename for the specified module.");
@@ -558,7 +558,7 @@ static PyMethodDef zipimporter_methods[] = {
doc_get_code},
{"get_source", zipimporter_get_source, METH_VARARGS,
doc_get_source},
- {"_get_filename", zipimporter_get_filename, METH_VARARGS,
+ {"get_filename", zipimporter_get_filename, METH_VARARGS,
doc_get_filename},
{"is_package", zipimporter_is_package, METH_VARARGS,
doc_is_package},