##// END OF EJS Templates
Leak less files during test....
Leak less files during test. Tracks all created files and destroy them all during teardown. Otherwise multiple call to mktmp would leak previously unclosed files. This should really ideally be a context manager and be tracked better.

File last commit:

r24250:d0523f89
r24341:09e52292
Show More
release
96 lines | 2.4 KiB | text/plain | TextLexer
#!/usr/bin/env python3
"""IPython release script.
This should ONLY be run at real release time.
"""
from __future__ import print_function
import os
from glob import glob
from subprocess import call
import sys
from toollib import (get_ipdir, pjoin, cd, execfile, sh, archive,
sdists, archive_user, archive_dir, buildwheels)
from gh_api import post_download
# Get main ipython dir, this will raise if it doesn't pass some checks
ipdir = get_ipdir()
tooldir = pjoin(ipdir, 'tools')
distdir = pjoin(ipdir, 'dist')
# Where I keep static backups of each release
ipbackupdir = os.path.expanduser('~/ipython/backup')
if not os.path.exists(ipbackupdir):
os.makedirs(ipbackupdir)
# Start in main IPython dir
cd(ipdir)
# Load release info
version = None
execfile(pjoin('IPython','core','release.py'), globals())
# Build site addresses for file uploads
release_site = '%s/release/%s' % (archive, version)
backup_site = '%s/backup/' % archive
# Start actual release process
print()
print('Releasing IPython')
print('=================')
print()
print('Version:', version)
print()
print('Source IPython directory:', ipdir)
print()
# Perform local backup, go to tools dir to run it.
cd(tooldir)
if 'upload' in sys.argv:
cd(distdir)
# do not upload OS specific files like .DS_Store
to_upload = glob('*.whl')+glob('*.tar.gz')
for fname in to_upload:
# TODO: update to GitHub releases API
continue
print('uploading %s to GitHub' % fname)
desc = "IPython %s source distribution" % version
post_download("ipython/ipython", fname, description=desc)
# Make target dir if it doesn't exist
print('1. Uploading IPython to archive.ipython.org')
sh('ssh %s "mkdir -p %s/release/%s" ' % (archive_user, archive_dir, version))
sh('scp *.tar.gz *.whl %s' % release_site)
print('2. Uploading backup files...')
cd(ipbackupdir)
sh('scp `ls -1tr *tgz | tail -1` %s' % backup_site)
print('3. Uploading to PyPI using twine')
cd(distdir)
call(['twine', 'upload'] + to_upload)
else:
# Build, but don't upload
# Make backup tarball
sh('./make_tarball.py')
sh('mv ipython-*.tgz %s' % ipbackupdir)
# Build release files
sh('./build_release %s' % ipdir)
cd(ipdir)
# Upload all files
sh(sdists)
buildwheels()
print("`./release upload` to upload source distribution on PyPI and ipython archive")
sys.exit(0)