[Distutils] Proposal for Distribute 0.7

ssteinerX@gmail.com ssteinerx at gmail.com
Fri Oct 16 03:39:01 CEST 2009

Warning: 3 part message.

It's all related so I decided to bundle it rather than starting  
several new threads on the already over-burdened distutils list.

On Oct 15, 2009, at 5:06 PM, Tarek Ziadé wrote:

> Now, ssteinerX, what do you mean exactly by shared foundation ?

Well, at the moment, setuptools 6.10rc and Distribute 0.6.6 share only  
one identical directory; tests. (tests in the root directory which  
only contains shlib_test which I'm not even sure is used by anyone)

Many other files are only different by a few lines, some additions to  
Distribute are just for Python 3 compatibility.

Some of the changes are only in the way message text is distributed  
over a couple of lines (the kind of clean-up people naturally do as  
they're assimilating a product they didn't write), some extra  
comments, sometimes the wording (Couldn't vs. Could not) of an error  

Some of the files (e.g. setuptools/archive_util.py) are only different  
by a bit of whitespace.

In taking a closer look, the two products are still very close to each  
other but it would take a careful person a solid few days or a week to  
merge them back together into a single code-base, if that would even  
be desirable.

I had thought going forward would be to take some of the utility type  
functionality that is unlikely to change (archive_util.py for example)  
and move them to a shared utility library.

This is probably unrealistic given the dynamics of the current  
situation, but it was a nice idea ;-).




While I was in there, I did a little actual work.  Not much, but now I  
feel like I've made a contribution, however small... ;-).   Does this  
make me a "contributor?"

This is from the archive pulled down by:

	# wget http://pypi.python.org/packages/source/d/distribute/distribute-0.6.6.tar.gz

While I was pawing around, I noticed that, in distribute-0.6.6/ 
setuptools/command/alias.py, line 12, the <> operator is used.

Since that's not allowed in Python 3.x, the test suite must not cover  
this 'cause Python 3 would barf.

So...I whipped out my command line and:

	find . -name "*.py" -exec grep "<>" {} \; -print

I get:

(~/src/distribute-0.6.6/setuptools)# find . -name "*.py" -exec grep  
"<>" {} \; -print
     if arg.split()<>[arg]:
         if self.remove and len(self.args)<>1:
             if safe is None or bool(safe)<>flag:
         if self.verbose<>self.distribution.verbose:
                 if k<>'target_version':
             if len(parts)<>2 or not name.endswith('.pth'):
             str(version)<>"unknown" and version >=  
                     if p<>package and not p.startswith(pfx)
                     if p<>package and not p.startswith(pfx)
                     if p.name<>package and not p.name.startswith(pfx)
             if cs.hexdigest()<>info[4:]:

Those aren't going to fly in Python 3 and can be safely removed for  
2.x as well.  A patch would be silly, just go fix it ;-).




Part of the problem we'd have with merging the two products to form a  
single codebase is that there are some differences between the ways  
the tickets have been closed in the two products.

Distribute's fixes are committed against the bugs in its tracker so  
it's pretty easy to see what change fixed what.  Not so much in  
setuptools where many things are in one big mega-commit.

>> The latest commit you've made in setuptools package is still  
>> cryptic to us because
>> it fixes many things at once.
> Sorry about that, but it was pretty much the only way to get it done  
> in a weekend, without the overheads of separate commit messages, doc  
> changes, and backporting killing me.  Those overheads were the main  
> reason I wasn't making changes more often; I dreaded the amount of  
> work involved.
> Also, as it happened, I was able to fix multiple problems with  
> single changes this way.

I don't mean to take another pot-shot a PJE, but the facts is the  
facts and this shows clearly why the product with the open development  
process should be the one supported by the community.

> Also, I've made it pretty plain for a long time that if Ian Bicking  
> or Jim Fulton were ever willing to take it over, I'd hand it *all*  
> over -- 0.7 as well as 0.6 -- and happily retire from the  
> distribution tools business.

I'd love to see this be the last release of setuptools so if you're  
the aforementioned "Ian" or "Jim", could you please, please, very  
temporarily, accept the burden of "setuptools maintainer" so it can  
die an elegant, compatible, controlled, peaceful death, being merged  
into and supplanted by Distribute after long and good service to the  
Python world?

We really need a good, modern, open, constantly evolving packaging  
system to keep Python competitive.



More information about the Distutils-SIG mailing list