]> gitweb.michael.orlitzky.com - sage.d.git/blobdiff - mjo/eja/eja_utils.py
eja: handle tuples in parent algebras rather than in subclasses.
[sage.d.git] / mjo / eja / eja_utils.py
index b6e0c7d38eaf1d9114973bba4f5ad0674cb8a8a2..29edf5b8a339b073e1426a12a98a6143e7af5069 100644 (file)
@@ -2,6 +2,22 @@ from sage.functions.other import sqrt
 from sage.matrix.constructor import matrix
 from sage.modules.free_module_element import vector
 
+def _all2list(x):
+    r"""
+    Flatten a vector, matrix, or cartesian product of those things
+    into a long list.
+    """
+    if hasattr(x, 'list'):
+        # Easy case...
+        return x.list()
+    if hasattr(x, 'cartesian_factors'):
+        # If it's a formal cartesian product space element, then
+        # we also know what to do...
+        return sum(( x_i.list() for x_i in x ), [])
+    else:
+        # But what if it's a tuple or something else?
+        return sum( map(_all2list,x), [] )
+
 def _mat2vec(m):
         return vector(m.base_ring(), m.list())