Mercurial > hg > PaInt
comparison paint/info.py @ 77:00c0f668f332
implementation of setup2metadata
| author | Jeff Hammel <jhammel@mozilla.com> |
|---|---|
| date | Sun, 27 Jan 2013 22:19:10 -0800 |
| parents | 84890934af1f |
| children |
comparison
equal
deleted
inserted
replaced
| 76:b4fb27d126aa | 77:00c0f668f332 |
|---|---|
| 2 interfaces to get information from a package | 2 interfaces to get information from a package |
| 3 """ | 3 """ |
| 4 | 4 |
| 5 | 5 |
| 6 import imp | 6 import imp |
| 7 import pkginfo | |
| 7 import os | 8 import os |
| 8 import subprocess | 9 import subprocess |
| 9 import sys | 10 import sys |
| 10 | 11 |
| 11 from distutils.dist import Distribution | 12 from distutils.dist import Distribution |
| 12 from distutils.dist import DistributionMetadata | |
| 13 from subprocess import check_call as call | 13 from subprocess import check_call as call |
| 14 from StringIO import StringIO | 14 from StringIO import StringIO |
| 15 | 15 |
| 16 # TODO: | 16 # TODO: |
| 17 # Reconcile the difference between the keys (and values) between the different | 17 # Reconcile the difference between the keys (and values) between the different |
| 35 http://www.python.org/dev/peps/pep-0314/ | 35 http://www.python.org/dev/peps/pep-0314/ |
| 36 """ | 36 """ |
| 37 distribution = Distribution(attrs) | 37 distribution = Distribution(attrs) |
| 38 buffer = StringIO() | 38 buffer = StringIO() |
| 39 distribution.metadata.write_pkg_file(buffer) | 39 distribution.metadata.write_pkg_file(buffer) |
| 40 raise NotImplementedError("TODO") | 40 pkginfo_dist = pkginfo.Distribution() |
| 41 pkinfo_dist.parse(buffer.getvalue()) | |
| 42 newattrs = dict((i, getattr(pkginfo_dist, i)) for i in pkginfo_dist) | |
| 43 header_dict = dict((attr_name, header_name) | |
| 44 for header_name, attr_name, multiple in pkginfo_dist._getHeaderAttrs()) | |
| 45 info = dict((header_dict[key], value) for key, value in newattrs.items()) | |
| 46 | |
| 47 # XXX pkginfo says 'Home-Page' though the spec says Home-page | |
| 48 info.setdefault('Home-page', info['Home-Page']) | |
| 49 | |
| 50 return info | |
| 41 | 51 |
| 42 | 52 |
| 43 class PackageInfo(object): | 53 class PackageInfo(object): |
| 44 """abstract base class of package info""" | 54 """abstract base class of package info""" |
| 45 def __init__(self, path): | 55 def __init__(self, path): |
