Open steelman opened 6 years ago
How about this way? I think it can do what you want.
with Halo(spinner='dots') as spinner:
for f in files_to_load():
spinner.text = 'Loading {}'.format(f)
do_load_file(f)
This isn't a bad solution, however, it doesn't work if there is nothing like a filename to show and I still want the spinner to be updated once a loop.
@steelman Thanks for opening this. Could you add an example to your second comment?
Tough question. Nothing in particular comes to my mind, so let my try theoretic cases.
@steelman I'm getting what you're saying. See, this is what spinner.text
is for. If we need to step in every iteration, let's say for percentage, we would need to know the length of the iterable. For that, we need to add a wrapper which handles iterations and updates the text. But we can only do it for iterables.
At this moment halo satisfies my needs so, most probably, I won't develop any solution to the problem I described. However, I imagine, you may want to keep this issue open, so if anybody comes looking for an inspiration for a contribution, they will find one.
Happy to update #132 and check it still works, if the feature might still be of interest @manrajgrover?
Support synchronous spinners which switch frames upon explicit request from a working thread like.
This can (as far as I understand) be achieved with .frame() but isn't as concise as the above. Possibly don't render new frame more often than interval.