def test_memorysource(): tbl1 = (('foo', 'bar'), ('a', '1'), ('b', '2'), ('c', '2')) # test writing to a string buffer ss = MemorySource() etl.tocsv(tbl1, ss) expect = "foo,bar\r\na,1\r\nb,2\r\nc,2\r\n" if not PY2: expect = expect.encode('ascii') actual = ss.getvalue() eq_(expect, actual) # test reading from a string buffer tbl2 = etl.fromcsv(MemorySource(actual)) ieq(tbl1, tbl2) ieq(tbl1, tbl2) # test appending etl.appendcsv(tbl1, ss) actual = ss.getvalue() expect = "foo,bar\r\na,1\r\nb,2\r\nc,2\r\na,1\r\nb,2\r\nc,2\r\n" if not PY2: expect = expect.encode('ascii') eq_(expect, actual)
def _display_html(table, limit=0, vrepr=None, index_header=None, caption=None, tr_style=None, td_styles=None, encoding=None, truncate=None, epilogue=None): # determine defaults if limit == 0: limit = config.display_limit if vrepr is None: vrepr = config.display_vrepr if index_header is None: index_header = config.display_index_header if encoding is None: encoding = locale.getpreferredencoding() table, overflow = _vis_overflow(table, limit) buf = MemorySource() tohtml(table, buf, encoding=encoding, index_header=index_header, vrepr=vrepr, caption=caption, tr_style=tr_style, td_styles=td_styles, truncate=truncate) output = text_type(buf.getvalue(), encoding) if epilogue: output += '<p>%s</p>' % epilogue elif overflow: output += '<p><strong>...</strong></p>' return output
def download_people_collection( client: Optional[StarWarsAPIClient] = None, ) -> PeopleCollection: """Download Star Wars API people collection and saves it in DB.""" client = client or StarWarsAPIClient() people_view = petl_views.process_people_collection_view( petl_views.PeopleCollectionView(client), petl_views.PlanetsCollectionView(client), ) people_view_output = MemorySource() people_view.tocsv(people_view_output) instance = PeopleCollection() instance.file.save( '{0}.csv'.format(uuid.uuid4().hex), ContentFile(people_view_output.getvalue()), ) return instance