<#10191 feat(core): Allow escaping dots in setting...
# meltano-repo-activity
g
#10191 feat(core): Allow escaping dots in setting names Pull request opened by sravankumarkunadi Description Third-party plugins sometimes use setting names that contain literal dots (e.g.
s3.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/meltano