Files
datafusion/ci/scripts/python_build.sh
T
Zhuo Peng fcf51041ae ARROW-7362: [Python][C++] Added ListArray.Flatten() that properly flattens a ListArray
Currently ListArray.flatten() simply returns the child array. If a ListArray is a slice of another ListArray, they will share the same child array, however the expected behavior (I think) of flatten() should be returning an Array that's a concatenation of all the sub-lists in the ListArray, so the slicing offset should be taken into account.

For example:
```python
a = pa.array([[1], [2], [3]])

assert a.flatten().equals(pa.array([1,2,3]))

# expected:
a.slice(1).flatten().equals(pa.array([2, 3]))
```

Closes #6006 from brills/flatten and squashes the following commits:

4702f59da <Antoine Pitrou> Improve implementation characteristics
d14210dc4 <Antoine Pitrou> Address review comments, add a test for non-canonical list arrays
c789812d0 <Antoine Pitrou> Fix git merge error
7d0b864bf <Antoine Pitrou> Fix typo + print out conda env in conda docker builds
5f3650f90 <Zhuo Peng> comments
6aa3181b8 <Zhuo Peng> Take care of nulls correctly.
3c8746241 <Zhuo Peng> Also changed the python wrapper.
a3d4d2fbb <Zhuo Peng> Added a C++ method Flatten() to ListArray.

Lead-authored-by: Zhuo Peng <1835738+brills@users.noreply.github.com>
Co-authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
2019-12-18 17:57:32 +01:00

55 lines
1.9 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# 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.
set -ex
source_dir=${1}/python
build_dir=${2}/python
if [ ! -z "${CONDA_PREFIX}" ]; then
echo -e "===\n=== Conda environment for build\n==="
conda list
fi
export PYARROW_CMAKE_GENERATOR=${CMAKE_GENERATOR:-Ninja}
export PYARROW_BUILD_TYPE=${CMAKE_BUILD_TYPE:-debug}
export PYARROW_WITH_S3=${ARROW_S3:-OFF}
export PYARROW_WITH_ORC=${ARROW_ORC:-OFF}
export PYARROW_WITH_CUDA=${ARROW_CUDA:-OFF}
export PYARROW_WITH_HDFS=${ARROW_HDFS:-OFF}
export PYARROW_WITH_FLIGHT=${ARROW_FLIGHT:-OFF}
export PYARROW_WITH_PLASMA=${ARROW_PLASMA:-OFF}
export PYARROW_WITH_GANDIVA=${ARROW_GANDIVA:-OFF}
export PYARROW_WITH_PARQUET=${ARROW_PARQUET:-OFF}
export PYARROW_WITH_DATASET=${ARROW_DATASET:-OFF}
export LD_LIBRARY_PATH=${ARROW_HOME}/lib:${LD_LIBRARY_PATH}
pushd ${source_dir}
relative_build_dir=$(realpath --relative-to=. $build_dir)
# not nice, but prevents mutating the mounted the source directory for docker
${PYTHON:-python} \
setup.py build --build-base $build_dir \
install --single-version-externally-managed \
--record $relative_build_dir/record.txt
popd