def test_import_from_json_retrieve_desired_data(self, mocked_create_table): mocked_create_table.return_value = 42 # import using filename rows.import_from_json(self.filename) call_args = mocked_create_table.call_args_list[0] self.assert_create_table_data(call_args, field_ordering=False) # import using fobj with open(self.filename) as fobj: rows.import_from_json(fobj) call_args = mocked_create_table.call_args_list[1] self.assert_create_table_data(call_args, field_ordering=False)
def test_import_from_json_retrieve_desired_data(self, mocked_create_table): mocked_create_table.return_value = 42 # import using filename table_1 = rows.import_from_json(self.filename) call_args = mocked_create_table.call_args_list[0] self.assert_create_table_data(call_args, field_ordering=False) # import using fobj with open(self.filename) as fobj: table_2 = rows.import_from_json(fobj) call_args = mocked_create_table.call_args_list[1] self.assert_create_table_data(call_args, field_ordering=False)
def test_export_to_json_filename(self): # TODO: may test file contents temp = tempfile.NamedTemporaryFile(delete=False, mode='wb') self.files_to_delete.append(temp.name) rows.export_to_json(utils.table, temp.name) table = rows.import_from_json(temp.name) self.assert_table_equal(table, utils.table)
def test_export_to_json_filename(self): # TODO: may test file contents temp = tempfile.NamedTemporaryFile(delete=False, mode="wb") self.files_to_delete.append(temp.name) rows.export_to_json(utils.table, temp.name) table = rows.import_from_json(temp.name) self.assert_table_equal(table, utils.table)
def test_export_to_json_fobj(self): # TODO: may test with codecs.open passing an encoding # TODO: may test file contents temp = tempfile.NamedTemporaryFile(delete=False) self.files_to_delete.append(temp.name) rows.export_to_json(utils.table, temp.file) table = rows.import_from_json(temp.name) self.assert_table_equal(table, utils.table)
def test_import_from_json_uses_create_table(self, mocked_create_table): mocked_create_table.return_value = 42 kwargs = {"some_key": 123, "other": 456} result = rows.import_from_json(self.filename, encoding=self.encoding, **kwargs) self.assertTrue(mocked_create_table.called) self.assertEqual(mocked_create_table.call_count, 1) self.assertEqual(result, 42) call = mocked_create_table.call_args kwargs["meta"] = {"imported_from": "json", "filename": self.filename, "encoding": self.encoding} self.assertEqual(call[1], kwargs)
def test_issue_168(self): temp = tempfile.NamedTemporaryFile(delete=False, mode="wb") filename = "{}.{}".format(temp.name, self.file_extension) self.files_to_delete.append(filename) table = rows.Table(fields=OrderedDict([("jsoncolumn", rows.fields.JSONField)])) table.append({"jsoncolumn": '{"python": 42}'}) rows.export_to_json(table, filename) table2 = rows.import_from_json(filename) self.assert_table_equal(table, table2)
def test_import_from_json_uses_create_table(self, mocked_create_table): mocked_create_table.return_value = 42 kwargs = {'encoding': 'iso-8859-15', 'some_key': 123, 'other': 456, } result = rows.import_from_json(self.filename, **kwargs) self.assertTrue(mocked_create_table.called) self.assertEqual(mocked_create_table.call_count, 1) self.assertEqual(result, 42) call = mocked_create_table.call_args kwargs['meta'] = {'imported_from': 'json', 'filename': self.filename, } self.assertEqual(call[1], kwargs)
def test_issue_168(self): temp = tempfile.NamedTemporaryFile(delete=False, mode='wb') filename = '{}.{}'.format(temp.name, self.file_extension) self.files_to_delete.append(filename) table = rows.Table(fields=OrderedDict([('jsoncolumn', rows.fields.JSONField)])) table.append({'jsoncolumn': '{"python": 42}'}) rows.export_to_json(table, filename) table2 = rows.import_from_json(filename) self.assert_table_equal(table, table2)
def search_species(name): 'Search species and return a `rows.Table` with results' response = requests.get(URL, params={'name': name, 'format': 'json'}) json_result = response.json() if 'error_message' in json_result and \ json_result['error_message'].strip() != '': raise RuntimeError(json_result['error_message']) # Need to dump again to JSON (to get a `bytes` object) and then import as # JSON, since there is a little bug on rows json_rows = json.dumps(json_result['results']) return rows.import_from_json(BytesIO(json_rows))
def parse(self, response): encoding = "utf-8" table = rows.import_from_json( io.BytesIO(response.body), encoding=encoding ) # TODO - get last_date from another source at *.saude.ce.gov.br last_date = datetime.now().date() self.add_report(date=last_date, url=self.start_urls[0]) total_confirmed = total_deaths = 0 imported_confirmed = imported_deaths = 0 cases = defaultdict(dict) for row in table: if row.tipo == 'Confirmado': cases[row.municipio]["confirmed"] = row.quantidade elif row.tipo == 'Óbito': cases[row.municipio]["deaths"] = row.quantidade else: raise ValueError(f'Unknown case type : "{row.tipo}"') for city, city_data in cases.items(): confirmed = city_data["confirmed"] deaths = city_data.get("deaths", 0) try: self.get_city_id_from_name(city) except KeyError: imported_confirmed += confirmed imported_deaths += deaths else: self.add_city_case(city=city, confirmed=confirmed, deaths=deaths) total_confirmed += confirmed total_deaths += deaths if imported_confirmed == imported_deaths == 0: imported_confirmed = imported_deaths = None self.add_city_case( city="Importados/Indefinidos", confirmed=imported_confirmed, deaths=imported_deaths, ) self.add_state_case(confirmed=total_confirmed, deaths=total_deaths)
def test_import_from_json_uses_create_table(self, mocked_create_table): mocked_create_table.return_value = 42 kwargs = {"some_key": 123, "other": 456} result = rows.import_from_json(self.filename, encoding=self.encoding, **kwargs) self.assertTrue(mocked_create_table.called) self.assertEqual(mocked_create_table.call_count, 1) self.assertEqual(result, 42) call = mocked_create_table.call_args kwargs["meta"] = { "imported_from": "json", "filename": self.filename, "encoding": self.encoding, } self.assertEqual(call[1], kwargs)
def test_import_from_json_uses_create_table(self, mocked_create_table): mocked_create_table.return_value = 42 kwargs = { 'encoding': 'iso-8859-15', 'some_key': 123, 'other': 456, } result = rows.import_from_json(self.filename, **kwargs) self.assertTrue(mocked_create_table.called) self.assertEqual(mocked_create_table.call_count, 1) self.assertEqual(result, 42) call = mocked_create_table.call_args kwargs['meta'] = { 'imported_from': 'json', 'filename': self.filename, } self.assertEqual(call[1], kwargs)