You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by we...@apache.org on 2016/12/20 21:19:39 UTC
arrow git commit: ARROW-430: Improved version handling [Forced
Update!]
Repository: arrow
Updated Branches:
refs/heads/master 8814d62b1 -> 73455b56f (forced update)
ARROW-430: Improved version handling
This reintroduces `setuptools_scm` versioning for git clones and sdists/wheels. git-archives are handled by a separate chunk of code that will infer the version from the `pom.xml`
As in the Maven world, always the next to-be-released version is specified and Python PEP 440 development versions are based on the previous release, it used the most minimal pre-release version specified there.
I would suggest to keep the conda package versioning as it is currently, i.e. manually set it to 0.1.0postX.
Also: I would rather not parse the Maven XML but that is the most simple way currently to ensure that the versioning system is in a state where we can still make releases with the Maven release plugin.
Author: Uwe L. Korn <uw...@xhochy.com>
Closes #248 from xhochy/ARROW-430 and squashes the following commits:
39753f8 [Uwe L. Korn] Infer version from java/pom.xml
05c44ea [Uwe L. Korn] Get rid of setuptools_scm_git_archive
14b8136 [Uwe L. Korn] Revert "ARROW-429: Revert ARROW-379 until git-archive issues are resolved"
Change-Id: I4f6d291e63b2518af47c2a81049aa24a38c92821
Project: http://git-wip-us.apache.org/repos/asf/arrow/repo
Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/73455b56
Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/73455b56
Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/73455b56
Branch: refs/heads/master
Commit: 73455b56f705c3c11d3c29447082641dcab4c63a
Parents: f6bf112
Author: Uwe L. Korn <uw...@xhochy.com>
Authored: Tue Dec 20 14:10:21 2016 -0500
Committer: Wes McKinney <we...@twosigma.com>
Committed: Tue Dec 20 16:19:26 2016 -0500
----------------------------------------------------------------------
cpp/cmake_modules/FindParquet.cmake | 109 ----------------------------
dev/release/00-prepare.sh | 5 --
python/cmake_modules/FindParquet.cmake | 109 ++++++++++++++++++++++++++++
python/pyarrow/__init__.py | 10 ++-
python/setup.cfg | 20 +++++
python/setup.py | 34 ++++-----
6 files changed, 150 insertions(+), 137 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/arrow/blob/73455b56/cpp/cmake_modules/FindParquet.cmake
----------------------------------------------------------------------
diff --git a/cpp/cmake_modules/FindParquet.cmake b/cpp/cmake_modules/FindParquet.cmake
deleted file mode 100644
index 7445e09..0000000
--- a/cpp/cmake_modules/FindParquet.cmake
+++ /dev/null
@@ -1,109 +0,0 @@
-# Copyright 2012 Cloudera Inc.
-#
-# Licensed 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.
-
-# - Find PARQUET (parquet/parquet.h, libparquet.a, libparquet.so)
-# This module defines
-# PARQUET_INCLUDE_DIR, directory containing headers
-# PARQUET_LIBS, directory containing parquet libraries
-# PARQUET_STATIC_LIB, path to libparquet.a
-# PARQUET_SHARED_LIB, path to libparquet's shared library
-# PARQUET_FOUND, whether parquet has been found
-
-if( NOT "$ENV{PARQUET_HOME}" STREQUAL "")
- file( TO_CMAKE_PATH "$ENV{PARQUET_HOME}" _native_path )
- list( APPEND _parquet_roots ${_native_path} )
-elseif ( Parquet_HOME )
- list( APPEND _parquet_roots ${Parquet_HOME} )
-endif()
-
-# Try the parameterized roots, if they exist
-if ( _parquet_roots )
- find_path( PARQUET_INCLUDE_DIR NAMES parquet/api/reader.h
- PATHS ${_parquet_roots} NO_DEFAULT_PATH
- PATH_SUFFIXES "include" )
- find_library( PARQUET_LIBRARIES NAMES parquet
- PATHS ${_parquet_roots} NO_DEFAULT_PATH
- PATH_SUFFIXES "lib" )
-
- find_library(PARQUET_ARROW_LIBRARIES NAMES parquet_arrow
- PATHS ${_parquet_roots} NO_DEFAULT_PATH
- PATH_SUFFIXES "lib")
-else ()
- find_path(PARQUET_INCLUDE_DIR NAMES parquet/api/reader.h )
- find_library(PARQUET_LIBRARIES NAMES parquet)
- find_library(PARQUET_ARROW_LIBRARIES NAMES parquet_arrow)
-endif ()
-
-
-if (PARQUET_INCLUDE_DIR AND PARQUET_LIBRARIES)
- set(PARQUET_FOUND TRUE)
- get_filename_component( PARQUET_LIBS ${PARQUET_LIBRARIES} PATH )
- set(PARQUET_LIB_NAME libparquet)
- set(PARQUET_STATIC_LIB ${PARQUET_LIBS}/${PARQUET_LIB_NAME}.a)
- set(PARQUET_SHARED_LIB ${PARQUET_LIBS}/${PARQUET_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
-else ()
- set(PARQUET_FOUND FALSE)
-endif ()
-
-if (PARQUET_INCLUDE_DIR AND PARQUET_ARROW_LIBRARIES)
- set(PARQUET_ARROW_FOUND TRUE)
- get_filename_component(PARQUET_ARROW_LIBS ${PARQUET_ARROW_LIBRARIES} PATH)
- set(PARQUET_ARROW_LIB_NAME libparquet_arrow)
- set(PARQUET_ARROW_STATIC_LIB
- ${PARQUET_ARROW_LIBS}/${PARQUET_ARROW_LIB_NAME}.a)
- set(PARQUET_ARROW_SHARED_LIB
- ${PARQUET_ARROW_LIBS}/${PARQUET_ARROW_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
-else ()
- set(PARQUET_ARROW_FOUND FALSE)
-endif ()
-
-if (PARQUET_FOUND)
- if (NOT Parquet_FIND_QUIETLY)
- message(STATUS "Found the Parquet library: ${PARQUET_LIBRARIES}")
- endif ()
-else ()
- if (NOT Parquet_FIND_QUIETLY)
- set(PARQUET_ERR_MSG "Could not find the Parquet library. Looked in ")
- if ( _parquet_roots )
- set(PARQUET_ERR_MSG "${PARQUET_ERR_MSG} in ${_parquet_roots}.")
- else ()
- set(PARQUET_ERR_MSG "${PARQUET_ERR_MSG} system search paths.")
- endif ()
- if (Parquet_FIND_REQUIRED)
- message(FATAL_ERROR "${PARQUET_ERR_MSG}")
- else (Parquet_FIND_REQUIRED)
- message(STATUS "${PARQUET_ERR_MSG}")
- endif (Parquet_FIND_REQUIRED)
- endif ()
-endif ()
-
-if (PARQUET_ARROW_FOUND)
- if (NOT Parquet_FIND_QUIETLY)
- message(STATUS "Found the Parquet Arrow library: ${PARQUET_ARROW_LIBS}")
- endif()
-endif()
-
-mark_as_advanced(
- PARQUET_FOUND
- PARQUET_INCLUDE_DIR
- PARQUET_LIBS
- PARQUET_LIBRARIES
- PARQUET_STATIC_LIB
- PARQUET_SHARED_LIB
-
- PARQUET_ARROW_FOUND
- PARQUET_ARROW_LIBS
- PARQUET_ARROW_STATIC_LIB
- PARQUET_ARROW_SHARED_LIB
-)
http://git-wip-us.apache.org/repos/asf/arrow/blob/73455b56/dev/release/00-prepare.sh
----------------------------------------------------------------------
diff --git a/dev/release/00-prepare.sh b/dev/release/00-prepare.sh
index 3423a3e..00af5e7 100644
--- a/dev/release/00-prepare.sh
+++ b/dev/release/00-prepare.sh
@@ -43,9 +43,4 @@ mvn release:prepare -Dtag=${tag} -DreleaseVersion=${version} -DautoVersionSubmod
cd -
-cd "${SOURCE_DIR}/../../python"
-sed -i "s/VERSION = '[^']*'/VERSION = '${version}'/g" setup.py
-sed -i "s/ISRELEASED = False/ISRELEASED = True/g" setup.py
-cd -
-
echo "Finish staging binary artifacts by running: sh dev/release/01-perform.sh"
http://git-wip-us.apache.org/repos/asf/arrow/blob/73455b56/python/cmake_modules/FindParquet.cmake
----------------------------------------------------------------------
diff --git a/python/cmake_modules/FindParquet.cmake b/python/cmake_modules/FindParquet.cmake
new file mode 100644
index 0000000..7445e09
--- /dev/null
+++ b/python/cmake_modules/FindParquet.cmake
@@ -0,0 +1,109 @@
+# Copyright 2012 Cloudera Inc.
+#
+# Licensed 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.
+
+# - Find PARQUET (parquet/parquet.h, libparquet.a, libparquet.so)
+# This module defines
+# PARQUET_INCLUDE_DIR, directory containing headers
+# PARQUET_LIBS, directory containing parquet libraries
+# PARQUET_STATIC_LIB, path to libparquet.a
+# PARQUET_SHARED_LIB, path to libparquet's shared library
+# PARQUET_FOUND, whether parquet has been found
+
+if( NOT "$ENV{PARQUET_HOME}" STREQUAL "")
+ file( TO_CMAKE_PATH "$ENV{PARQUET_HOME}" _native_path )
+ list( APPEND _parquet_roots ${_native_path} )
+elseif ( Parquet_HOME )
+ list( APPEND _parquet_roots ${Parquet_HOME} )
+endif()
+
+# Try the parameterized roots, if they exist
+if ( _parquet_roots )
+ find_path( PARQUET_INCLUDE_DIR NAMES parquet/api/reader.h
+ PATHS ${_parquet_roots} NO_DEFAULT_PATH
+ PATH_SUFFIXES "include" )
+ find_library( PARQUET_LIBRARIES NAMES parquet
+ PATHS ${_parquet_roots} NO_DEFAULT_PATH
+ PATH_SUFFIXES "lib" )
+
+ find_library(PARQUET_ARROW_LIBRARIES NAMES parquet_arrow
+ PATHS ${_parquet_roots} NO_DEFAULT_PATH
+ PATH_SUFFIXES "lib")
+else ()
+ find_path(PARQUET_INCLUDE_DIR NAMES parquet/api/reader.h )
+ find_library(PARQUET_LIBRARIES NAMES parquet)
+ find_library(PARQUET_ARROW_LIBRARIES NAMES parquet_arrow)
+endif ()
+
+
+if (PARQUET_INCLUDE_DIR AND PARQUET_LIBRARIES)
+ set(PARQUET_FOUND TRUE)
+ get_filename_component( PARQUET_LIBS ${PARQUET_LIBRARIES} PATH )
+ set(PARQUET_LIB_NAME libparquet)
+ set(PARQUET_STATIC_LIB ${PARQUET_LIBS}/${PARQUET_LIB_NAME}.a)
+ set(PARQUET_SHARED_LIB ${PARQUET_LIBS}/${PARQUET_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
+else ()
+ set(PARQUET_FOUND FALSE)
+endif ()
+
+if (PARQUET_INCLUDE_DIR AND PARQUET_ARROW_LIBRARIES)
+ set(PARQUET_ARROW_FOUND TRUE)
+ get_filename_component(PARQUET_ARROW_LIBS ${PARQUET_ARROW_LIBRARIES} PATH)
+ set(PARQUET_ARROW_LIB_NAME libparquet_arrow)
+ set(PARQUET_ARROW_STATIC_LIB
+ ${PARQUET_ARROW_LIBS}/${PARQUET_ARROW_LIB_NAME}.a)
+ set(PARQUET_ARROW_SHARED_LIB
+ ${PARQUET_ARROW_LIBS}/${PARQUET_ARROW_LIB_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
+else ()
+ set(PARQUET_ARROW_FOUND FALSE)
+endif ()
+
+if (PARQUET_FOUND)
+ if (NOT Parquet_FIND_QUIETLY)
+ message(STATUS "Found the Parquet library: ${PARQUET_LIBRARIES}")
+ endif ()
+else ()
+ if (NOT Parquet_FIND_QUIETLY)
+ set(PARQUET_ERR_MSG "Could not find the Parquet library. Looked in ")
+ if ( _parquet_roots )
+ set(PARQUET_ERR_MSG "${PARQUET_ERR_MSG} in ${_parquet_roots}.")
+ else ()
+ set(PARQUET_ERR_MSG "${PARQUET_ERR_MSG} system search paths.")
+ endif ()
+ if (Parquet_FIND_REQUIRED)
+ message(FATAL_ERROR "${PARQUET_ERR_MSG}")
+ else (Parquet_FIND_REQUIRED)
+ message(STATUS "${PARQUET_ERR_MSG}")
+ endif (Parquet_FIND_REQUIRED)
+ endif ()
+endif ()
+
+if (PARQUET_ARROW_FOUND)
+ if (NOT Parquet_FIND_QUIETLY)
+ message(STATUS "Found the Parquet Arrow library: ${PARQUET_ARROW_LIBS}")
+ endif()
+endif()
+
+mark_as_advanced(
+ PARQUET_FOUND
+ PARQUET_INCLUDE_DIR
+ PARQUET_LIBS
+ PARQUET_LIBRARIES
+ PARQUET_STATIC_LIB
+ PARQUET_SHARED_LIB
+
+ PARQUET_ARROW_FOUND
+ PARQUET_ARROW_LIBS
+ PARQUET_ARROW_STATIC_LIB
+ PARQUET_ARROW_SHARED_LIB
+)
http://git-wip-us.apache.org/repos/asf/arrow/blob/73455b56/python/pyarrow/__init__.py
----------------------------------------------------------------------
diff --git a/python/pyarrow/__init__.py b/python/pyarrow/__init__.py
index a42e39c..39ba4c7 100644
--- a/python/pyarrow/__init__.py
+++ b/python/pyarrow/__init__.py
@@ -17,6 +17,14 @@
# flake8: noqa
+from pkg_resources import get_distribution, DistributionNotFound
+try:
+ __version__ = get_distribution(__name__).version
+except DistributionNotFound:
+ # package is not installed
+ pass
+
+
import pyarrow.config
from pyarrow.array import (Array,
@@ -43,5 +51,3 @@ from pyarrow.schema import (null, bool_,
DataType, Field, Schema, schema)
from pyarrow.table import Column, RecordBatch, Table, from_pandas_dataframe
-
-from pyarrow.version import version as __version__
http://git-wip-us.apache.org/repos/asf/arrow/blob/73455b56/python/setup.cfg
----------------------------------------------------------------------
diff --git a/python/setup.cfg b/python/setup.cfg
new file mode 100644
index 0000000..caae3e0
--- /dev/null
+++ b/python/setup.cfg
@@ -0,0 +1,20 @@
+# 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.
+
+[build_sphinx]
+source-dir = doc/
+build-dir = doc/_build
http://git-wip-us.apache.org/repos/asf/arrow/blob/73455b56/python/setup.py
----------------------------------------------------------------------
diff --git a/python/setup.py b/python/setup.py
index 5f448f7..2e595e2 100644
--- a/python/setup.py
+++ b/python/setup.py
@@ -42,27 +42,9 @@ is_64_bit = sys.maxsize > 2**32
if Cython.__version__ < '0.19.1':
raise Exception('Please upgrade to Cython 0.19.1 or newer')
-VERSION = '0.1.0'
-ISRELEASED = False
-
-if not ISRELEASED:
- VERSION += '.dev'
-
setup_dir = os.path.abspath(os.path.dirname(__file__))
-def write_version_py(filename=os.path.join(setup_dir, 'pyarrow/version.py')):
- a = open(filename, 'w')
- file_content = "\n".join(["",
- "# THIS FILE IS GENERATED FROM SETUP.PY",
- "version = '%(version)s'",
- "isrelease = '%(isrelease)s'"])
-
- a.write(file_content % {'version': VERSION,
- 'isrelease': str(ISRELEASED)})
- a.close()
-
-
class clean(_clean):
def run(self):
@@ -272,15 +254,23 @@ class build_ext(_build_ext):
return [self._get_cmake_ext_path(name)
for name in self.get_names()]
-write_version_py()
-
DESC = """\
Python library for Apache Arrow"""
+# In the case of a git-archive, we don't have any version information
+# from the SCM to infer a version. The only source is the java/pom.xml.
+#
+# Note that this is only the case for git-archives. sdist tarballs have
+# all relevant information (but not the Java sources).
+if not os.path.exists('../.git') and os.path.exists('../java/pom.xml'):
+ import xml.etree.ElementTree as ET
+ tree = ET.parse('../java/pom.xml')
+ version_tag = list(tree.getroot().findall('{http://maven.apache.org/POM/4.0.0}version'))[0]
+ os.environ["SETUPTOOLS_SCM_PRETEND_VERSION"] = version_tag.text.replace("-SNAPSHOT", "a0")
+
setup(
name="pyarrow",
packages=['pyarrow', 'pyarrow.tests'],
- version=VERSION,
zip_safe=False,
package_data={'pyarrow': ['*.pxd', '*.pyx']},
# Dummy extension to trigger build_ext
@@ -290,6 +280,8 @@ setup(
'clean': clean,
'build_ext': build_ext
},
+ use_scm_version = {"root": "..", "relative_to": __file__},
+ setup_requires=['setuptools_scm'],
install_requires=['cython >= 0.23', 'numpy >= 1.9', 'six >= 1.0.0'],
description=DESC,
license='Apache License, Version 2.0',