From e488664efedce4b51f4d7f025f46d51f34440327 Mon Sep 17 00:00:00 2001 From: Friedrich Lindenberg Date: Mon, 19 Aug 2013 22:45:05 +0200 Subject: [PATCH] Support generation of static JSONP. --- dataset/freeze/app.py | 7 +++++-- dataset/freeze/format/fjson.py | 7 ++++++- setup.py | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/dataset/freeze/app.py b/dataset/freeze/app.py index 4dc607d..949c71f 100644 --- a/dataset/freeze/app.py +++ b/dataset/freeze/app.py @@ -20,7 +20,8 @@ parser.add_argument('--db', default=None, def freeze(result, format='csv', filename='freeze.csv', - prefix='.', meta={}, indent=2, mode='list', wrap=True, **kw): + prefix='.', meta={}, indent=2, mode='list', + wrap=True, callback=None, **kw): """ Perform a data export of a given result set. This is a very flexible exporter, allowing for various output formats, metadata @@ -54,7 +55,8 @@ def freeze(result, format='csv', filename='freeze.csv', *json* A JSON file containing a list of dictionaries for each row - in the table. + in the table. If a ``callback`` is given, JSON with padding + (JSONP) will be generated. *tabson* Tabson is a smart combination of the space-efficiency of the @@ -67,6 +69,7 @@ def freeze(result, format='csv', filename='freeze.csv', 'prefix': prefix, 'meta': meta, 'indent': indent, + 'callback': callback, 'mode': mode, 'wrap': wrap }) diff --git a/dataset/freeze/format/fjson.py b/dataset/freeze/format/fjson.py index f0fc8ad..70c49a9 100644 --- a/dataset/freeze/format/fjson.py +++ b/dataset/freeze/format/fjson.py @@ -37,8 +37,13 @@ class JSONSerializer(Serializer): for path, result in self.buckets.items(): result = self.wrap(result) fh = open(path, 'wb') - json.dump(result, fh, + data = json.dumps(result, cls=JSONEncoder, indent=self.export.get_int('indent')) + if self.export.get('callback'): + data = "%s && %s(%s);" % (self.export.get('callback'), + self.export.get('callback'), + data) + fh.write(data) fh.close() diff --git a/setup.py b/setup.py index 4203242..9d11f87 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup, find_packages setup( name='dataset', - version='0.3.10', + version='0.3.11', description="Toolkit for Python-based data processing.", long_description="", classifiers=[