From 5f0916cfdfb25379b5f070a4d2e2d2ad221f222f Mon Sep 17 00:00:00 2001
From: Isuru Fernando <isuruf@gmail.com>
Date: Sun, 17 Nov 2019 22:09:11 -0600
Subject: [PATCH] Use cartesian_product from pytools

---
 requirements.txt             |  1 +
 sumpy/expansion/multipole.py | 12 +-----------
 2 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/requirements.txt b/requirements.txt
index 8e48bc1c..8bd95658 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -6,3 +6,4 @@ git+https://github.com/inducer/pyopencl
 git+https://gitlab.tiker.net/inducer/boxtree
 git+https://github.com/inducer/loopy
 git+https://github.com/inducer/pyfmmlib
+git+https://github.com/inducer/pytools
diff --git a/sumpy/expansion/multipole.py b/sumpy/expansion/multipole.py
index 7bcd0ed5..4f6ffe3e 100644
--- a/sumpy/expansion/multipole.py
+++ b/sumpy/expansion/multipole.py
@@ -29,6 +29,7 @@ from sumpy.symbolic import vector_xreplace
 from sumpy.expansion import (
     ExpansionBase, VolumeTaylorExpansion, LaplaceConformingVolumeTaylorExpansion,
     HelmholtzConformingVolumeTaylorExpansion)
+from pytools import cartesian_product
 
 import logging
 logger = logging.getLogger(__name__)
@@ -47,17 +48,6 @@ class MultipoleExpansionBase(ExpansionBase):
     pass
 
 
-def cartesian_product(*args):
-    if len(args) == 1:
-        for arg in args[0]:
-            yield (arg,)
-        return
-    first = args[:-1]
-    for prod in cartesian_product(*first):
-        for i in args[-1]:
-            yield prod + (i,)
-
-
 # {{{ volume taylor
 
 class VolumeTaylorMultipoleExpansionBase(MultipoleExpansionBase):
-- 
GitLab