Show multidimensional arrays as string arrays
authorJavier Sancho <jsf@jsancho.org>
Wed, 30 May 2018 08:17:43 +0000 (10:17 +0200)
committerJavier Sancho <jsf@jsancho.org>
Wed, 30 May 2018 08:17:43 +0000 (10:17 +0200)
datasette_pytables/__init__.py
tests/fixtures.py
tests/test_api.py

index 86f879c..80349a6 100644 (file)
@@ -213,6 +213,8 @@ class Connection:
                             value = table_row
                             if type(value) is bytes:
                                 value = value.decode('utf-8')
+                            elif not type(value) in (int, float, complex):
+                                value = str(value)
                             row['value'] = value
                     rows.append(row)
 
index bbca118..e845efe 100644 (file)
@@ -1,4 +1,5 @@
 from datasette.app import Datasette
+import numpy as np
 import os
 from tables import *
 import tempfile
@@ -37,6 +38,8 @@ def populate_file(filepath):
 
     array2 = h5file.create_array(group1, 'array2', [x for x in range(10000)])
 
+    multiarray = h5file.create_array(group2, 'multi', np.arange(1000).reshape(10, 50, 2))
+
     for table in (table1, table2):
         row = table.row
 
index 97e07dc..14bfbfd 100644 (file)
@@ -10,7 +10,7 @@ def test_homepage(app_client):
     assert response.json.keys() == {'test_tables': 0}.keys()
     d = response.json['test_tables']
     assert d['name'] == 'test_tables'
-    assert d['tables_count'] == 4
+    assert d['tables_count'] == 5
 
 def test_database_page(app_client):
     response = app_client.get('/test_tables.json', gather_request=False)
@@ -43,6 +43,15 @@ def test_database_page(app_client):
         'hidden': False,
         'fts_table': None,
         'foreign_keys': {'incoming': [], 'outgoing': []}
+    }, {
+        'name': '/group2/multi',
+        'columns': [],
+        'primary_keys': [],
+        'count': 10,
+        'label_column': None,
+        'hidden': False,
+        'fts_table': None,
+        'foreign_keys': {'incoming': [], 'outgoing': []}
     }, {
         'name': '/group2/table2',
         'columns': ['identity', 'idnumber', 'speed'],
@@ -229,6 +238,7 @@ def test_table_shape_invalid(app_client):
     ('/test_tables/%2Farray1.json', 2, 1),
     ('/test_tables/%2Farray1.json?_size=1', 2, 2),
     ('/test_tables/%2Fgroup1%2Farray2.json?_size=1000', 10000, 10),
+    ('/test_tables/%2Fgroup2%2Fmulti.json?_size=5', 10, 2),
 ])
 def test_paginate_tables_and_arrays(app_client, path, expected_rows, expected_pages):
     fetched = []