At 12:54 PM 2/10/2007 -0500, Jim Fulton wrote:
On Feb 9, 2007, at 6:49 PM, Phillip J. Eby wrote:
At 05:26 PM 2/9/2007 -0500, Jim Fulton wrote:
ValueError: ("Couldn't find", Requirement.parse ('archetypes.kss==dev'))
I finally found some time to look into this.
Buildout uses setuptools APIs. It uses a PackageIndex to download the distribution and this actually works. It then uses an environment best_match method to get a distribution object and best_match returns None. If I remove the ==dev from the requirement, then best_match is able to find the distribution. This happens because apparently no distributions match a requirement for the "dev" version. Should I view this as a bug in setuptools?
The normal usage is "==dev,>=realver" where 'realver' is the real version you want.
Is using just ==dev is correct usage? It works with easy_install.
Yes, if you put it on the command line. No, if it's a dependency declared in an egg; it'll have the same problem as you're having with buildout.
I think the user's desire is to get the most recent version. It's not clear to me that they'd know what other revision to specify.
Actually, the reason to use an ==dev (or other similar tag) in a dependency is to allow it to pick up a package that's *only* available via SVN.
(Note: Buildout uses PackageIndex to locate and fetch distributions. It then installs distributions itself. if the distribution is already an egg, then this is straightforward. Otherwise, buildout invokes easy_install to do the installation. It can't get a return value from easy_install, so it uses an Environment to find the egg that easy_install created.)
Note that easy_install can be told to --record what files it installs, so you could build a WorkingSet or Environment from that list.