##// END OF EJS Templates
remove another py2 only test
remove another py2 only test

File last commit:

r22959:7851f8a3
r22962:c05c1799
Show More
setup.py
297 lines | 10.2 KiB | text/x-python | PythonLexer
Fernando Perez
Fix setup.py script to be executable (other tools expect this)
r4924 #!/usr/bin/env python
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 # -*- coding: utf-8 -*-
"""Setup script for IPython.
Under Posix environments it works like a typical setup.py script.
Under Windows, the command sdist is not supported, since IPython
requires utilities which are not available under Windows."""
#-----------------------------------------------------------------------------
# Copyright (c) 2008-2011, IPython Development Team.
# Copyright (c) 2001-2007, Fernando Perez <fernando.perez@colorado.edu>
# Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
# Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
#
# Distributed under the terms of the Modified BSD License.
#
Jonathan Frederic
s/COPYING.txt/COPYING.rst
r15990 # The full license is in the file COPYING.rst, distributed with this software.
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 #-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Minimal Python version sanity check
#-----------------------------------------------------------------------------
from __future__ import print_function
Fernando Perez
Inform user at install time of minimal python requirements if not met....
r2493
import sys
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 # This check is also made in IPython/__init__, don't forget to update both when
# changing Python version requirements.
Matthias Bussonnier
Improve our error messages for non compatibility.
r22823 if sys.version_info < (3,3):
error = """
IPython 6.0+ does not support Python 2.6, 2.7, 3.0, 3.1, or 3.2.
When using Python 2.7, please install IPython 5.x LTS Long Term Support version.
Beginning with IPython 6.0, Python 3.3 and above is required.
See IPython `README.rst` file for more information:
https://github.com/ipython/ipython/blob/master/README.rst
"""
MinRK
update version-check message in setup.py and IPython.__init__...
r12473 print(error, file=sys.stderr)
sys.exit(1)
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829
# At least we're on the python version we need, move on.
#-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------
# Stdlib imports
import os
from glob import glob
# BEFORE importing distutils, remove MANIFEST. distutils doesn't properly
# update it when the contents of directories change.
if os.path.exists('MANIFEST'): os.remove('MANIFEST')
from distutils.core import setup
# Our own imports
from setupbase import target_update
from setupbase import (
setup_args,
find_packages,
find_package_data,
MinRK
run check_package_data as part of build_py...
r15165 check_package_data_first,
Thomas Kluyver
Rework setup to allow installing on Python 2 and 3....
r13452 find_entry_points,
build_scripts_entrypt,
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 find_data_files,
MinRK
ensure submodules exist prior to doing anything...
r10484 git_prebuild,
Thomas Kluyver
Rework setup to allow installing on Python 2 and 3....
r13452 install_symlinked,
install_lib_symlink,
install_scripts_for_symlink,
Thomas Kluyver
Add 'unsymlink command to remove the symlink
r13862 unsymlink,
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 )
isfile = os.path.isfile
pjoin = os.path.join
#-------------------------------------------------------------------------------
# Handle OS specific things
#-------------------------------------------------------------------------------
MinRK
don't give up on weird os names...
r10087 if os.name in ('nt','dos'):
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 os_name = 'windows'
Ville M. Vainio
more crlf
r1033 else:
MinRK
don't give up on weird os names...
r10087 os_name = os.name
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829
# Under Windows, 'sdist' has not been supported. Now that the docs build with
# Sphinx it might work, but let's not turn it on until someone confirms that it
# actually works.
if os_name == 'windows' and 'sdist' in sys.argv:
print('The sdist command is not available under Windows. Exiting.')
sys.exit(1)
MinRK
ensure submodules exist prior to doing anything...
r10484
#-------------------------------------------------------------------------------
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 # Things related to the IPython documentation
#-------------------------------------------------------------------------------
# update the manuals when building a source dist
if len(sys.argv) >= 2 and sys.argv[1] in ('sdist','bdist_rpm'):
# List of things to be updated. Each entry is a triplet of args for
# target_update()
to_update = [
('docs/man/ipython.1.gz',
['docs/man/ipython.1'],
'cd docs/man && gzip -9c ipython.1 > ipython.1.gz'),
]
[ target_update(*t) for t in to_update ]
#---------------------------------------------------------------------------
# Find all the packages, package data, and data_files
#---------------------------------------------------------------------------
packages = find_packages()
package_data = find_package_data()
MinRK
only validate package_data when it might be used...
r15114
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 data_files = find_data_files()
setup_args['packages'] = packages
setup_args['package_data'] = package_data
setup_args['data_files'] = data_files
#---------------------------------------------------------------------------
MinRK
record sysinfo in sdist...
r7794 # custom distutils commands
MinRK
enable uploading wininst to PyPI with tools/release_windows.py...
r7792 #---------------------------------------------------------------------------
MinRK
record sysinfo in sdist...
r7794 # imports here, so they are after setuptools import if there was one
from distutils.command.sdist import sdist
from distutils.command.upload import upload
MinRK
enable uploading wininst to PyPI with tools/release_windows.py...
r7792
class UploadWindowsInstallers(upload):
Christoph Gohlke
Improve Windows start menu shortcuts
r8814
MinRK
enable uploading wininst to PyPI with tools/release_windows.py...
r7792 description = "Upload Windows installers to PyPI (only used from tools/release_windows.py)"
user_options = upload.user_options + [
('files=', 'f', 'exe file (or glob) to upload')
]
def initialize_options(self):
upload.initialize_options(self)
meta = self.distribution.metadata
base = '{name}-{version}'.format(
name=meta.get_name(),
version=meta.get_version()
)
self.files = os.path.join('dist', '%s.*.exe' % base)
Christoph Gohlke
Improve Windows start menu shortcuts
r8814
MinRK
enable uploading wininst to PyPI with tools/release_windows.py...
r7792 def run(self):
for dist_file in glob(self.files):
self.upload_file('bdist_wininst', 'any', dist_file)
MinRK
record sysinfo in sdist...
r7794 setup_args['cmdclass'] = {
Min RK
remove notebook-specific parts of setup, git-hooks
r21249 'build_py': \
check_package_data_first(git_prebuild('IPython')),
'sdist' : git_prebuild('IPython', sdist),
MinRK
record sysinfo in sdist...
r7794 'upload_wininst' : UploadWindowsInstallers,
Thomas Kluyver
Rework setup to allow installing on Python 2 and 3....
r13452 'symlink': install_symlinked,
'install_lib_symlink': install_lib_symlink,
'install_scripts_sym': install_scripts_for_symlink,
Thomas Kluyver
Add 'unsymlink command to remove the symlink
r13862 'unsymlink': unsymlink,
MinRK
record sysinfo in sdist...
r7794 }
MinRK
enable uploading wininst to PyPI with tools/release_windows.py...
r7792
Min RK
disable install from master...
r21036
MinRK
enable uploading wininst to PyPI with tools/release_windows.py...
r7792 #---------------------------------------------------------------------------
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 # Handle scripts, dependencies, and setuptools specific things
#---------------------------------------------------------------------------
# For some commands, use setuptools. Note that we do NOT list install here!
# If you want a setuptools-enhanced install, just run 'setupegg.py install'
needs_setuptools = set(('develop', 'release', 'bdist_egg', 'bdist_rpm',
MinRK
always construct requirements
r15030 'bdist', 'bdist_dumb', 'bdist_wininst', 'bdist_wheel',
'egg_info', 'easy_install', 'upload', 'install_egg_info',
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 ))
if len(needs_setuptools.intersection(sys.argv)) > 0:
import setuptools
# This dict is used for passing extra arguments that are setuptools
# specific to setup
setuptools_extra_args = {}
MinRK
always construct requirements
r15030 # setuptools requirements
extras_require = dict(
Min RK
ipython_parallel is now ipyparallel
r21326 parallel = ['ipyparallel'],
Min RK
jupyter_qtconsole is now qtconsole
r21338 qtconsole = ['qtconsole'],
Min RK
use napoleon instead of numpydoc
r21711 doc = ['Sphinx>=1.3'],
Matthias Bussonnier
Make numpy a test dependency....
r22434 test = ['nose>=0.10.1', 'requests', 'testpath', 'pygments', 'nbformat', 'ipykernel', 'numpy'],
MinRK
add ipython[terminal] dependency group...
r16386 terminal = [],
Min RK
ipython_kernel is now ipykernel
r21337 kernel = ['ipykernel'],
Min RK
jupyter_nbformat is now nbformat
r21345 nbformat = ['nbformat'],
Min RK
ipython[notebook] should depend on ipywidgets
r21743 notebook = ['notebook', 'ipywidgets'],
Min RK
jupyter_nbconvert is now nbconvert...
r21339 nbconvert = ['nbconvert'],
MinRK
always construct requirements
r15030 )
Matthias Bussonnier
Make a few test non-optional....
r22379
MinRK
remove path from external
r20811 install_requires = [
Min RK
missing comma in setuptools requirement
r22035 'setuptools>=18.5',
MinRK
remove decorator from external
r20813 'decorator',
Min RK
remove pickleshare from external
r20844 'pickleshare',
MinRK
remove simplegeneric from external...
r20816 'simplegeneric>0.8',
Matthias Bussonnier
Require recent enough traitlets...
r22305 'traitlets>=4.2',
Matthias Bussonnier
Bump minimal PTK to 1.0.3...
r22572 'prompt_toolkit>=1.0.3,<2.0.0',
Thomas Kluyver
Add explicit dependency on pygments...
r22126 'pygments',
MinRK
remove path from external
r20811 ]
MinRK
add ipython[terminal] dependency group...
r16386
Min RK
update platform-specific dependencies...
r21372 # Platform-specific dependencies:
# This is the correct way to specify these,
# but requires pip >= 6. pip < 6 ignores these.
Min RK
workaround setuptools misspelling of platform_python_implementation...
r21659
Min RK
update platform-specific dependencies...
r21372 extras_require.update({
Min RK
only use backports.shutil_get_terminal_size on Python 2...
r22266 ':python_version == "2.7"': ['backports.shutil_get_terminal_size'],
Min RK
use pathlib for utils.text.paths...
r22249 ':python_version == "2.7" or python_version == "3.3"': ['pathlib2'],
Min RK
update platform-specific dependencies...
r21372 ':sys_platform != "win32"': ['pexpect'],
Min RK
only require gnureadline on CPython...
r21652 ':sys_platform == "darwin"': ['appnope'],
Thomas Kluyver
Don't require win_unicode_console on Python 3.6...
r22867 ':sys_platform == "win32"': ['colorama'],
':sys_platform == "win32" and python_version < "3.6"': ['win_unicode_console>=0.5'],
Min RK
update platform-specific dependencies...
r21372 'test:python_version == "2.7"': ['mock'],
})
# FIXME: re-specify above platform dependencies for pip < 6
# These would result in non-portable bdists.
if not any(arg.startswith('bdist') for arg in sys.argv):
if sys.version_info < (3, 3):
extras_require['test'].append('mock')
if sys.platform == 'darwin':
Min RK
only require gnureadline on CPython...
r21652 install_requires.extend(['appnope'])
Matthias Bussonnier
Remove readline related code. Pass 1
r22628
if not sys.platform.startswith('win'):
Min RK
update platform-specific dependencies...
r21372 install_requires.append('pexpect')
klonuo
Add WUC version requirement in setup.py
r22591
Min RK
workaround setuptools misspelling of platform_python_implementation...
r21659 # workaround pypa/setuptools#147, where setuptools misspells
# platform_python_implementation as python_implementation
if 'setuptools' in sys.modules:
for key in list(extras_require):
if 'platform_python_implementation' in key:
new_key = key.replace('platform_python_implementation', 'python_implementation')
extras_require[new_key] = extras_require.pop(key)
cgohlke
Remove PyReadline as a install requirement on Windows
r16244
Min RK
calculate 'all' dependency set after finishing the rest...
r20256 everything = set()
Min RK
don't include platform-specific dependencies in ipython[all]
r21644 for key, deps in extras_require.items():
if ':' not in key:
everything.update(deps)
Min RK
calculate 'all' dependency set after finishing the rest...
r20256 extras_require['all'] = everything
MinRK
always construct requirements
r15030
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 if 'setuptools' in sys.modules:
Thomas Kluyver
More changes to indicate Python 3 requirement
r22803 setuptools_extra_args['python_requires'] = '>=3.3'
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 setuptools_extra_args['zip_safe'] = False
Lev Abalkin
Closes #7558: Added pygments entry points for ipython lexers.
r20117 setuptools_extra_args['entry_points'] = {
'console_scripts': find_entry_points(),
'pygments.lexers': [
Thomas Kluyver
Move IPython lexers module to lib...
r20625 'ipythonconsole = IPython.lib.lexers:IPythonConsoleLexer',
'ipython = IPython.lib.lexers:IPythonLexer',
'ipython3 = IPython.lib.lexers:IPython3Lexer',
Lev Abalkin
Closes #7558: Added pygments entry points for ipython lexers.
r20117 ],
}
MinRK
always construct requirements
r15030 setup_args['extras_require'] = extras_require
requires = setup_args['install_requires'] = install_requires
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829
# Script to be run by the windows binary installer after the default setup
# routine, to add shortcuts and similar windows-only things. Windows
# post-install scripts MUST reside in the scripts/ dir, otherwise distutils
# doesn't find them.
if 'bdist_wininst' in sys.argv:
if len(sys.argv) > 2 and \
('sdist' in sys.argv or 'bdist_rpm' in sys.argv):
Matthias Bussonnier
Some code cleanup in javascript and python...
r19739 print("ERROR: bdist_wininst must be run alone. Exiting.", file=sys.stderr)
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 sys.exit(1)
Christoph Gohlke
Improve Windows start menu shortcuts
r8814 setup_args['data_files'].append(
['Scripts', ('scripts/ipython.ico', 'scripts/ipython_nb.ico')])
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 setup_args['scripts'] = [pjoin('scripts','ipython_win_post_install.py')]
setup_args['options'] = {"bdist_wininst":
{"install_script":
"ipython_win_post_install.py"}}
Christoph Gohlke
Improve Windows start menu shortcuts
r8814
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 else:
Thomas Kluyver
Rework setup to allow installing on Python 2 and 3....
r13452 # scripts has to be a non-empty list, or install_scripts isn't called
setup_args['scripts'] = [e.split('=')[0].strip() for e in find_entry_points()]
setup_args['cmdclass']['build_scripts'] = build_scripts_entrypt
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829
#---------------------------------------------------------------------------
# Do the actual setup now
#---------------------------------------------------------------------------
setup_args.update(setuptools_extra_args)
Matthias Bussonnier
Add release instructions for IPython....
r21986
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 def main():
setup(**setup_args)
Fernando Perez
Move cleanup to main setup.py, where it belongs....
r2460
Thomas Kluyver
Remove separate setup.py file for Python 3.
r5829 if __name__ == '__main__':
main()