On Wed, Nov 21, 2012 at 1:20 PM, Nick Coghlan <ncoghlan@gmail.com> wrote:
On Wed, Nov 21, 2012 at 1:10 PM, PJ Eby <pje@telecommunity.com> wrote:
Conversely, if you have already installed a package that says it "Obsoletes" another package, this does *not* tell you that the obsolete package shouldn't still be installed!  A replacement project doesn't necessarily share the same API, and may exist in a different package namespace altogether.

Then that's a bug in the metadata of the project misusing "Obsoletes", and should be reported as such. If the new package is not a drop-in replacement, then it has no business claiming to obsolete the other package.

I think one of the big reasons this kind of use is rare in the Python community is that project name changes are almost always accompanied by *package* name changes, and as soon as you change the package name, you're changing the public API, and thus it is no longer appropriate to use Provides or Obsoletes, as the renamed project is no longer a drop-in replacement for the original.
 
I realised that my comments above are more about the appropriate use of "Provides", rather than "Obsoletes". For a practically useful "Obsoletes", I think I'm inclined to agree with you, as "Obsoleted-By" provides a way for a maintainer to explicitly declare that a project is no longer receiving updates, and users should migrate to the replacement project if they want to continue to receive fixes and improvements. The current version of "Obsoletes" is, as Daniel describes, really only useful as documentation.

Cheers,
Nick.

--
Nick Coghlan   |   ncoghlan@gmail.com   |   Brisbane, Australia