GitHub
04/04/2026, 2:15 AMmeltano 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):
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:
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/meltanoGitHub
04/17/2026, 4:28 AMGitHub
04/28/2026, 1:44 AM