feat: Add CLI Commands for Browsing and Searching OpenML Studies
Metadata
New Tests Added: Yes
Documentation Updated: No (CLI help text serves as documentation)
Change Log Entry: "Add CLI commands for browsing and searching OpenML studies: openml studies list, openml studies info, and openml studies search"
Details What does this PR implement/fix? This PR adds three new CLI subcommands under openml studies to improve the user experience of the study/benchmark suite catalogue:
openml studies list - List studies with optional filtering (status, uploader, pagination, output format)
openml studies info <study_id> - Display detailed information about a specific study including tasks, datasets, and metadata
openml studies search
This directly addresses the ESoC 2025 goal of "Improving user experience of the study catalogue in AIoD and OpenML".
How can I reproduce the issue this PR is solving and its solution? Before (requires Python code):
import openml
studies = openml.study.list_studies(size=10)
for sid in studies:
study = openml.study.get_study(sid)
print(f"{sid}: {study.name}")
After (CLI commands):
# List first 10 studies
openml studies list --size 10
# Search for benchmark suites by name
openml studies search "OpenML-CC18"
# Get detailed info about a study
openml studies info 14
# List studies by a specific uploader
openml studies list --uploader "openml-bot" --format table
# List benchmark suites (studies with main_entity_type='task')
openml studies list --type suite
Implementation Details: Added three new functions in openml/cli.py: studies_list(), studies_info(), and studies_search() Integrated into main CLI parser with proper argument handling Added comprehensive test suite in tests/test_openml/test_cli.py Uses existing openml.study.list_studies() and openml.study.get_study() functions - no changes to core API Follows existing CLI patterns (similar to other resource CLI commands) All tests use mocked API calls to avoid requiring server connections Any other comments? All pre-commit hooks pass (ruff, mypy, formatting) No breaking changes Follows project code style and patterns Ready for review