diff --git a/.gitignore b/.gitignore index 9f2290212..6221076cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,8 @@ build ./dist docs/dist -docs/build/* +docs/build +docs/_build docs/source/api/generated docs/gh-pages *.py[co] diff --git a/IPython/testing/iptest.py b/IPython/testing/iptest.py index ecbb64b75..56255a3c7 100644 --- a/IPython/testing/iptest.py +++ b/IPython/testing/iptest.py @@ -82,7 +82,7 @@ warnings.filterwarnings('ignore', 'wxPython/wxWidgets release number mismatch', # Logic for skipping doctests #----------------------------------------------------------------------------- -def test_for(mod): +def test_for(mod, min_version=None): """Test to see if mod is importable.""" try: __import__(mod) @@ -91,7 +91,10 @@ def test_for(mod): # importable. return False else: - return True + if min_version: + return sys.modules[mod].__version__ >= min_version + else: + return True # Global dict where we can store information on what we have and what we don't # have available at test run time @@ -101,6 +104,8 @@ have['curses'] = test_for('_curses') have['wx'] = test_for('wx') have['wx.aui'] = test_for('wx.aui') have['pexpect'] = test_for('pexpect') +have['zmq'] = test_for('zmq', '2.0.10') +have['pymongo'] = test_for('pymongo') #----------------------------------------------------------------------------- # Functions and classes @@ -179,6 +184,13 @@ def make_exclude(): exclusions.extend([ipjoin('scripts', 'irunner'), ipjoin('lib', 'irunner')]) + if not have['zmq']: + exclusions.append(ipjoin('zmq')) + exclusions.append(ipjoin('parallel')) + + if not have['pymongo']: + exclusions.append(ipjoin('parallel', 'controller', 'mongodb')) + # This is needed for the reg-exp to match on win32 in the ipdoctest plugin. if sys.platform == 'win32': exclusions = [s.replace('\\','\\\\') for s in exclusions] @@ -274,7 +286,10 @@ def make_runners(): # Packages to be tested via nose, that only depend on the stdlib nose_pkg_names = ['config', 'core', 'extensions', 'frontend', 'lib', 'scripts', 'testing', 'utils' ] - + + if have['zmq']: + nose_pkg_names.append('parallel') + # For debugging this code, only load quick stuff #nose_pkg_names = ['core', 'extensions'] # dbg diff --git a/setup.py b/setup.py index f6c7e99fc..ace1149b5 100755 --- a/setup.py +++ b/setup.py @@ -215,17 +215,19 @@ if 'setuptools' in sys.modules: 'ipython = IPython.frontend.terminal.ipapp:launch_new_instance', 'ipython-qtconsole = IPython.frontend.qt.console.ipythonqt:main', 'pycolor = IPython.utils.PyColorize:main', - # 'ipcontroller = IPython.kernel.ipcontrollerapp:launch_new_instance', - # 'ipengine = IPython.kernel.ipengineapp:launch_new_instance', - # 'ipcluster = IPython.kernel.ipclusterapp:launch_new_instance', + 'ipcontroller = IPython.parallel.apps.ipcontrollerapp:launch_new_instance', + 'ipengine = IPython.parallel.apps.ipengineapp:launch_new_instance', + 'iplogger = IPython.parallel.apps.iploggerapp:launch_new_instance', + 'ipcluster = IPython.parallel.apps.ipclusterapp:launch_new_instance', 'iptest = IPython.testing.iptest:main', 'irunner = IPython.lib.irunner:main' ] } setup_args['extras_require'] = dict( + parallel = 'pyzmq>=2.1.4', + zmq = 'pyzmq>=2.0.10.1', doc='Sphinx>=0.3', test='nose>=0.10.1', - security='pyOpenSSL>=0.6' ) else: # If we are running without setuptools, call this function which will diff --git a/setupbase.py b/setupbase.py index 51be1cdb6..6ebdfc098 100644 --- a/setupbase.py +++ b/setupbase.py @@ -119,6 +119,7 @@ def find_packages(): add_package(packages, 'external.pexpect') add_package(packages, 'external.pyparsing') add_package(packages, 'external.simplegeneric') + add_package(packages, 'external.ssh') add_package(packages, 'external.validate') add_package(packages, 'kernel') add_package(packages, 'frontend') @@ -126,6 +127,8 @@ def find_packages(): add_package(packages, 'frontend.qt.console', tests=True) add_package(packages, 'frontend.terminal', tests=True) add_package(packages, 'lib', tests=True) + add_package(packages, 'parallel', tests=True, scripts=True, + others=['apps','engine','client','controller']) add_package(packages, 'quarantine', tests=True) add_package(packages, 'scripts') add_package(packages, 'testing', tests=True) @@ -260,11 +263,13 @@ def find_scripts(): """ Find IPython's scripts. """ - # kernel_scripts = pjoin('IPython','kernel','scripts') + parallel_scripts = pjoin('IPython','parallel','scripts') main_scripts = pjoin('IPython','scripts') - scripts = [# pjoin(kernel_scripts, 'ipengine'), - # pjoin(kernel_scripts, 'ipcontroller'), - # pjoin(kernel_scripts, 'ipcluster'), + scripts = [ + pjoin(parallel_scripts, 'ipengine'), + pjoin(parallel_scripts, 'ipcontroller'), + pjoin(parallel_scripts, 'ipcluster'), + pjoin(parallel_scripts, 'iplogger'), pjoin(main_scripts, 'ipython'), pjoin(main_scripts, 'ipython-qtconsole'), pjoin(main_scripts, 'pycolor'), @@ -298,7 +303,8 @@ def check_for_dependencies(): from setupext.setupext import ( print_line, print_raw, print_status, check_for_sphinx, check_for_pygments, - check_for_nose, check_for_pexpect + check_for_nose, check_for_pexpect, + check_for_pyzmq ) print_line() print_raw("BUILDING IPYTHON") @@ -314,6 +320,7 @@ def check_for_dependencies(): check_for_pygments() check_for_nose() check_for_pexpect() + check_for_pyzmq() def record_commit_info(pkg_dir, build_cmd=build_py):