setupext.py
162 lines
| 4.7 KiB
| text/x-python
|
PythonLexer
/ setupext / setupext.py
Brian E Granger
|
r1237 | # encoding: utf-8 | ||
Thomas Kluyver
|
r5828 | from __future__ import print_function | ||
Brian E Granger
|
r1237 | |||
__docformat__ = "restructuredtext en" | ||||
#------------------------------------------------------------------------------- | ||||
# Copyright (C) 2008 The IPython Development Team | ||||
# | ||||
# Distributed under the terms of the BSD License. The full license is in | ||||
# the file COPYING, distributed as part of this software. | ||||
#------------------------------------------------------------------------------- | ||||
#------------------------------------------------------------------------------- | ||||
# Imports | ||||
#------------------------------------------------------------------------------- | ||||
import sys, os | ||||
from textwrap import fill | ||||
display_status=True | ||||
MinRK
|
r3744 | def check_display(f): | ||
"""decorator to allow display methods to be muted by mod.display_status""" | ||||
def maybe_display(*args, **kwargs): | ||||
if display_status: | ||||
return f(*args, **kwargs) | ||||
return maybe_display | ||||
@check_display | ||||
def print_line(char='='): | ||||
Thomas Kluyver
|
r5828 | print(char * 76) | ||
MinRK
|
r3744 | |||
@check_display | ||||
def print_status(package, status): | ||||
initial_indent = "%22s: " % package | ||||
indent = ' ' * 24 | ||||
Thomas Kluyver
|
r5828 | print(fill(str(status), width=76, | ||
MinRK
|
r3744 | initial_indent=initial_indent, | ||
Thomas Kluyver
|
r5828 | subsequent_indent=indent)) | ||
MinRK
|
r3744 | |||
@check_display | ||||
def print_message(message): | ||||
indent = ' ' * 24 + "* " | ||||
Thomas Kluyver
|
r5828 | print(fill(str(message), width=76, | ||
MinRK
|
r3744 | initial_indent=indent, | ||
Thomas Kluyver
|
r5828 | subsequent_indent=indent)) | ||
MinRK
|
r3744 | |||
@check_display | ||||
def print_raw(section): | ||||
Thomas Kluyver
|
r5828 | print(section) | ||
Brian E Granger
|
r1237 | |||
#------------------------------------------------------------------------------- | ||||
# Tests for specific packages | ||||
#------------------------------------------------------------------------------- | ||||
def check_for_ipython(): | ||||
try: | ||||
import IPython | ||||
except ImportError: | ||||
print_status("IPython", "Not found") | ||||
return False | ||||
else: | ||||
print_status("IPython", IPython.__version__) | ||||
return True | ||||
def check_for_sphinx(): | ||||
try: | ||||
import sphinx | ||||
except ImportError: | ||||
Brian E. Granger
|
r11090 | print_status('sphinx', "Not found (required for docs and nbconvert)") | ||
Brian E Granger
|
r1237 | return False | ||
else: | ||||
Bernardo B. Marques
|
r4872 | print_status('sphinx', sphinx.__version__) | ||
Brian E Granger
|
r1237 | return True | ||
def check_for_pygments(): | ||||
try: | ||||
import pygments | ||||
except ImportError: | ||||
Brian E. Granger
|
r11090 | print_status('pygments', "Not found (required for docs and nbconvert)") | ||
Brian E Granger
|
r1237 | return False | ||
else: | ||||
print_status('pygments', pygments.__version__) | ||||
return True | ||||
Brian E. Granger
|
r11090 | def check_for_jinja2(): | ||
Brian E Granger
|
r1237 | try: | ||
Brian E. Granger
|
r11090 | import jinja2 | ||
Brian E Granger
|
r1237 | except ImportError: | ||
Brian E. Granger
|
r11090 | print_status('jinja2', "Not found (required for notebook and nbconvert)") | ||
Brian E Granger
|
r1237 | return False | ||
else: | ||||
Brian E. Granger
|
r11090 | print_status('jinja2', jinja2.__version__) | ||
Brian E Granger
|
r1237 | return True | ||
Brian E. Granger
|
r11090 | def check_for_nose(): | ||
Brian E Granger
|
r1237 | try: | ||
Brian E. Granger
|
r11090 | import nose | ||
Brian E Granger
|
r1237 | except ImportError: | ||
Brian E. Granger
|
r11090 | print_status('nose', "Not found (required for running the test suite)") | ||
Brian E Granger
|
r1237 | return False | ||
else: | ||||
Brian E. Granger
|
r11090 | print_status('nose', nose.__version__) | ||
Brian E Granger
|
r1237 | return True | ||
Brian E. Granger
|
r11090 | def check_for_pexpect(): | ||
Brian E Granger
|
r1237 | try: | ||
Brian E. Granger
|
r11090 | import pexpect | ||
Brian E Granger
|
r1237 | except ImportError: | ||
Brian E. Granger
|
r11090 | print_status("pexpect", "no (required for running standalone doctests)") | ||
Brian E Granger
|
r1237 | return False | ||
else: | ||||
Brian E. Granger
|
r11090 | print_status("pexpect", pexpect.__version__) | ||
Brian E Granger
|
r1237 | return True | ||
MinRK
|
r3634 | def check_for_pyzmq(): | ||
try: | ||||
import zmq | ||||
except ImportError: | ||||
MinRK
|
r5245 | print_status('pyzmq', "no (required for qtconsole, notebook, and parallel computing capabilities)") | ||
MinRK
|
r3634 | return False | ||
else: | ||||
MinRK
|
r5245 | # pyzmq 2.1.10 adds pyzmq_version_info funtion for returning | ||
# version as a tuple | ||||
MinRK
|
r9336 | if hasattr(zmq, 'pyzmq_version_info') and zmq.pyzmq_version_info() >= (2,1,11): | ||
MinRK
|
r5245 | print_status("pyzmq", zmq.__version__) | ||
return True | ||||
MinRK
|
r3634 | else: | ||
MinRK
|
r9336 | print_status('pyzmq', "no (have %s, but require >= 2.1.11 for" | ||
" qtconsole, notebook, and parallel computing capabilities)" % zmq.__version__) | ||||
return False | ||||
MinRK
|
r3634 | |||
Paul Ivanov
|
r12000 | def check_for_tornado(): | ||
try: | ||||
import tornado | ||||
except ImportError: | ||||
print_status('tornado', "no (required for notebook)") | ||||
return False | ||||
else: | ||||
print_status('tornado', tornado.version) | ||||
return True | ||||
MinRK
|
r3699 | def check_for_readline(): | ||
MinRK
|
r7526 | from distutils.version import LooseVersion | ||
MinRK
|
r3699 | try: | ||
import readline | ||||
except ImportError: | ||||
try: | ||||
import pyreadline | ||||
MinRK
|
r7526 | vs = pyreadline.release.version | ||
except (ImportError, AttributeError): | ||||
MinRK
|
r3699 | print_status('readline', "no (required for good interactive behavior)") | ||
return False | ||||
MinRK
|
r7526 | if LooseVersion(vs).version >= [1,7,1]: | ||
print_status('readline', "yes pyreadline-" + vs) | ||||
MinRK
|
r3699 | return True | ||
MinRK
|
r7526 | else: | ||
print_status('readline', "no pyreadline-%s < 1.7.1" % vs) | ||||
return False | ||||
MinRK
|
r3699 | else: | ||
print_status('readline', "yes") | ||||
return True | ||||