From 7574220c89f66e62f93aed8fbe12e45e0db27f46 Mon Sep 17 00:00:00 2001 From: Javier Sancho Date: Wed, 30 May 2018 10:17:43 +0200 Subject: [PATCH] Show multidimensional arrays as string arrays --- datasette_pytables/__init__.py | 2 ++ tests/fixtures.py | 3 +++ tests/test_api.py | 12 +++++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) 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 = [] -- 2.39.5