GitHub
07/22/2026, 5:55 AMs3.endpoint_url). Currently Meltano always treats dots as nesting separators, expanding such names into nested objects. This isn't always what users want.
This PR adds backslash-escaping (\.) for dots in setting names, consistent with the escaping already supported by select rules. A setting named s3\.endpoint_url is stored and passed through to the plugin as the flat key s3.endpoint_url instead of being expanded into {"s3": {"endpoint_url": "..."}}.
The implementation adds split_path, unescape_dots, and has_unescaped_dot helpers to meltano.core.utils and updates the full flow — from CLI input through settings storage to singer plugin config output — to honour the escape sequence. Documentation and tests are included.
Checklist
• I have read the contribution guide
Was generative AI tooling used to co-author this PR?
• Yes (Claude Code)
Generated-by: Claude Code following the agentic coding guidelines
Related Issues
• Closes #8818
Summary by Sourcery
Add support for backslash-escaped dots in setting names so literal periods are preserved from CLI and configuration through to plugin config processing.
New Features:
• Allow setting names to use backslash-escaped dots (e.g. s3\.endpoint_url) so they are treated as flat keys instead of nested paths.
• Support escaped dots in CLI interactive config flows and settings resolution, keeping escaped names consistent across storage and lookup.
Enhancements:
• Introduce shared utilities for detecting, splitting, and unescaping dotted paths, and use them across settings, nesting helpers, and plugin config processing.
• Update singer plugin config processing to distinguish literal dots from path separators and to correctly unescape literal dots before passing config to plugins.
Documentation:
• Document how periods in setting names control nesting and how to escape them with backslashes in plugin definitions and CLI usage examples.
Tests:
• Add unit and integration tests covering escaped-dot path splitting, nesting utilities, settings storage/unset behavior, and singer plugin configuration output with literal-dot keys.
meltano/meltanoGitHub
07/22/2026, 6:18 AMGitHub
08/05/2026, 2:45 PM