diff -r 6b70f16d585a Lib/tarfile.py --- a/Lib/tarfile.py Wed Apr 15 10:27:58 2015 -0400 +++ b/Lib/tarfile.py Wed Apr 15 22:44:52 2015 -0500 @@ -64,7 +64,10 @@ pass # from tarfile import * -__all__ = ["TarFile", "TarInfo", "is_tarfile", "TarError"] +__all__ = ["TarFile", "TarInfo", "is_tarfile", "TarError", "ReadError", + "CompressionError", "StreamError", "ExtractError", "HeaderError", + "ENCODING", "USTAR_FORMAT", "GNU_FORMAT", "PAX_FORMAT", + "DEFAULT_FORMAT", "open"] #--------------------------------------------------------- # tar constants diff -r 6b70f16d585a Lib/test/test_tarfile.py --- a/Lib/test/test_tarfile.py Wed Apr 15 10:27:58 2015 -0400 +++ b/Lib/test/test_tarfile.py Wed Apr 15 22:44:52 2015 -0500 @@ -1962,6 +1962,32 @@ with self.assertRaises(ValueError): tarfile.itn(0x10000000000, 6, tarfile.GNU_FORMAT) + def test_all(self): + blacklist = {'REGTYPE', 'bltn_open', 'LNKTYPE', 'symlink_exception', + 'FIFOTYPE', 'BLOCKSIZE', 'PAX_NUMBER_FIELDS', + 'AREGTYPE', 'version', 'LENGTH_NAME', 'LENGTH_PREFIX', + 'GNUTYPE_LONGNAME', 'LENGTH_LINK', 'GNU_MAGIC', + 'GNU_TYPES', 'SOLARIS_XHDTYPE', 'RECORDSIZE', 'NUL', + 'CONTTYPE', 'GNUTYPE_SPARSE', 'PAX_FIELDS', + 'DIRTYPE', 'POSIX_MAGIC', 'GNUTYPE_LONGLINK', + 'XGLTYPE', 'CHRTYPE', 'SYMTYPE', 'XHDTYPE', + 'REGULAR_TYPES', 'PAX_NAME_FIELDS', 'BLKTYPE', + 'SUPPORTED_TYPES', 'nts', 'main', 'EOFHeaderError', + 'TruncatedHeaderError', 'InvalidHeaderError', + 'ExFileObject', 'EmptyHeaderError', 'itn', + 'calc_chksums', 'copyfileobj', 'TarIter', + 'SubsequentHeaderError', 'nti', 'stn', 'filemode'} + exported = set(tarfile.__all__) + possible_exports = set() + import types + for name, value in tarfile.__dict__.items(): + if name.startswith('_'): + continue + if isinstance(value, (types.ModuleType,)): + continue + possible_exports.add(name) + self.assertEqual(exported, possible_exports - blacklist) + class CommandLineTest(unittest.TestCase):