If you include grouparchy.setuptools in your setup_requires, then you can use the upload_svn command with your setup script to upload releases to a subversion repository.
>>> import os, sys >>> argv = sys.argv >>> sys.argv = [ ... script, 'sdist', 'upload_svn', '--svn-repository='+repo] >>> execfile(script) running sdist running egg_info creating foo.egg-info writing foo.egg-info/PKG-INFO writing top-level names to foo.egg-info/top_level.txt writing dependency_links to foo.egg-info/dependency_links.txt writing manifest file 'foo.egg-info/SOURCES.txt' writing manifest file 'foo.egg-info/SOURCES.txt' creating foo-0.0.0 creating foo-0.0.0/foo creating foo-0.0.0/foo.egg-info making hard links in foo-0.0.0... hard linking README.txt -> foo-0.0.0 hard linking setup.py -> foo-0.0.0 hard linking foo/__init__.py -> foo-0.0.0/foo hard linking foo.egg-info/PKG-INFO -> foo-0.0.0/foo.egg-info hard linking foo.egg-info/SOURCES.txt -> foo-0.0.0/foo.egg-info hard linking foo.egg-info/dependency_links.txt -> foo-0.0.0/foo.egg-info hard linking foo.egg-info/top_level.txt -> foo-0.0.0/foo.egg-info Writing foo-0.0.0/setup.cfg creating dist tar -cf dist/foo-0.0.0.tar foo-0.0.0 gzip -f9 dist/foo-0.0.0.tar removing 'foo-0.0.0' (and everything under it) running upload_svn Submitting dist/foo-0.0.0.tar.gz to .../repo svn import dist/foo-0.0.0.tar.gz .../repo/foo-0.0.0.tar.gz -m "distribution for foo" Adding (bin) dist/foo-0.0.0.tar.gz <BLANKLINE> Committed revision 1. <BLANKLINE>>>> import subprocess >>> p = subprocess.Popen( ... ['svn ls %s' % repo], shell=True, ... stderr=subprocess.STDOUT, stdout=subprocess.PIPE) >>> p.wait() 0 >>> print p.stdout.read(), foo-0.0.0.tar.gz
svn errors should be reported up. Try to upload the same release to demonstrate.
>>> sys.argv = [ ... script, '-q', 'sdist', 'upload_svn', ... '--svn-repository='+repo] >>> try: execfile(script) ... except Exception, value: print value, svn: Path '.../repo/foo-0.0.0.tar.gz' already exists
cleanup.
>>> sys.argv = argv