[CLI] output format option for `ls` CLIs (#3735)
* feat(cli): add consistent output format options to ls commands
- Add OutputFormat enum (table, json), FormatOpt and QuietOpt type aliases
to _cli_utils.py
- Add print_as_table() and print_list_output() helpers using tabulate
- Update models ls, datasets ls, spaces ls with --format {table,json}
(default: json) and -q/--quiet flag
- Update endpoints ls with --format {table,json} and -q/--quiet flag
- Harmonize cache.py: rename to CacheOutputFormat, keep csv option for
backward compatibility
Co-authored-by: celina.hanouti <celina.hanouti@huggingface.co>
* test: update inference endpoints ls test for new output format
- Update test_list and test_inference_endpoints_alias to expect plain
array format instead of {items: [...]}
- Add test_list_with_format_and_quiet to test new --format and -q options
Co-authored-by: celina.hanouti <celina.hanouti@huggingface.co>
* fix: remove unused OutputFormat import in cache.py
Co-authored-by: celina.hanouti <celina.hanouti@huggingface.co>
* docs: regenerate CLI reference for new output format options
Co-authored-by: celina.hanouti <celina.hanouti@huggingface.co>
* fix: add type annotation to fix ty check error
Co-authored-by: celina.hanouti <celina.hanouti@huggingface.co>
* fix: use cast for type compatibility with tabulate function
Co-authored-by: celina.hanouti <celina.hanouti@huggingface.co>
* fix: resolve mypy errors in inference_endpoints.py row_fn
Co-authored-by: celina.hanouti <celina.hanouti@huggingface.co>
* fix: use index access instead of .get() to satisfy ty type checker
Co-authored-by: celina.hanouti <celina.hanouti@huggingface.co>
* fix: use Any type for item dict to satisfy ty type checker
Co-authored-by: celina.hanouti <celina.hanouti@huggingface.co>
* feat: update table headers and columns for ls commands
- models/datasets: ID, AUTHOR, DOWNLOADS, LIKES, UPDATED
- spaces: ID, AUTHOR, SDK, LIKES, UPDATED
- endpoints: NAME, MODEL, STATUS, INSTANCE, REGION
- Extract author from repo id if not provided in API response
Co-authored-by: celina.hanouti <celina.hanouti@huggingface.co>
* fix: fall back to created_at when last_modified not available for models/spaces
Co-authored-by: celina.hanouti <celina.hanouti@huggingface.co>
* feat: replace UPDATED with TASK (pipeline_tag) for models, remove UPDATED from datasets/spaces
Co-authored-by: celina.hanouti <celina.hanouti@huggingface.co>
* address review suggestions
* nit
* fix test
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>