homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author eric.araujo
Recipients eric.araujo, nadeem.vawda, proyvind, tarek
Date 2012年02月21日.01:24:32
SpamBayes Score 1.7752466e-13
Marked as misclassified No
Message-id <1329787475.57.0.420898281926.issue5411@psf.upfronthosting.co.za>
In-reply-to
Content
I have a working updated shutil module, tests pass and the documentation is improved. I will make sure to make different commits for improving the tests, cleaning up some things, adding tarfile.compression_formats and removing duplication in shutil (see dep bugs), to be sure not to introduce regressions.
Before I finish and post the patch, I’d like feedback on a choice I made. I don’t think it’s possible to have shutil automatically support all the formats that tarfile does, because of the spelling issue I mentioned. Here’s what the code would look like (let me know if I should post it elsewhere or as a file to let you get syntax coloring):
 
 _ARCHIVE_FORMATS = {}
 _UNPACK_FORMATS = {}
 for fmt in tarfile.compression_formats:
 code = fmt + 'tar'
 ext = '.' + fmt
 desc = "%s'ed tar file" % fmt
 _ARCHIVE_FORMATS[code] = (_make_tarball, [('compress', fmt)], desc)
 _UNPACK_FORMATS[code] = ([ext], _unpack_tarfile, [], desc)
 # kludge to add alternate extension
 if 'gztar' in _ARCHIVE_FORMATS:
 _UNPACK_FORMATS['gztar'][0].append('.tgz')
 # XXX desc should say "gzip'ed tar file", not "gz'ed"
 # rectify naming incompatibility
 if 'bz2tar' in _ARCHIVE_FORMATS:
 # XXX alternative: make 'bztar' alias for 'bz2tar', but would complicate
 # manipulating the registries
 del _ARCHIVE_FORMATS['bz2tar']
 del _UNPACK_FORMATS['bz2tar']
 desc = "bzip2'ed tar file"
 _ARCHIVE_FORMATS['bztar'] = (_make_tarball, [('compress', 'bz2')], desc)
 _UNPACK_FORMATS['bztar'] = (['.bz2'], _unpack_tarfile, [], desc)
 # now add uncompressed tar and zip file
I really don’t like that code. Given that tarfile is not extensible at run time, it is not a big deal to have to update shutil whenever we add a compression format to tarfile. Therefore, I backtracked on my "automatic support" idea but kept a lot of cleanup in did in the code. Here’s what the code looks like:
 _ARCHIVE_FORMATS = {}
 _UNPACK_FORMATS = {}
 if 'xz' in tarfile.compression_formats:
 desc = "xz'ed tar file"
 # XXX '.xz' is not great, '.tar.xz' would be better
 _ARCHIVE_FORMATS['xztar'] = (_make_tarball, [('compress', 'xz')], desc)
 _UNPACK_FORMATS['xztar'] = (['.xz'], _unpack_tarfile, [], desc)
 if 'bz2' in tarfile.compression_formats:
 desc = "bzip2'ed tar file"
 _ARCHIVE_FORMATS['bztar'] = (_make_tarball, [('compress', 'bz2')], desc)
 _UNPACK_FORMATS['bztar'] = (['.bz2'], _unpack_tarfile, [], desc)
 if 'gz' in tarfile.compression_formats:
 desc = "gzip'ed tar file"
 _ARCHIVE_FORMATS['gztar'] = (_make_tarball, [('compress', 'gz')], desc)
 _UNPACK_FORMATS['gztar'] = (['.gz', '.tgz'], _unpack_tarfile, [], desc)
So, do you agree that "not automated but not ugly" is better than "automated with ugly klutches"?
History
Date User Action Args
2012年02月21日 01:24:35eric.araujosetrecipients: + eric.araujo, nadeem.vawda, tarek, proyvind
2012年02月21日 01:24:35eric.araujosetmessageid: <1329787475.57.0.420898281926.issue5411@psf.upfronthosting.co.za>
2012年02月21日 01:24:34eric.araujolinkissue5411 messages
2012年02月21日 01:24:32eric.araujocreate

AltStyle によって変換されたページ (->オリジナル) /