<#9929 feat(cli): Sort settings by section in `mel...
# meltano-repo-activity
g
#9929 feat(cli): Sort settings by section in `meltano config list` Pull request opened by mahangu Description
meltano config list
displays settings in plugin definition order, producing a flat wall of text where user-configured settings are scattered among untouched defaults. For plugins like
tap-postgres
with 40+ settings, finding the 4 you actually configured means scrolling past 36 irrelevant defaults. This PR groups settings into logical sections with headers, sorted alphabetically within each section: 1. Required: - settings from
settings_group_validation
(only when the plugin defines validation groups) 2. Configured: - non-required settings explicitly set by the user (source != DEFAULT) 3. Optional: - non-required settings still at their defaults 4. Custom / Custom extras - unchanged from current behavior Before (tap-mock, 12 settings in definition order):
Copy code
test (required) [env: TAP_MOCK_TEST] current value: 'mock' (default)
start_date [env: TAP_MOCK_START_DATE] current value: None (default)
secure (required by groups 1, 3) [env: TAP_MOCK_SECURE] current value: None (default)
port (required by group 3) [env: TAP_MOCK_PORT] current value: 5000 (default)
list [env: TAP_MOCK_LIST] current value: [] (default)
...
After:
Copy code
Required:
auth.password (required by group 2) [env: TAP_MOCK_AUTH_PASSWORD] current value: None (default)
auth.username (required by group 2) [env: TAP_MOCK_AUTH_USERNAME] current value: None (default)
port (required by group 3) [env: TAP_MOCK_PORT] current value: 5000 (default)
secure (required by groups 1, 3) [env: TAP_MOCK_SECURE] current value: None (default)
test (required) [env: TAP_MOCK_TEST] current value: 'mock' (default)

Optional:
aliased [env: TAP_MOCK_ALIASED, ...] current value: None (default)
boolean [env: TAP_MOCK_BOOLEAN] current value: None (default)
...
This is a non-breaking change: same settings, same per-setting format, just reordered with section headers. The
(required)
indicators from #9849 are preserved. The
--extras
flag continues to work, with alphabetical sorting applied. Implementation • Extracted per-setting printing into
_print_setting()
helper • Replaced single-pass iteration with bucket-then-print: settings are collected into category lists, sorted alphabetically, then printed with section headers • Empty sections are omitted (no header printed) Checklist • I have read the contribution guide Was generative AI tooling used to co-author this PR? • Yes (please specify the tool below) Generated-by: Claude Code following the agentic coding guidelines Related Issues • Closes #9872 Summary by Sourcery Reorganize
meltano config list
output into logical sections and alphabetical groups to make plugin settings easier to scan. Enhancements: • Group listed settings into Required, Configured, Optional, and custom sections, sorted alphabetically within each section, while preserving existing per-setting display details. • Adjust handling of extras so extra settings and custom extras are listed in sorted order, with headers only when applicable. Tests: • Add CLI tests covering section presence and ordering, alphabetical sorting within sections, behavior of the Configured section when values are set, sorted extras output, and scenarios with all settings required and no optional settings. meltano/meltano