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.