backend.ai icon indicating copy to clipboard operation
backend.ai copied to clipboard

Refactor client SDK progress bar for vfolder upload and download func APIs

Open achimnol opened this issue 4 years ago • 2 comments

The Python client SDK's vfolder upload and download commands display a progress bar when executed in a terminal using tqdm. The issue is that the functional API layer directly uses tqdm, so it may show unwanted stdout outputs when used as a library, though this is controllable using show_progress argument. This is a leak of abstraction.

By the design principle, all terminal manipulation and console outputs should be done inside ai.backend.client.cli (and ai.backend.client.output) only, while ai.backend.client.func should only provide a programming interface without console outputs (but it may include use of logging because logging policy could be controlled by the host program).

  • Let's move invocation of tqdm to ai.backend.client.cli and/or ai.backend.client.output.
  • Let's make a simple progress reporter abstraction so that the functional implementation still could provide the progress information and the CLI output handler could receive it.

achimnol avatar Jan 07 '22 15:01 achimnol

Do aiotusclient should be updated? it also uses tqdm directly Link

fregataa avatar Jan 10 '22 03:01 fregataa

Do aiotusclient should be updated? it also uses tqdm directly Link

Yes, I think then aiotusclient should be also updated. Let's add a progress-reporter abstraction there (since it's a separate library, it should provide its own class) and connect it with our progress reporter.

If done, ask @leksikov for an initial review.

achimnol avatar Feb 09 '22 08:02 achimnol