Puppet::Functions.create_function(:encode_url_queries_for_python) do

  def encode_url_queries_for_python(*args)
    require 'uri'

    if (args.size != 1) then
      raise Puppet::ParseError, 'encode_url_queries_for_python(): Wrong number of arguments'
    end
    queries = args[0]
    if queries.class != Hash
      raise Puppet::ParseError, "encode_url_queries_for_python(): Requires a Hash, got #{queries.class}"
    end

    if queries.empty?
      return ''
    end
    return '?' + URI.encode_www_form(queries).gsub(/%/, '%%')
  end
end