[Distutils] Colour this bikeshed: Name for setuptools fork
pje at telecommunity.com
Sun Jul 19 04:31:36 CEST 2009
At 01:05 AM 7/19/2009 +0200, Hanno Schlichting wrote:
>On Sat, Jul 18, 2009 at 9:50 PM, P.J. Eby<pje at telecommunity.com> wrote:
> > Also, this entire discussion may be moot if, as I'm currently understanding
> > it, this is simply a matter of other people doing maintenance and bug fixes
> > to the 0.6 branch... Â in which case there is a very strong
> possibility that
> > I'll just bless various versions of it as official 0.6 versions of
> > setuptools.
> > (One obstacle to this actually happening, though, is the part where they're
> > stripping out my release tools, like wikiup.cfg, version+version.dat, etc.,
> > as I would need to add these back in order to actually do a release.)
>In order to make it easier for you to bless things, I created a branch
>of our work, which very closely resembles the official setuptools 0.6
>branch, including the correct distribution name and including all your
>build and release tools.
>It's a "hg up -C setuptools-compatible-0.6" away after cloning the
>repo. It does need some more tweaks to version identifiers (is it 0.6
>or 0.6.0 or 0.6-final ...) and lacks the md5 checksums for release
>files, since these are obviously not produced yet.
>I'd be happy to produce the Windows binary installers for an official release.
Good to know. I'll take a look at it soon.
>I'm sure we do have some disagreements about how to evolve setuptools
>after the 0.6 branch.
Perhaps. But it occurs to me that there is something I can do to
help that in the long run. After giving it some thought today, it
seems that it would be a good idea to take the "good" (i.e.
relatively uncontroversial) parts of setuptools and split them out
into another package, which I am tentatively naming "Discovery".
Rather than a set of executable tools, it would just be a collection
of libraries to be called by package management tools, and other
Python code needing to discover packages either installed on the
system, on the package index, be notified when they're imported, etc. etc.
The package itself would look something like this:
discovery.resources -- basically pkg_resources under a different name
discovery.sandbox -- basically setuptools.sandbox, less distutils dependency
discovery.unpack -- setuptools.archive_util, less distutils dependency
discovery.downloads -- a hugely refactored version of parts of
setuptools.package_index, redesigned for pluggable extendibility
(e.g. to handle Sourceforge crap, checkouts from other revision
control systems, etc.)
discovery.install -- selected subroutines from easy_install,
refactored for narrow functionality and minimal coupling, combined
with PEP 376 support code
discovery.importing -- basically peak.util.imports under a different
name, but with a more modern/decorator-friendly API
discovery.plugins -- basically peak.util.plugins, refactored to drop
dependencies on other PEAK modules
Then, easy_install could be refactored to consist mostly of calls to
these other modules, along with whatever "legacy" logic needs to be
retained for compatibility reasons, and setuptools proper could
evolve towards just being build support, and become more pluggable generally.
It wouldn't be possible to switch setuptools to do this right away,
since there would remain the problem of bootstrapping the
installation of the discovery package prior to setuptools
installation. But setuptools' source distribution could perhaps
bundle a copy of discovery within itself, and the ez_setup.py script
could perhaps then be changed to download *discovery* first -- and
then ask discovery to download setuptools to a temporary location.
However, now that somebody else is effectively looking out for 0.6
maintenance, this lets me bump up the priority of working on 0.7, and
has given me ideas for how to get out from under the rest of the
"legacy" problems of setuptools, while also making reuse easier for
competing and/or complementary projects (such as buildout, pip, etc.)
More information about the Distutils-SIG