Skip to content

Commit 33ee6de

Browse files
author
nick.coghlan
committed
Issue #4512 closeout: Make ZipImport.get_filename() a public method
git-svn-id: http://svn.python.org/projects/python/trunk@69425 6015fed2-1504-0410-9fe1-9d1591cc4771
1 parent c0a9b53 commit 33ee6de

4 files changed

Lines changed: 21 additions & 9 deletions

File tree

Doc/library/zipimport.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,15 @@ zipimporter Objects
9494
file wasn't found.
9595

9696

97+
.. method:: get_filename(fullname)
98+
99+
Return the value ``__file__`` would be set to if the specified module
100+
was imported. Raise :exc:`ZipImportError` if the module couldn't be
101+
found.
102+
103+
.. versionadded:: 2.7
104+
105+
97106
.. method:: get_source(fullname)
98107

99108
Return the source code for the specified module. Raise

Lib/test/test_zipimport.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ def testZipImporterMethods(self):
215215
self.assertEquals(zi.archive, TEMP_ZIP)
216216
self.assertEquals(zi.is_package(TESTPACK), True)
217217
mod = zi.load_module(TESTPACK)
218-
self.assertEquals(zi._get_filename(TESTPACK), mod.__file__)
218+
self.assertEquals(zi.get_filename(TESTPACK), mod.__file__)
219219

220220
self.assertEquals(zi.is_package(packdir + '__init__'), False)
221221
self.assertEquals(zi.is_package(packdir + TESTPACK2), True)
@@ -227,11 +227,11 @@ def testZipImporterMethods(self):
227227
mod = sys.modules[mod_name]
228228
self.assertEquals(zi.get_source(TESTPACK), None)
229229
self.assertEquals(zi.get_source(mod_path), None)
230-
self.assertEquals(zi._get_filename(mod_path), mod.__file__)
230+
self.assertEquals(zi.get_filename(mod_path), mod.__file__)
231231
# To pass in the module name instead of the path, we must use the right importer
232232
loader = mod.__loader__
233233
self.assertEquals(loader.get_source(mod_name), None)
234-
self.assertEquals(loader._get_filename(mod_name), mod.__file__)
234+
self.assertEquals(loader.get_filename(mod_name), mod.__file__)
235235

236236
# test prefix and archivepath members
237237
zi2 = zipimport.zipimporter(TEMP_ZIP + os.sep + TESTPACK)
@@ -260,7 +260,7 @@ def testZipImporterMethodsInSubDirectory(self):
260260
self.assertEquals(zi.prefix, packdir)
261261
self.assertEquals(zi.is_package(TESTPACK2), True)
262262
mod = zi.load_module(TESTPACK2)
263-
self.assertEquals(zi._get_filename(TESTPACK2), mod.__file__)
263+
self.assertEquals(zi.get_filename(TESTPACK2), mod.__file__)
264264

265265
self.assertEquals(zi.is_package(TESTPACK2 + os.sep + '__init__'), False)
266266
self.assertEquals(zi.is_package(TESTPACK2 + os.sep + TESTMOD), False)
@@ -271,11 +271,11 @@ def testZipImporterMethodsInSubDirectory(self):
271271
mod = sys.modules[mod_name]
272272
self.assertEquals(zi.get_source(TESTPACK2), None)
273273
self.assertEquals(zi.get_source(mod_path), None)
274-
self.assertEquals(zi._get_filename(mod_path), mod.__file__)
274+
self.assertEquals(zi.get_filename(mod_path), mod.__file__)
275275
# To pass in the module name instead of the path, we must use the right importer
276276
loader = mod.__loader__
277277
self.assertEquals(loader.get_source(mod_name), None)
278-
self.assertEquals(loader._get_filename(mod_name), mod.__file__)
278+
self.assertEquals(loader.get_filename(mod_name), mod.__file__)
279279
finally:
280280
z.close()
281281
os.remove(TEMP_ZIP)

Misc/NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,9 @@ Core and Builtins
149149
Library
150150
-------
151151

152+
- Issue #4512 (part 2): Promote ``ZipImporter._get_filename()`` to be a
153+
public documented method ``ZipImporter.get_filename()``.
154+
152155
- Issue #4195: The ``runpy`` module (and the ``-m`` switch) now support
153156
the execution of packages by looking for and executing a ``__main__``
154157
submodule when a package name is supplied. Initial patch by Andi

Modules/zipimport.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ zipimporter_get_filename(PyObject *obj, PyObject *args)
378378
char *fullname, *modpath;
379379
int ispackage;
380380

381-
if (!PyArg_ParseTuple(args, "s:zipimporter._get_filename",
381+
if (!PyArg_ParseTuple(args, "s:zipimporter.get_filename",
382382
&fullname))
383383
return NULL;
384384

@@ -553,7 +553,7 @@ contain the module, but has no source for it.");
553553

554554

555555
PyDoc_STRVAR(doc_get_filename,
556-
"_get_filename(fullname) -> filename string.\n\
556+
"get_filename(fullname) -> filename string.\n\
557557
\n\
558558
Return the filename for the specified module.");
559559

@@ -568,7 +568,7 @@ static PyMethodDef zipimporter_methods[] = {
568568
doc_get_code},
569569
{"get_source", zipimporter_get_source, METH_VARARGS,
570570
doc_get_source},
571-
{"_get_filename", zipimporter_get_filename, METH_VARARGS,
571+
{"get_filename", zipimporter_get_filename, METH_VARARGS,
572572
doc_get_filename},
573573
{"is_package", zipimporter_is_package, METH_VARARGS,
574574
doc_is_package},

0 commit comments

Comments
 (0)