puppetlabs/puppet · error · ArgumentError
only #{FMT_KEYS.map { |k| "'#{k}'" }.join(', ')} are allowed
Error message
only #{FMT_KEYS.map { |k| "'#{k}'" }.join(', ')} are allowed in a container format, got #{fmt} What it means
Error "only #{FMT_KEYS.map { |k| "'#{k}'" }.join(', ')} are allowed in a container format, got #{fmt}" thrown in puppetlabs/puppet.
Source
Thrown at lib/puppet/pops/types/string_converter.rb:561
key, value = entry
unless key.is_a?(Types::PAnyType)
raise ArgumentError, "top level keys in the format hash must be data types, got instance of '#{key.class}'"
end
if value.is_a?(Hash)
result[key] = validate_container_input(value)
else
result[key] = Format.new(value)
end
end
end
private :validate_input
FMT_KEYS = %w[separator separator2 format string_formats].freeze
def validate_container_input(fmt)
if (fmt.keys - FMT_KEYS).size > 0
raise ArgumentError, "only #{FMT_KEYS.map { |k| "'#{k}'" }.join(', ')} are allowed in a container format, got #{fmt}"
end
result = Format.new(fmt['format'])
result.separator = fmt['separator']
result.separator2 = fmt['separator2']
result.container_string_formats = validate_input(fmt['string_formats'])
result
end
private :validate_container_input
def string_PObjectType(val_type, val, format_map, indentation)
f = get_format(val_type, format_map)
case f.format
when :p
fmt = TypeFormatter.singleton
indentation = indentation.indenting(f.alt? || indentation.is_indenting?)
fmt = fmt.indented(indentation.level, 2) if indentation.is_indenting?
fmt.string(val)View on GitHub (pinned to e227c27540)
When it happens
Trigger: Thrown at lib/puppet/pops/types/string_converter.rb:561 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of puppetlabs/puppet@e227c27540 (2026-08-21).
Data as JSON: /api/errors/99bc59dce9953e73.
Report an issue: GitHub.