##// END OF EJS Templates
Statically type OInfo. (#13973)...
Statically type OInfo. (#13973) In view of working with #13860, some cleanup inspect to be properly typed, and using stricter datastructure. Instead of dict we now use dataclasses, this will make sure that fields type and access can be stricter and verified not only at runtime, but by mypy

File last commit:

r27381:8491abce
r28166:29b451fc merge
Show More
release
85 lines | 2.0 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,
archive_user, archive_dir)
# 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')
# 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', '--verbose'] + to_upload)
else:
# Build, but don't upload
# Make backup tarball
sh('python make_tarball.py')
sh('mv ipython-*.tgz %s' % ipbackupdir)
# Build release files
sh('./build_release')
cd(ipdir)
print("`./release upload` to upload source distribution on PyPI and ipython archive")
sys.exit(0)