From: Javier Sancho Date: Wed, 30 May 2018 08:17:43 +0000 (+0200) Subject: Show multidimensional arrays as string arrays X-Git-Url: https://git.jsancho.org/?a=commitdiff_plain;h=7574220c89f66e62f93aed8fbe12e45e0db27f46;p=datasette-pytables.git Show multidimensional arrays as string arrays --- diff --git a/datasette_pytables/__init__.py b/datasette_pytables/__init__.py index 86f879c..80349a6 100644 --- a/datasette_pytables/__init__.py +++ b/datasette_pytables/__init__.py @@ -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) diff --git a/tests/fixtures.py b/tests/fixtures.py index bbca118..e845efe 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -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 diff --git a/tests/test_api.py b/tests/test_api.py index 97e07dc..14bfbfd 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -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 = []