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.