# encoding: utf-8 __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 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='='): print char * 76 @check_display def print_status(package, status): initial_indent = "%22s: " % package indent = ' ' * 24 print fill(str(status), width=76, initial_indent=initial_indent, subsequent_indent=indent) @check_display def print_message(message): indent = ' ' * 24 + "* " print fill(str(message), width=76, initial_indent=indent, subsequent_indent=indent) @check_display def print_raw(section): print section #------------------------------------------------------------------------------- # 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: print_status('sphinx', "Not found (required for building documentation)") return False else: print_status('sphinx', sphinx.__version__) return True def check_for_pygments(): try: import pygments except ImportError: print_status('pygments', "Not found (required for syntax highlighting documentation)") return False else: print_status('pygments', pygments.__version__) return True def check_for_nose(): try: import nose except ImportError: print_status('nose', "Not found (required for running the test suite)") return False else: print_status('nose', nose.__version__) return True def check_for_pexpect(): try: import pexpect except ImportError: print_status("pexpect", "no (required for running standalone doctests)") return False else: print_status("pexpect", pexpect.__version__) return True def check_for_httplib2(): try: import httplib2 except ImportError: print_status("httplib2", "no (required for blocking http clients)") return False else: print_status("httplib2","yes") return True def check_for_sqlalchemy(): try: import sqlalchemy except ImportError: print_status("sqlalchemy", "no (required for the ipython1 notebook)") return False else: print_status("sqlalchemy","yes") return True def check_for_simplejson(): try: import simplejson except ImportError: print_status("simplejson", "no (required for the ipython1 notebook)") return False else: print_status("simplejson","yes") return True def check_for_pyzmq(): try: import zmq except ImportError: print_status('pyzmq', "no (required for qtconsole and parallel computing capabilities)") return False else: if zmq.__version__ < '2.1.4': print_status('pyzmq', "no (have %s, but require >= 2.1.4 for" " qtconsole and parallel computing capabilities)"%zmq.__version__) else: print_status("pyzmq", zmq.__version__) return True def check_for_readline(): try: import readline except ImportError: try: import pyreadline except ImportError: print_status('readline', "no (required for good interactive behavior)") return False else: print_status('readline', "yes pyreadline-"+pyreadline.release.version) return True else: print_status('readline', "yes") return True