[Distutils] Setuptools projects with '-' in their names (was Re: some kind of problem with setuptools 0.6a9)
Phillip J. Eby
pje at telecommunity.com
Sat Dec 31 06:30:17 CET 2005
At 11:45 AM 12/31/2005 +0800, Jeff Pitman wrote:
>There is a standard regular expression that can be used to split out N-V
>which is a pretty common thing in deb/rpm. (ie. python-foo). I use the
>following in some py scripts to manage these pairings for my rpm repo:
>'(?i)(.*)-([^-]*)-(([^-]*)\.([^-]*)\.%s)(.*)' Which is N-V-R.dist.repo.ext
>The form that you might want would be: '(.*)-([^-]*)' Name-Version This
>would allow Name to have -. Obviously, - cannot be used in Version. Also,
>two side notes, 1) it's kind of annoying that package names interchange
>between `-' and `_', one in the file name of the archive and one used in
>the extracted directory name. 2) I've also see the use of `_' in
>versioning, such as json.py. I also highly discourage that practice. -- -jeff
The format used by setuptools condenses non-alphanumeric runs to a single
'-' in the project's actual name and version; these are then transposed to
a '_' in filenames, with '-' to separate name parts. The canonical form is
'-', but the .egg-info directory format previously didn't transpose it to
'_'. This caused a problem when support for versioned .egg-info was added
to support system packages. I didn't realize that the setup-directory
.egg-info wasn't being translated. Anyway, this is fixed now in the SVN
version; all of the other places in setuptools that worked with '-'/'_'
filenames were using the same (correct) code to do the processing. The
relevant .egg-info code, however, was different, because it needed to *not*
include the version number, so it couldn't use the standard dist.egg_name()
method to generate a properly escaped filename including the version,
Python version, etc.
More information about the Distutils-SIG
mailing list