diff -r 955547e57cff Lib/shutil.py --- a/Lib/shutil.py Sun Mar 13 19:32:21 2011 +0100 +++ b/Lib/shutil.py Mon Mar 14 23:22:20 2011 -0400 @@ -737,8 +737,8 @@ except KeyError: raise ValueError("Unknown unpack format '{0}'".format(format)) - func = format_info[0] - func(filename, extract_dir, **dict(format_info[1])) + func = format_info[1] + func(filename, extract_dir, **dict(format_info[2])) else: # we need to look at the registered unpackers supported extensions format = _find_unpack_format(filename) diff -r 955547e57cff Lib/test/test_shutil.py --- a/Lib/test/test_shutil.py Sun Mar 13 19:32:21 2011 +0100 +++ b/Lib/test/test_shutil.py Mon Mar 14 23:22:20 2011 -0400 @@ -644,6 +644,14 @@ unpack_archive(filename, tmpdir2) diff = self._compare_dirs(tmpdir, tmpdir2) self.assertEqual(diff, []) + shutil.rmtree(tmpdir2) + + # and again, this time with the format specified + unpack_archive(filename, tmpdir2, format=format) + diff = self._compare_dirs(tmpdir, tmpdir2) + self.assertEqual(diff, []) + self.assertRaises(shutil.ReadError, unpack_archive, TESTFN) + self.assertRaises(ValueError, unpack_archive, TESTFN, format='xxx') def test_unpack_registery(self):