def puppet_deprecation_warning(message, options = {})
    key = options[:key]
    file = options[:file]
    line = options[:line]
    #TRANSLATORS the literals ":file", ":line", and ":key" should not be translated
    raise Puppet::DevError, _("Need either :file and :line, or :key") if (key.nil?) && (file.nil? || line.nil?)

    key ||= "#{file}:#{line}"
    issue_deprecation_warning(message, key, file, line, false)
  end
def puppet_deprecation_warning(message, options = {})
    key = options[:key]
    file = options[:file]
    line = options[:line]
    #TRANSLATORS the literals ":file", ":line", and ":key" should not be translated
    raise Puppet::DevError, _("Need either :file and :line, or :key") if (key.nil?) && (file.nil? || line.nil?)

    key ||= "#{file}:#{line}"
    issue_deprecation_warning(message, key, file, line, false)
  end
Logs a warning whose origin comes from Puppet source rather than somewhere
 internal within Puppet.  Otherwise the same as deprecation_warning()

 @param message [String] The message to log (logs via warning)
 @param options [Hash]
 @option options [String] :file File we are warning from
 @option options [Integer] :line Line number we are warning from
 @option options [String] :key (:file + :line) Alternative key used to mark
   warning as unique

 Either :file and :line and/or :key must be passed.