[Distutils] (How) do setuptools/distribute/pip handle ircular ependencies?

Daniel Holth dholth at gmail.com
Tue Nov 13 20:36:08 CET 2012


Recall that multi-valued Provides-Dist is from the 8-year-old Metadata 1.2
and is unchanged in the new PEP.

When the PEP says "bundle" it means not a pip bundle, but two packages that
have been merged together. The example given is ZODB and transaction, which
used to be a single PyPI package and now are two.

If it had gone the other way, and the two packages became one, then the
merged package would Provides-Dist the obsolete name(s).

It may not be pretty, but it is not always possible to come up with a
perfect distribution factorization the first time around.

Provides-Dist (multiple use) <http://www.python.org/dev/peps/pep-0345/#id26>

Each entry contains a string naming a Distutils project which is contained
within this distribution. This field *must* include the project identified
in the Name field, followed by the version : Name (Version).

A distribution may provide additional names, e.g. to indicate that multiple
projects have been bundled together. For instance, source distributions of
the ZODB project have historically included the transaction project, which
is now available as a separate distribution. Installing such a source
distribution satisfies requirements for both ZODB and transaction.

A distribution may also provide a "virtual" project name, which does not
correspond to any separately-distributed project: such a name might be used
to indicate an abstract capability which could be supplied by one of
multiple projects. E.g., multiple projects might supply RDBMS bindings for
use by a given ORM: each project might declare that it provides ORM-bindings,
allowing other projects to depend only on having at most one of them
installed.

A version declaration may be supplied and must follow the rules described
in Version Specifiers<http://www.python.org/dev/peps/pep-0345/#version-specifiers>.
The distribution's version number will be implied if none is specified.

Examples:

Provides-Dist: OtherProject
Provides-Dist: AnotherProject (3.4)
Provides-Dist: virtual_package
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/distutils-sig/attachments/20121113/2055e1b1/attachment.html>


More information about the Distutils-SIG mailing list