Open ludovic-gasc opened 12 years ago
This would be relatively easy to add, but I'm wondering about the best way to implement it. Do you think there should be a small buffer (n lines under the progress bar), or maybe fill the rest of the terminal window with the puts() statements?
Actually, thinking about it, this would require changing progress.bar (which is currently a function) to be a class. It would have an iterable magic method similar to what it currently has, and other methods for printing to the screen, so would require a big refactor. You'd also have to do your for loops like so instead
newbar = progress.bar()
for i in newbar(range(100)):
...
I'll see if I can knock together a proof of principle.
In the mean time, you can use sys.stderr.write()
to put stuff before the progress bar;
for i in progress.bar(range(100)):
sleep(random() * 0.2)
sys.stderr.write("Progress: \t")
will yield
>>> Progess: [######## ] 27/100 - 00:00:05
but note, this will redraw on every iteration, so is likely only useful for when your iterations are slow (or few)
I don't know, each solution is good, but it could be complicated to implement, couldn't it ?
Maybe the easiest way to implement this, we should only authorize one string without line breaks by iteration, and put the string at the right of the progress bar. It's enough in the most cases.
Ideally, it could be wonderful to have the three solutions ;-)
With the progress module, if you print information about the data in treatment, the progress bar is broken. Example:
It could be useful to add a method to print the current data processed, under the progress bar for example: