# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to you under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Database of the current version
#
current:
  number: '0.17.0'
  pinned_number: '0.17.*'
  date: '20 April 2020'
  git-tag: '3cbcb7b62c2f2d02851bff837758637eb592a64b'
  github-tag-link: 'https://github.com/apache/arrow/releases/tag/apache-arrow-0.17.0'
  release-notes: 'https://arrow.apache.org/release/0.17.0.html'
  mirrors: 'https://www.apache.org/dyn/closer.lua/arrow/arrow-0.17.0/'
  tarball_name: 'apache-arrow-0.17.0.tar.gz'
  mirrors-tar: 'https://www.apache.org/dyn/closer.lua/arrow/arrow-0.17.0/apache-arrow-0.17.0.tar.gz'
  java-artifacts: 'http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.arrow%22%20AND%20v%3A%220.17.0%22'
  asc: 'https://downloads.apache.org/arrow/arrow-0.17.0/apache-arrow-0.17.0.tar.gz.asc'
  sha256: 'https://downloads.apache.org/arrow/arrow-0.17.0/apache-arrow-0.17.0.tar.gz.sha256'
  sha512: 'https://downloads.apache.org/arrow/arrow-0.17.0/apache-arrow-0.17.0.tar.gz.sha512'
