sha,message,author_date,committer_date,raw_author,raw_author_label,raw_committer,raw_committer_label,repo,repo_label,author,author_label,committer,committer_label 37273d7f63f08872aa1c90c4233a0580e384ac19,"Fixed issue #433 - CLI eats cursor (#598) The issue is that underlying iterator is not fully consumed within the body of the `with file_progress()` block. Instead, that block creates generator expressions like `docs = (dict(zip(headers, row)) for row in reader)` These iterables are consumed later, outside the `with file_progress()` block, which consumes the underlying iterator, and in turn updates the progress bar. This means that the `ProgressBar.__exit__` method gets called before the last time the `ProgressBar.update` method gets called. The result is that the code to make the cursor invisible (inside the `update()` method) is called after the cleanup code to make it visible (in the `__exit__` method). The fix is to move consumption of the `docs` iterators within the progress bar block. (An additional fix, to make ProgressBar more robust against this kind of misuse, would to make it refusing to update after its `__exit__` method had been called, just like files cannot be `read()` after they are closed. That requires a in the click library).",2023-11-04T00:40:29Z,2023-11-04T00:40:29Z,189bbd99f415a97bb6554c438654cb35fc4c85ae,Luke Plant,cd792325681cbad9f663f2879d8b69f1edbb678f,GitHub,140912432,sqlite-utils,62745,spookylukey,19864447,web-flow