Progress bar for insert works now

This commit is contained in:
Simon Willison 2020-10-27 11:07:06 -07:00
commit 2f38660d48
2 changed files with 12 additions and 15 deletions

View file

@ -92,20 +92,15 @@ def find_spatialite():
return None
class UpdateReader(io.TextIOWrapper):
def __init__(self, raw, update):
super().__init__(raw)
class UpdateWrapper:
def __init__(self, wrapped, update):
self._wrapped = wrapped
self._update = update
def read(self, size=-1):
bytes = super().read(size)
self._update(len(bytes))
return bytes
def readline(self, size=-1):
bytes = super().readline(size)
self._update(len(bytes))
return bytes
def __iter__(self):
for line in self._wrapped:
self._update(len(line))
yield line
@contextlib.contextmanager
@ -115,4 +110,4 @@ def file_progress(file, silent=False, **kwargs):
else:
file_length = os.path.getsize(file.raw.name)
with click.progressbar(length=file_length, **kwargs) as bar:
yield UpdateReader(file, update=bar.update)
yield UpdateWrapper(file, bar.update)

View file

@ -1640,7 +1640,9 @@ def test_insert_encoding(tmpdir):
open(csv_path, "wb").write(latin1_csv)
# First attempt should error:
bad_result = CliRunner().invoke(
cli.cli, ["insert", db_path, "places", csv_path, "--csv"], catch_exceptions=False
cli.cli,
["insert", db_path, "places", csv_path, "--csv"],
catch_exceptions=False,
)
assert bad_result.exit_code == 1
assert (
@ -1651,7 +1653,7 @@ def test_insert_encoding(tmpdir):
good_result = CliRunner().invoke(
cli.cli,
["insert", db_path, "places", csv_path, "--encoding", "latin-1", "--csv"],
catch_exceptions=False
catch_exceptions=False,
)
assert good_result.exit_code == 0
db = Database(db_path)