On Tue, May 28, 2013 at 7:28 AM, Donald Stufft <don...@stufft.io> wrote: > On May 27, 2013, at 10:44 AM, Ronald Oussoren <ronaldousso...@mac.com> > wrote: > The versioning spec mentions that distribution tools may refuse to publish > distributions that pin the versions of dependencies. I understand why this > is needed, and agree in general, but have a usecase that I don't know how to > express without pinning. > > In particular, PyObjC consists of a number of distributions (pyobjc-core, > pyobjc-framework-Cocoa, ...) and an umbrella package (pyobjc) what depends > on the various distributions to make it easier to install all of PyObjC. The > umbrella package currently pins the versions of subpackages to ensure that > "pip install pyobjc==2.5.1" installs exactly that version of the entire > project. When I'd use the "compatible release" specifier I can no longer > easily ensure that users can install an exact version of the entire project, > other than by hacking the system: specify a compatible version with an > additional level that isn't used by the project (for example ~=2.5.2.0). > What is the correct way to create an umberella project without getting > yelled at by distribution tools? > > > It's unlikely PyPI will get more than a warning for ``==``, `is` comparisons > might be disallowed? Not sure.
I think Ronald's example of publishing metadistributions that pin particular versions of subdistributions is a valid one (I do exactly the same thing myself with RPM, it just didn't occur to me as a use case while updating the PEPs), so I need to reconsider some of the index server restrictions currently proposed in the PEPs. However, I'd also still like to not-so-gently steer users away from overly restrictive dependencies in the general case. This is a case where in a *technical* sense there's no difference between "We are making these distributions we maintain easier to install all at once" and "Our distribution needs a compatible version of this other distribution in order to work", but *semantically* they're two quite different operations. So, what do people think of the idea of a new top level "distributes" field? Syntax identical to "requires", but *semantically* distinguished in that version pinning in "distributes" would be not only allowed, but encouraged. A metapackage like PyObjC would then have just entries in the "distributes" field, and no direct dependencies of its own. Thoughts? Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Distutils-SIG maillist - Distutils-SIG@python.org http://mail.python.org/mailman/listinfo/distutils-sig