-
Notifications
You must be signed in to change notification settings - Fork 0
Usecases
Use case interaction will happen with a script supplied with pkgmeta called pypkg.
I like pip more than any other distribute tool for python. Pip does its best, not exactly perfect, but nothing has got it right yet. Pip uses the basic process of collect all the ingredients before attempting to start cooking the results. In other words it downloads the distribution source, verifies the the distributions are compatible with one another and only then starts installing the distributions. But wouldn't it be nice if we didn't have to download the distribution source in order to determine if what we have is going to be compatible?
That's where this package will hopefully fill a hole. This will provide the library on which python distribution repository information can be built. This should technically provide a metadata snapshot of pypi in the end. So one deliverable might be a repository of metadata.
$ pypkg update Updating local Python distribution metadata... Checking pypi (pypi.python.org/metadata)................. Updating local with pypi updates.. Checking plone (dists.plone.org/metadata)...... Updating local with plone updates. Update complete. 22 New distributions | 54 updated distributions $ pypkg show wsgi Package not found... [exitcode 1] $ pypkg show wsgiref Name: wsgiref Version: 0.1.2 ... X-From-Source: http://pypi.python.org/metadata X-Stable: source-suggested X-Download: http://pypi.python.org/packages/source/w/wsgiref/wsgiref-0.1.2.zip ... $ pypkg upgrade <not sure what this output should look like yet>
Note: This issue may be related to https://bitbucket.org/ianb/pip/issue/119 which in turn is related to http://bugs.python.org/issue8927.
Let's say the case is this both soapbubble and soapbar provide a standardized API for SOAP (if such a thing exists ;). soapbubble describes itself a very light weight, while soapbar advertises itself as optimized and full featured. Both these packages provide soap. So if my washcloth service depends on soap, which one of these two packages will be acquired? The answer at this point in time is NONE.
I blame SetupTools for this issue, because Distutils has the Provides statement in it's metadata version. SetupTools blatantly ignores the option, but adds a separate requirements field. O.o
Let's try this example with washcloth:
$ pypkg install washcloth ... washcloth depends on soap, which is provided by 2 packages: 1) soapbar 2) soapbubble Select a number to designate which distribution to install (1): ...
Currently, when we have a conflict error we tell our tool to resolve it. This means that it will upgrade/downgrade the distribution and any of it's dependencies. Wouldn't it be nice to know what is going to be upgrade/downgraded before it happens?