##// END OF EJS Templates
Merge pull request #12410 from Carreau/nep29
Matthias Bussonnier -
r25876:bb015d48 merge
parent child Browse files
Show More
@@ -1,118 +1,123 b''
1 1 # http://travis-ci.org/#!/ipython/ipython
2 2 language: python
3 3 os: linux
4 4
5 5 addons:
6 6 apt:
7 7 packages:
8 8 - graphviz
9 9
10 10 python:
11 11 - 3.6
12 12
13 13 env:
14 14 global:
15 15 - PATH=$TRAVIS_BUILD_DIR/pandoc:$PATH
16 16
17 17 group: edge
18 18
19 19 before_install:
20 20 - |
21 21 # install Python on macOS
22 22 if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
23 23 env | sort
24 24 if ! which python$TRAVIS_PYTHON_VERSION; then
25 25 HOMEBREW_NO_AUTO_UPDATE=1 brew tap minrk/homebrew-python-frameworks
26 26 HOMEBREW_NO_AUTO_UPDATE=1 brew cask install python-framework-${TRAVIS_PYTHON_VERSION/./}
27 27 fi
28 28 python3 -m pip install virtualenv
29 29 python3 -m virtualenv -p $(which python$TRAVIS_PYTHON_VERSION) ~/travis-env
30 30 source ~/travis-env/bin/activate
31 31 fi
32 32 - python --version
33 33
34 34 install:
35 35 - pip install pip --upgrade
36 36 - pip install setuptools --upgrade
37 - if [[ "$TRAVIS_PYTHON_VERSION" == "3.6" ]]; then
38 echo "for the tiem being still test on 3.6";
39 sed -i bkp s/7/6/g setup.py;
40 git diff;
41 fi
37 42 - pip install -e file://$PWD#egg=ipython[test] --upgrade
38 43 - pip install trio curio --upgrade --upgrade-strategy eager
39 44 - pip install pytest 'matplotlib !=3.2.0' mypy
40 45 - pip install codecov check-manifest --upgrade
41 46 - pip install mypy
42 47 - |
43 48 if [[ "$MASTER_DEPENDENCIES" == "True" ]]; then
44 49 pip install git+https://github.com/ipython/traitlets#egg=traitlets --force
45 50 fi
46 51
47 52
48 53 script:
49 54 - check-manifest
50 55 - |
51 56 if [[ "$TRAVIS_PYTHON_VERSION" == "nightly" ]]; then
52 57 # on nightly fake parso known the grammar
53 58 cp /home/travis/virtualenv/python3.9-dev/lib/python3.9/site-packages/parso/python/grammar38.txt /home/travis/virtualenv/python3.9-dev/lib/python3.9/site-packages/parso/python/grammar39.txt
54 59 fi
55 60 - cd /tmp && iptest --coverage xml && cd -
56 61 - pytest IPython
57 62 - mypy IPython/terminal/ptutils.py
58 63 - mypy IPython/core/c*.py
59 64 # On the latest Python (on Linux) only, make sure that the docs build.
60 65 - |
61 66 if [[ "$TRAVIS_PYTHON_VERSION" == "3.7" ]] && [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
62 67 pip install -r docs/requirements.txt
63 68 python tools/fixup_whats_new_pr.py
64 69 make -C docs/ html SPHINXOPTS="-W"
65 70 fi
66 71
67 72 after_success:
68 73 - cp /tmp/ipy_coverage.xml ./
69 74 - cp /tmp/.coverage ./
70 75 - codecov
71 76
72 77 matrix:
73 78 include:
74 79 - arch: amd64
75 80 python: "3.7"
76 81 dist: xenial
77 82 - arch: amd64
78 83 python: "3.8"
79 84 dist: xenial
80 85 - arch: amd64
81 86 python: "nightly"
82 87 dist: xenial
83 88 - arch: arm64
84 89 python: "nightly"
85 90 dist: bionic
86 91 env: ARM64=True
87 92 - os: osx
88 93 language: generic
89 94 python: 3.6
90 95 env: TRAVIS_PYTHON_VERSION=3.6
91 96 - os: osx
92 97 language: generic
93 98 python: 3.7
94 99 env: TRAVIS_PYTHON_VERSION=3.7
95 100 - arch: amd64
96 101 python: "3.8"
97 102 env: MASTER_DEPENDENCIES=True
98 103 allow_failures:
99 104 - python: nightly
100 105
101 106 before_deploy:
102 107 - rm -rf dist/
103 108 - python setup.py sdist
104 109 - python setup.py bdist_wheel
105 110
106 111 deploy:
107 112 provider: releases
108 113 api_key:
109 114 secure: Y/Ae9tYs5aoBU8bDjN2YrwGG6tCbezj/h3Lcmtx8HQavSbBgXnhnZVRb2snOKD7auqnqjfT/7QMm4ZyKvaOEgyggGktKqEKYHC8KOZ7yp8I5/UMDtk6j9TnXpSqqBxPiud4MDV76SfRYEQiaDoG4tGGvSfPJ9KcNjKrNvSyyxns=
110 115 file: dist/*
111 116 file_glob: true
112 117 cleanup: false
113 118 on:
114 119 repo: ipython/ipython
115 120 all_branches: true # Backports are released from e.g. 5.x branch
116 121 tags: true
117 122 python: 3.6 # Any version should work, but we only need one
118 123 condition: $TRAVIS_OS_NAME = "linux"
@@ -1,261 +1,262 b''
1 1 #!/usr/bin/env python3
2 2 # -*- coding: utf-8 -*-
3 3 """Setup script for IPython.
4 4
5 5 Under Posix environments it works like a typical setup.py script.
6 6 Under Windows, the command sdist is not supported, since IPython
7 7 requires utilities which are not available under Windows."""
8 8
9 9 #-----------------------------------------------------------------------------
10 10 # Copyright (c) 2008-2011, IPython Development Team.
11 11 # Copyright (c) 2001-2007, Fernando Perez <fernando.perez@colorado.edu>
12 12 # Copyright (c) 2001, Janko Hauser <jhauser@zscout.de>
13 13 # Copyright (c) 2001, Nathaniel Gray <n8gray@caltech.edu>
14 14 #
15 15 # Distributed under the terms of the Modified BSD License.
16 16 #
17 17 # The full license is in the file COPYING.rst, distributed with this software.
18 18 #-----------------------------------------------------------------------------
19 19
20 20 import os
21 21 import sys
22 22
23 23 # **Python version check**
24 24 #
25 25 # This check is also made in IPython/__init__, don't forget to update both when
26 26 # changing Python version requirements.
27 if sys.version_info < (3, 6):
27 if sys.version_info < (3, 7):
28 28 pip_message = 'This may be due to an out of date pip. Make sure you have pip >= 9.0.1.'
29 29 try:
30 30 import pip
31 31 pip_version = tuple([int(x) for x in pip.__version__.split('.')[:3]])
32 32 if pip_version < (9, 0, 1) :
33 33 pip_message = 'Your pip version is out of date, please install pip >= 9.0.1. '\
34 34 'pip {} detected.'.format(pip.__version__)
35 35 else:
36 36 # pip is new enough - it must be something else
37 37 pip_message = ''
38 38 except Exception:
39 39 pass
40 40
41 41
42 42 error = """
43 IPython 7.10+ supports Python 3.6 and above, following NEP 29.
43 IPython 7.17+ supports Python 3.7 and above, following NEP 29.
44 44 When using Python 2.7, please install IPython 5.x LTS Long Term Support version.
45 45 Python 3.3 and 3.4 were supported up to IPython 6.x.
46 46 Python 3.5 was supported with IPython 7.0 to 7.9.
47 Python 3.6 was supported with IPython up to 7.16.
47 48
48 49 See IPython `README.rst` file for more information:
49 50
50 51 https://github.com/ipython/ipython/blob/master/README.rst
51 52
52 53 Python {py} detected.
53 54 {pip}
54 55 """.format(py=sys.version_info, pip=pip_message )
55 56
56 57 print(error, file=sys.stderr)
57 58 sys.exit(1)
58 59
59 60 # At least we're on the python version we need, move on.
60 61
61 62 # BEFORE importing distutils, remove MANIFEST. distutils doesn't properly
62 63 # update it when the contents of directories change.
63 64 if os.path.exists('MANIFEST'): os.remove('MANIFEST')
64 65
65 66 from distutils.core import setup
66 67
67 68 # Our own imports
68 69 from setupbase import target_update
69 70
70 71 from setupbase import (
71 72 setup_args,
72 73 find_packages,
73 74 find_package_data,
74 75 check_package_data_first,
75 76 find_entry_points,
76 77 build_scripts_entrypt,
77 78 find_data_files,
78 79 git_prebuild,
79 80 install_symlinked,
80 81 install_lib_symlink,
81 82 install_scripts_for_symlink,
82 83 unsymlink,
83 84 )
84 85
85 86 isfile = os.path.isfile
86 87 pjoin = os.path.join
87 88
88 89 #-------------------------------------------------------------------------------
89 90 # Handle OS specific things
90 91 #-------------------------------------------------------------------------------
91 92
92 93 if os.name in ('nt','dos'):
93 94 os_name = 'windows'
94 95 else:
95 96 os_name = os.name
96 97
97 98 # Under Windows, 'sdist' has not been supported. Now that the docs build with
98 99 # Sphinx it might work, but let's not turn it on until someone confirms that it
99 100 # actually works.
100 101 if os_name == 'windows' and 'sdist' in sys.argv:
101 102 print('The sdist command is not available under Windows. Exiting.')
102 103 sys.exit(1)
103 104
104 105
105 106 #-------------------------------------------------------------------------------
106 107 # Things related to the IPython documentation
107 108 #-------------------------------------------------------------------------------
108 109
109 110 # update the manuals when building a source dist
110 111 if len(sys.argv) >= 2 and sys.argv[1] in ('sdist','bdist_rpm'):
111 112
112 113 # List of things to be updated. Each entry is a triplet of args for
113 114 # target_update()
114 115 to_update = [
115 116 ('docs/man/ipython.1.gz',
116 117 ['docs/man/ipython.1'],
117 118 'cd docs/man && gzip -9c ipython.1 > ipython.1.gz'),
118 119 ]
119 120
120 121
121 122 [ target_update(*t) for t in to_update ]
122 123
123 124 #---------------------------------------------------------------------------
124 125 # Find all the packages, package data, and data_files
125 126 #---------------------------------------------------------------------------
126 127
127 128 packages = find_packages()
128 129 package_data = find_package_data()
129 130
130 131 data_files = find_data_files()
131 132
132 133 setup_args['packages'] = packages
133 134 setup_args['package_data'] = package_data
134 135 setup_args['data_files'] = data_files
135 136
136 137 #---------------------------------------------------------------------------
137 138 # custom distutils commands
138 139 #---------------------------------------------------------------------------
139 140 # imports here, so they are after setuptools import if there was one
140 141 from distutils.command.sdist import sdist
141 142
142 143 setup_args['cmdclass'] = {
143 144 'build_py': \
144 145 check_package_data_first(git_prebuild('IPython')),
145 146 'sdist' : git_prebuild('IPython', sdist),
146 147 'symlink': install_symlinked,
147 148 'install_lib_symlink': install_lib_symlink,
148 149 'install_scripts_sym': install_scripts_for_symlink,
149 150 'unsymlink': unsymlink,
150 151 }
151 152
152 153
153 154 #---------------------------------------------------------------------------
154 155 # Handle scripts, dependencies, and setuptools specific things
155 156 #---------------------------------------------------------------------------
156 157
157 158 # For some commands, use setuptools. Note that we do NOT list install here!
158 159 # If you want a setuptools-enhanced install, just run 'setupegg.py install'
159 160 needs_setuptools = {'develop', 'release', 'bdist_egg', 'bdist_rpm',
160 161 'bdist', 'bdist_dumb', 'bdist_wininst', 'bdist_wheel',
161 162 'egg_info', 'easy_install', 'upload', 'install_egg_info',
162 163 }
163 164
164 165 if len(needs_setuptools.intersection(sys.argv)) > 0:
165 166 import setuptools
166 167
167 168 # This dict is used for passing extra arguments that are setuptools
168 169 # specific to setup
169 170 setuptools_extra_args = {}
170 171
171 172 # setuptools requirements
172 173
173 174 extras_require = dict(
174 175 parallel = ['ipyparallel'],
175 176 qtconsole = ['qtconsole'],
176 177 doc = ['Sphinx>=1.3'],
177 178 test = ['nose>=0.10.1', 'requests', 'testpath', 'pygments', 'nbformat', 'ipykernel', 'numpy>=1.14'],
178 179 terminal = [],
179 180 kernel = ['ipykernel'],
180 181 nbformat = ['nbformat'],
181 182 notebook = ['notebook', 'ipywidgets'],
182 183 nbconvert = ['nbconvert'],
183 184 )
184 185
185 186 install_requires = [
186 187 'setuptools>=18.5',
187 188 'jedi>=0.16',
188 189 'decorator',
189 190 'pickleshare',
190 191 'traitlets>=4.2',
191 192 'prompt_toolkit>=2.0.0,<3.1.0,!=3.0.0,!=3.0.1',
192 193 'pygments',
193 194 'backcall',
194 195 'stack_data',
195 196 ]
196 197
197 198 # Platform-specific dependencies:
198 199 # This is the correct way to specify these,
199 200 # but requires pip >= 6. pip < 6 ignores these.
200 201
201 202 extras_require.update({
202 203 ':sys_platform != "win32"': ['pexpect'],
203 204 ':sys_platform == "darwin"': ['appnope'],
204 205 ':sys_platform == "win32"': ['colorama'],
205 206 })
206 207 # FIXME: re-specify above platform dependencies for pip < 6
207 208 # These would result in non-portable bdists.
208 209 if not any(arg.startswith('bdist') for arg in sys.argv):
209 210 if sys.platform == 'darwin':
210 211 install_requires.extend(['appnope'])
211 212
212 213 if not sys.platform.startswith('win'):
213 214 install_requires.append('pexpect')
214 215
215 216 # workaround pypa/setuptools#147, where setuptools misspells
216 217 # platform_python_implementation as python_implementation
217 218 if 'setuptools' in sys.modules:
218 219 for key in list(extras_require):
219 220 if 'platform_python_implementation' in key:
220 221 new_key = key.replace('platform_python_implementation', 'python_implementation')
221 222 extras_require[new_key] = extras_require.pop(key)
222 223
223 224 everything = set()
224 225 for key, deps in extras_require.items():
225 226 if ':' not in key:
226 227 everything.update(deps)
227 228 extras_require['all'] = list(sorted(everything))
228 229
229 230 if 'setuptools' in sys.modules:
230 setuptools_extra_args['python_requires'] = '>=3.6'
231 setuptools_extra_args['python_requires'] = '>=3.7'
231 232 setuptools_extra_args['zip_safe'] = False
232 233 setuptools_extra_args['entry_points'] = {
233 234 'console_scripts': find_entry_points(),
234 235 'pygments.lexers': [
235 236 'ipythonconsole = IPython.lib.lexers:IPythonConsoleLexer',
236 237 'ipython = IPython.lib.lexers:IPythonLexer',
237 238 'ipython3 = IPython.lib.lexers:IPython3Lexer',
238 239 ],
239 240 }
240 241 setup_args['extras_require'] = extras_require
241 242 setup_args['install_requires'] = install_requires
242 243
243 244 else:
244 245 # scripts has to be a non-empty list, or install_scripts isn't called
245 246 setup_args['scripts'] = [e.split('=')[0].strip() for e in find_entry_points()]
246 247
247 248 setup_args['cmdclass']['build_scripts'] = build_scripts_entrypt
248 249
249 250 #---------------------------------------------------------------------------
250 251 # Do the actual setup now
251 252 #---------------------------------------------------------------------------
252 253
253 254 setup_args.update(setuptools_extra_args)
254 255
255 256
256 257
257 258 def main():
258 259 setup(**setup_args)
259 260
260 261 if __name__ == '__main__':
261 262 main()
General Comments 0
You need to be logged in to leave comments. Login now