[Distutils] Weird PyPI Behavior
Phillip J. Eby
pje at telecommunity.com
Thu Jun 29 22:42:06 CEST 2006
At 06:19 AM 6/29/2006 -0400, Jim Fulton wrote:
>1. If I'm going to edit setup.cfg, I might as well edit setup.py
Note that you needn't edit anything if you use the --tag-build option, e.g.:
python setup.py egg_info --tag-build=snap3 register sdist bdist_egg upload
Assuming that setup.cfg normally contains:
and you're not using tag-svn-revision by default.
In a future version of setuptools (maybe 0.6c1), there'll also be a command
line option to turn *off* --tag-svn-revision.
>2. A reason I want to automate this is a feat that I'll forget to
> or setup.cfg and overrite existing releases (or fail to do an
> realizing it because the existing release doesn't get overwritten.
>Another issue is that I see us moving toward lots of fairly fine-grained
>packages and I want to keep the ceremony pretty low.
Yes, I once forgot to do this for setuptools itself, which is why I want
options to remove the tags, then I can just add those notes to my release
However, I also have an automated tool to do version edits across many
files in a project. A simple ZConfig-based file describes what version
numbers appear in what formats in what files, and is made executable via a
#! line that runs a Python program that accepts various version-changing
commands. I can run "./version incr build" to bump from 0.6a1 to 0.6a2,
for example, or './version incr minor' to bump from 0.6 to 0.7. The tool
then edits the relevant .py and .txt files, including setup.py itself.
Here's the 'version' script for setuptools; it might give you some ideas
for making a similar tool for Zope projects. You'll notice that it also
edits my release.sh script, so that it knows what files it will be
uploading to various servers...
#!/usr/local/bin/invoke /usr/local/bin/c6peak version-config
# This is a PEAK 'version' tool configuration file, that's
# also executable. PJE uses it to bump version numbers in
# the various parts of the project without having to edit them
# by hand. The current version is stored in the version.dat
# These are not the droids you're looking for. You can go on
# about your business...
part status choice alpha beta "release candidate" final
part date timestamp
trailer remap status "a%(build)s" "b%(build)s" "c%(build)s"
dot-maint optional build ".%(build)s"
full "%(major)s.%(minor)s %(status)s %(build)s"
Match 'VERSION = "%(short)s"'
Match "__version__ = '%(short)s'"
More information about the Distutils-SIG