Index: Lib/mimetypes.py =================================================================== --- Lib/mimetypes.py (revisão 86582) +++ Lib/mimetypes.py (cópia de trabalho) @@ -173,7 +173,7 @@ extensions.append(ext) return extensions - def guess_extension(self, type, strict=True): + def guess_extension(self, type, strict=True, all_exts=False): """Guess the extension for a file based on its MIME type. Return value is a string giving a filename extension, @@ -188,8 +188,11 @@ """ extensions = self.guess_all_extensions(type, strict) if not extensions: - return None - return extensions[0] + extensions.append(None) + if all_exts: + return tuple(extensions) + else: + return extensions[0] def read(self, filename, strict=True): """ @@ -304,7 +307,7 @@ init() return _db.guess_all_extensions(type, strict) -def guess_extension(type, strict=True): +def guess_extension(type, strict=True, all_exts=False): """Guess the extension for a file based on its MIME type. Return value is a string giving a filename extension, including the @@ -318,7 +321,7 @@ """ if _db is None: init() - return _db.guess_extension(type, strict) + return _db.guess_extension(type, strict, all_exts) def add_type(type, ext, strict=True): """Add a mapping between a type and an extension. Index: Lib/test/test_mimetypes.py =================================================================== --- Lib/test/test_mimetypes.py (revisão 86582) +++ Lib/test/test_mimetypes.py (cópia de trabalho) @@ -61,6 +61,14 @@ # And now for no hits all = self.db.guess_all_extensions('image/jpg', strict=True) eq(all, []) + + def test_guess_extension_all_types(self): + eq = self.assertEqual + unless = self.assertTrue + all_with_exts = set(self.db.guess_extension('text/plain', all_exts=True)) + all_without_exts = self.db.guess_extension('not_exits_type', all_exts=True) + unless(all_with_exts >= set(('.bat', '.c', '.h', '.ksh', '.pl', '.txt'))) + eq(all_without_exts, (None,)) @unittest.skipUnless(sys.platform.startswith("win"), "Windows only")