-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Sridhar Ratnakumar wrote:
On 2010-03-19, at 2:27 PM, Tarek Ziadé wrote:
You can't do it, distutils will automatically set 1.0 or 1.1 depending on the options you have used. (and not 1.2) Re-reading the current distutils (1) code, I realize that it'll switch to 1.1 *only* if you have used
On Fri, Mar 19, 2010 at 5:22 PM, Tarek Ziadé <ziade.tarek@gmail.com> wrote: [..] provides, requires or obsolete, so it's partially implemented.
Ok. As a result of this, PKG-INFO that contains the "Classifiers" fields still has 1.0 as Metadata-Version. Consequently, http://pypi.python.org/pypi/pkginfo fails to read extra metadata fields. If Tres is reading this, I had to do the following hack as a workaroud:
from pkginfo import Distribution
class PkgInfoFile(Distribution): # Not all packages' PKG-INFO define the proper metadata # For eg., modern-package-template uses the Classifiers field and yet # uses 1.0 as the metadata version (Classifiers is only defined in 1.1) metadata_version = '1.2' # not all PKG-INFO file have proper metadata version
If you know you want to parse '1.2' fields regardless of the version in the PKG-INFO file, then set the 'metadata_version' attribute on the Distribution instance before calling 'parse'. E.g.:: from pkginfo import Distribution d = Distribution() d.metadata_version = '1.2' d.parse(open('/path/to/PKG-INFO').read()) The concrete classes (SDist, BDist, Develop, Installed) all take 'metadata_version' as a constructor argument, just to provide for this case. I'm not sure why you would define a PkgInfo class, actually: it needs to have a 'read' method, at least, to allow the usual operation ('extractMetadata') to work. I think your usecase is probably covered by either the Installed or Develop classes. If you do have a usedase, the public bzr branch is here: lp:~tseaver/pkginfo/trunk I'll be glad to review and merge a patch which adds your support, and make a new release.
The new class is much cleaner in the implementation, and so is the register command for PyPI.
Notice that we have almost finished the implementation of PEP 345 on PyPI side so we will soon be able to push PEP 345 fields over there.
Wasn't PEP 345 fully implemented for distutils1? Ah, I see that it is still "Draft" mode.
Can I use distutils2 to parse PKG-INFO (as a replacement for the `pkginfo` project)? Will it read all the fields despite the inaccurate Metadata-Version field?
I haven't looked at 'distutils2' yet. Tres. - -- =================================================================== Tres Seaver +1 540-429-0999 tseaver@palladion.com Palladion Software "Excellence by Design" http://palladion.com -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iEUEARECAAYFAkuk+XIACgkQ+gerLs4ltQ71HACfQI8VKM7jKsaQ+jyPHoY/e7vF /jMAl0Gls9B1+kFFojjcOpRwOpFufCs= =ZQgL -----END PGP SIGNATURE-----