get_parameters_by_name(..., transform="auto") returns raw strings for batched parameters. Nothing raises, so the unparsed value reaches caller code silently.
The split shows inside a single call. A decrypt=True parameter routes through BaseProvider.get(), which passes key=name, so auto works. The rest route through SSMProvider._transform_and_cache_get_parameters_response, which calls transform_value() with no key, so the suffix is read from an empty string and auto degrades to the identity transform.
On develop, stubbed client, one call with transform="auto":
decrypt -> BaseProvider.get() parsed=True dict {'value': 'hello'}
batch -> GetParameters parsed=False str '{"value": "hello"}'
get_parameters_by_name(
parameters={"/dev/a.json": {}, "/dev/b.json": {"decrypt": True}},
transform="auto",
)
Fix is key=name in that transform_value() call. #7083 fixed the argument-order bug in the same function and covered transform="json", so auto survived it.
Version: latest. Runtime: Python 3.13. Packaging: PyPi.
get_parameters_by_name(..., transform="auto")returns raw strings for batched parameters. Nothing raises, so the unparsed value reaches caller code silently.The split shows inside a single call. A
decrypt=Trueparameter routes throughBaseProvider.get(), which passeskey=name, soautoworks. The rest route throughSSMProvider._transform_and_cache_get_parameters_response, which callstransform_value()with nokey, so the suffix is read from an empty string andautodegrades to the identity transform.On
develop, stubbed client, one call withtransform="auto":Fix is
key=namein thattransform_value()call. #7083 fixed the argument-order bug in the same function and coveredtransform="json", soautosurvived it.Version: latest. Runtime: Python 3.13. Packaging: PyPi.