def test_to_json_stat_value(self): """ Test pyjstat to_json_stat() custom value column""" results = pyjstat.from_json_stat(self.sample_dataset, value='measure') json_data = json.loads(pyjstat.to_json_stat(results, value='measure'), object_pairs_hook=OrderedDict) self.assertTrue(json_data[0]["dataset1"]["measure"][0] == 4729)
def test_to_json_stat_types(self): """ Test pyjstat to_json_stat() output types""" results = pyjstat.from_json_stat(self.oecd_datasets) json_data = json.loads(pyjstat.to_json_stat(results), object_pairs_hook=OrderedDict) self.assertTrue(json_data[0]["dataset1"]["dimension"] ["OECD countries, EU15 and total"]["category"]["index"] ["Spain"] == 28) self.assertTrue( type(json_data[0]["dataset1"]["dimension"] ["OECD countries, EU15 and total"]["category"]["index"] ["Spain"]) is int) self.assertTrue(json_data[0]["dataset1"]["dimension"] ["OECD countries, EU15 and total"]["category"]["label"] ["France"] == "France") self.assertTrue( type( str(json_data[0]["dataset1"]["dimension"] ["OECD countries, EU15 and total"]["category"]["label"] ["France"])) is str) self.assertTrue(json_data[0]["dataset1"]["dimension"]["2003-2014"] ["category"]["index"]["2005"] == 2) self.assertTrue(json_data[0]["dataset1"]["dimension"]["2003-2014"] ["category"]["label"]["2005"] == "2005") self.assertTrue( type(json_data[0]["dataset1"]["dimension"]["2003-2014"]["category"] ["index"]["2005"]) is int) self.assertTrue( type( str(json_data[0]["dataset1"]["dimension"]["2003-2014"] ["category"]["label"]["2005"])) is str)
def test_convert_zeroes_not_null(self): """Test pyjstat to_json_stat zero conversion.""" results = pyjstat.from_json_stat(self.sweden_dataset) json_data = json.loads(pyjstat.to_json_stat(results, output='dict'), object_pairs_hook=OrderedDict) self.assertTrue(self.sweden_dataset['dataset']['value'][0] == json_data['dataset1']['value'][0])
def test_to_json_stat_types(self): """ Test pyjstat to_json_stat() output types""" results = pyjstat.from_json_stat(self.oecd_datasets) json_data = json.loads(pyjstat.to_json_stat(results), object_pairs_hook=OrderedDict) self.assertTrue(json_data[0]["dataset1"]["dimension"] ["OECD countries,EU15 and total"]["category"]["index"] ["Spain"] == 28) self.assertTrue(type(json_data[0]["dataset1"]["dimension"] ["OECD countries,EU15 and total"]["category"]["index"] ["Spain"]) is int) self.assertTrue(json_data[0]["dataset1"]["dimension"] ["OECD countries,EU15 and total"]["category"]["label"] ["France"] == "France") self.assertTrue(type(json_data[0]["dataset1"]["dimension"] ["OECD countries,EU15 and total"]["category"]["label"] ["France"]) is unicode) self.assertTrue(json_data[0]["dataset1"]["dimension"] ["2003-2014"]["category"]["index"] ["2005"] == 2) self.assertTrue(json_data[0]["dataset1"]["dimension"] ["2003-2014"]["category"]["label"] ["2005"] == "2005") self.assertTrue(type(json_data[0]["dataset1"]["dimension"] ["2003-2014"]["category"]["index"] ["2005"]) is int) self.assertTrue(type(json_data[0]["dataset1"]["dimension"] ["2003-2014"]["category"]["label"] ["2005"]) is unicode)
def test_convert_zeroes_not_null(self): """ Test pyjstat to_json_stat zero conversion""" results = pyjstat.from_json_stat(self.sweden_dataset) json_data = json.loads(pyjstat.to_json_stat(results, output='dict'), object_pairs_hook=OrderedDict) self.assertTrue(self.sweden_dataset['dataset']['value'][0] == json_data['dataset1']['value'][0])
def test_ons_index_sort_bug(self): """ Test pyjstat from_json_stat dimension sorting""" results = pyjstat.from_json_stat(self.ons_dataset) json_data = json.loads(pyjstat.to_json_stat(results, output='dict'), object_pairs_hook=OrderedDict) self.assertTrue( self.ons_dataset['A02Level']['dimension']['CL_0000667']['category'] ['index']['CI_0018938'] == json_data['dataset1']['dimension'] ['Age']['category']['index']['16-17'])
def test_ons_index_sort_bug_index(self): """Test from_json_stat dimension sorting indexes instead of labels.""" results = pyjstat.from_json_stat(self.ons_dataset, naming='id') json_data = json.loads(pyjstat.to_json_stat(results, output='dict'), object_pairs_hook=OrderedDict) self.assertTrue( self.ons_dataset['A02Level']['dimension']['CL_0000667']['category'] ['index']['CI_0018938'] == json_data['dataset1']['dimension'] ['CL_0000667']['category']['index']['CI_0018938'])
def test_uk_dataset(self): """ Test pyjstat using a different ONS dataset""" results = pyjstat.from_json_stat(self.uk_dataset) json_data = json.loads(pyjstat.to_json_stat(results, output="dict"), object_pairs_hook=OrderedDict) self.assertTrue(len(results[0].columns) == 5) self.assertTrue(len(results[0].index) == 3) self.assertTrue(self.uk_dataset["QS104EW"]["value"]["0"] == json_data["dataset1"]["value"][0]) self.assertTrue(self.uk_dataset["QS104EW"]["value"]["2"] == json_data["dataset1"]["value"][2])
def test_ons_index_sort_bug(self): """ Test pyjstat from_json_stat dimension sorting""" results = pyjstat.from_json_stat(self.ons_dataset) json_data = json.loads(pyjstat.to_json_stat(results, output='dict'), object_pairs_hook=OrderedDict) self.assertTrue(self.ons_dataset['A02Level']['dimension']['CL_0000667'] ['category']['index']['CI_0018938'] == json_data['dataset1']['dimension']['Age']['category'] ['index']['16-17'])
def test_to_json_stat(self): """ Test pyjstat to_json_stat()""" results = pyjstat.from_json_stat(self.oecd_datasets) json_data = json.loads(pyjstat.to_json_stat(results), object_pairs_hook=OrderedDict) self.assertTrue(json_data[0]["dataset1"]["dimension"]["indicator"]["label"] == "indicator") self.assertTrue(json_data[0]["dataset1"]["dimension"]["size"][1] == 36) self.assertTrue(json_data[1]["dataset2"]["dimension"]["id"][2] == "age group") self.assertTrue(json_data[0]["dataset1"]["value"][-1], results[0][-1:]["value"]) results[0].columns = ["a", "a", "b", "value"] self.assertRaises(ValueError, pyjstat.to_json_stat, results)
def test_uk_dataset(self): """Test pyjstat using a different ONS dataset.""" results = pyjstat.from_json_stat(self.uk_dataset) json_data = json.loads(pyjstat.to_json_stat(results, output='dict'), object_pairs_hook=OrderedDict) self.assertTrue(len(results[0].columns) == 5) self.assertTrue(len(results[0].index) == 3) self.assertTrue(self.uk_dataset['QS104EW']['value']['0'] == json_data['dataset1']['value'][0]) self.assertTrue(self.uk_dataset['QS104EW']['value']['2'] == json_data['dataset1']['value'][2])
def test_us_labor_dataset(self): """ Test pyjstat using a us labor dataset of class dataset""" results = pyjstat.from_json_stat(self.uslabor_dataset) json_data = json.loads(pyjstat.to_json_stat(results, output="dict"), object_pairs_hook=OrderedDict) self.assertTrue(self.uslabor_dataset["class"] == "dataset") self.assertTrue(len(results[0].columns) == 4) self.assertTrue(len(results[0].index) == 12880) self.assertTrue(self.uslabor_dataset["value"][0] == json_data["dataset1"]["value"][0]) self.assertTrue(self.uslabor_dataset["value"][547] == json_data["dataset1"]["value"][547]) self.assertTrue(self.uslabor_dataset["value"][-1] == json_data["dataset1"]["value"][-1])
def test_class_dataset(self): """ Test pyjstat using class dataset from v1.02""" results = pyjstat.from_json_stat(self.galicia_dataset) json_data = json.loads(pyjstat.to_json_stat(results, output="dict"), object_pairs_hook=OrderedDict) self.assertTrue(self.galicia_dataset["class"] == "dataset") self.assertTrue(len(results[0].columns) == 7) self.assertTrue(len(results[0].index) == 3960) self.assertTrue(self.galicia_dataset["value"][0] == json_data["dataset1"]["value"][0]) self.assertTrue(self.galicia_dataset["value"][547] == json_data["dataset1"]["value"][547]) self.assertTrue(self.galicia_dataset["value"][-1] == json_data["dataset1"]["value"][-1])
def test_from_to_json_stat_no_loads(self): """ Test pyjstat nested from-to json_stat using list of dicts as input """ results = pyjstat.from_json_stat(self.oecd_datasets) json_data = json.loads(pyjstat.to_json_stat(results), object_pairs_hook=OrderedDict) data_df = pyjstat.from_json_stat(json_data) line_thirty = ["unemployment rate", "Belgium", "2009", 7.891892855] dimensions = pyjstat.get_dimensions(self.oecd_datasets["oecd"], "label") self.assertTrue(len(data_df) == 2) self.assertTrue(set(data_df[0].columns.values[:-1]) == set(dimensions[1])) self.assertTrue(set(data_df[0].iloc[30].values) == set(line_thirty))
def test_uk_dataset(self): """ Test pyjstat using a different ONS dataset""" results = pyjstat.from_json_stat(self.uk_dataset) json_data = json.loads(pyjstat.to_json_stat(results, output='dict'), object_pairs_hook=OrderedDict) self.assertTrue(len(results[0].columns) == 5) self.assertTrue(len(results[0].index) == 3) self.assertTrue(self.uk_dataset['QS104EW']['value']['0'] == json_data['dataset1']['value'][0]) self.assertTrue(self.uk_dataset['QS104EW']['value']['2'] == json_data['dataset1']['value'][2])
def test_from_to_json_stat_no_loads(self): """Test pyjstat nested from-to json_stat w list of dicts as input.""" results = pyjstat.from_json_stat(self.oecd_datasets) json_data = json.loads(pyjstat.to_json_stat(results), object_pairs_hook=OrderedDict) data_df = pyjstat.from_json_stat(json_data) line_thirty = ['unemployment rate', 'Belgium', '2009', 7.891892855] dimensions = pyjstat.get_dimensions(self.oecd_datasets['oecd'], 'label') self.assertTrue(len(data_df) == 2) self.assertTrue( set(data_df[0].columns.values[:-1]) == set(dimensions[1])) self.assertTrue(set(data_df[0].iloc[30].values) == set(line_thirty))
def test_us_labor_dataset(self): """Test pyjstat using a us labor dataset of class dataset.""" results = pyjstat.from_json_stat(self.uslabor_dataset) json_data = json.loads(pyjstat.to_json_stat(results, output='dict'), object_pairs_hook=OrderedDict) self.assertTrue(self.uslabor_dataset['class'] == 'dataset') self.assertTrue(len(results[0].columns) == 4) self.assertTrue(len(results[0].index) == 12880) self.assertTrue(self.uslabor_dataset['value'][0] == json_data['dataset1']['value'][0]) self.assertTrue(self.uslabor_dataset['value'][547] == json_data['dataset1']['value'][547]) self.assertTrue(self.uslabor_dataset['value'][-1] == json_data['dataset1']['value'][-1])
def test_to_json_stat(self): """Test pyjstat to_json_stat().""" results = pyjstat.from_json_stat(self.oecd_datasets) json_data = json.loads(pyjstat.to_json_stat(results), object_pairs_hook=OrderedDict) self.assertTrue(json_data[0]["dataset1"]["dimension"]["indicator"] ["label"] == "indicator") self.assertTrue(json_data[0]["dataset1"]["dimension"]["size"][1] == 36) self.assertTrue( json_data[1]["dataset2"]["dimension"]["id"][2] == "age group") self.assertTrue(json_data[0]["dataset1"]["value"][-1], results[0][-1:]['value']) results[0].columns = ['a', 'a', 'b', 'value'] self.assertRaises(ValueError, pyjstat.to_json_stat, results)
def test_class_dataset(self): """Test pyjstat using class dataset from v1.02.""" results = pyjstat.from_json_stat(self.galicia_dataset) json_data = json.loads(pyjstat.to_json_stat(results, output='dict'), object_pairs_hook=OrderedDict) self.assertTrue(self.galicia_dataset['class'] == 'dataset') self.assertTrue(len(results[0].columns) == 7) self.assertTrue(len(results[0].index) == 3960) self.assertTrue(self.galicia_dataset['value'][0] == json_data['dataset1']['value'][0]) self.assertTrue(self.galicia_dataset['value'][547] == json_data['dataset1']['value'][547]) self.assertTrue(self.galicia_dataset['value'][-1] == json_data['dataset1']['value'][-1])
def test_from_to_json_stat_as_dict(self): """ Test pyjstat nested from-to json_stat using dict of dicts as input """ results = pyjstat.from_json_stat(self.oecd_datasets) json_data = json.loads(pyjstat.to_json_stat(results, output='dict'), object_pairs_hook=OrderedDict) data_df = pyjstat.from_json_stat( json.loads(json.dumps(json_data), object_pairs_hook=OrderedDict)) line_thirty = ['unemployment rate', 'Belgium', '2009', 7.891892855] dimensions = pyjstat.get_dimensions(self.oecd_datasets['oecd'], 'label') self.assertTrue(len(data_df) == 2) self.assertTrue(set(data_df[0].columns.values[:-1]) == set(dimensions[1])) self.assertTrue(set(data_df[0].iloc[30].values) == set(line_thirty))
# -*- coding: utf-8 -*- """ pyjstat example with 0.3.5-like syntax for JSON-stat 1.3.""" from pyjstat import pyjstat import requests from collections import OrderedDict import json EXAMPLE_URL = 'http://json-stat.org/samples/us-labor-ds.json' data = requests.get(EXAMPLE_URL) results = pyjstat.from_json_stat(data.json(object_pairs_hook=OrderedDict)) print (results) print (json.dumps(json.loads(pyjstat.to_json_stat(results))))
# -*- coding: utf-8 -*- import urllib2 import json from pyjstat import pyjstat results = pyjstat.from_json_stat(json.load(urllib2.urlopen( 'http://json-stat.org/samples/oecd-canada.json'))) print results print pyjstat.to_json_stat(results)