From 19a0fb83d08a29dd18e5280739f2f25c31f158d4 Mon Sep 17 00:00:00 2001
From: Joseph Weston <joseph.weston08@gmail.com>
Date: Fri, 18 Aug 2017 11:52:37 +0200
Subject: [PATCH] correct checks for ipyparallel clients

---
 adaptive/runner.py | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/adaptive/runner.py b/adaptive/runner.py
index 6fdef7e5..12455f67 100644
--- a/adaptive/runner.py
+++ b/adaptive/runner.py
@@ -84,10 +84,11 @@ class _AsyncExecutor:
 
 
 def _ensure_async_executor(executor, ioloop):
-    if isinstance(executor, concurrent.Executor):
-        pass
-    elif isinstance(executor, ipyparallel.Client):
+    if isinstance(executor, ipyparallel.Client):
         executor = executor.executor()
+    elif isinstance(executor, (concurrent.ProcessPoolExecutor,
+                               concurrent.ThreadPoolExecutor)):
+        pass
     elif executor is None:
         executor = concurrent.ProcessPoolExecutor()
     else:
@@ -102,10 +103,11 @@ def _get_executor_ncores(executor):
     if isinstance(executor, _AsyncExecutor):
         executor = executor.executor
 
-    if isinstance(executor, concurrent.Executor):
+    if isinstance(executor, ipyparallel.client.view.ViewExecutor):
+        return len(executor.view)
+    elif isinstance(executor, (concurrent.ProcessPoolExecutor,
+                               concurrent.ThreadPoolExecutor)):
         return executor._max_workers  # not public API!
-    elif isinstance(executor, ipyparallel.Client):
-        return len(executor)
     else:
         raise TypeError('Only concurrent.futures.Executors or ipyparallel '
                         'clients can be used.')
-- 
GitLab