Skip to content

Commit 4fb3b02

Browse files
committed
Merge remote-tracking branch 'upstream/main'
2 parents 4c1e6e0 + 57a50fa commit 4fb3b02

File tree

10 files changed

+254
-9
lines changed

10 files changed

+254
-9
lines changed

.github/workflows/dev.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,6 @@ jobs:
2929
- name: Setup Python
3030
uses: actions/setup-python@v6
3131
with:
32-
python-version: "3.10"
32+
python-version: "3.14"
3333
- name: Audit licenses
3434
run: ./dev/release/run-rat.sh .
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
18+
name: Verify Release Candidate
19+
20+
# NOTE: This workflow is intended to be run manually via workflow_dispatch.
21+
22+
on:
23+
workflow_dispatch:
24+
inputs:
25+
version:
26+
description: Version number (e.g., 52.0.0)
27+
required: true
28+
type: string
29+
rc_number:
30+
description: Release candidate number (e.g., 0)
31+
required: true
32+
type: string
33+
34+
concurrency:
35+
group: ${{ github.repository }}-${{ github.ref }}-${{ github.workflow }}
36+
cancel-in-progress: true
37+
38+
jobs:
39+
verify:
40+
name: Verify RC (${{ matrix.os }}-${{ matrix.arch }})
41+
strategy:
42+
fail-fast: false
43+
matrix:
44+
include:
45+
# Linux
46+
- os: linux
47+
arch: x64
48+
runner: ubuntu-latest
49+
- os: linux
50+
arch: arm64
51+
runner: ubuntu-24.04-arm
52+
53+
# macOS
54+
- os: macos
55+
arch: arm64
56+
runner: macos-latest
57+
- os: macos
58+
arch: x64
59+
runner: macos-15-intel
60+
61+
# Windows
62+
- os: windows
63+
arch: x64
64+
runner: windows-latest
65+
runs-on: ${{ matrix.runner }}
66+
steps:
67+
- name: Checkout repository
68+
uses: actions/checkout@v6
69+
70+
- name: Set up protoc
71+
uses: arduino/setup-protoc@v3
72+
with:
73+
version: "27.4"
74+
repo-token: ${{ secrets.GITHUB_TOKEN }}
75+
76+
- name: Run release candidate verification
77+
shell: bash
78+
run: ./dev/release/verify-release-candidate.sh "${{ inputs.version }}" "${{ inputs.rc_number }}"

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
[package]
1919
name = "datafusion-python"
20-
version = "51.0.0"
20+
version = "52.0.0"
2121
homepage = "https://datafusion.apache.org/python"
2222
repository = "https://github.com/apache/datafusion-python"
2323
authors = ["Apache DataFusion <dev@datafusion.apache.org>"]

dev/changelog/52.0.0.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<!--
2+
Licensed to the Apache Software Foundation (ASF) under one
3+
or more contributor license agreements. See the NOTICE file
4+
distributed with this work for additional information
5+
regarding copyright ownership. The ASF licenses this file
6+
to you under the Apache License, Version 2.0 (the
7+
"License"); you may not use this file except in compliance
8+
with the License. You may obtain a copy of the License at
9+
10+
http://www.apache.org/licenses/LICENSE-2.0
11+
12+
Unless required by applicable law or agreed to in writing,
13+
software distributed under the License is distributed on an
14+
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15+
KIND, either express or implied. See the License for the
16+
specific language governing permissions and limitations
17+
under the License.
18+
-->
19+
20+
# Apache DataFusion Python 52.0.0 Changelog
21+
22+
This release consists of 26 commits from 9 contributors. See credits at the end of this changelog for more information.
23+
24+
**Implemented enhancements:**
25+
26+
- feat: add CatalogProviderList support [#1363](https://github.com/apache/datafusion-python/pull/1363) (timsaucer)
27+
- feat: add support for generating JSON formatted substrait plan [#1376](https://github.com/apache/datafusion-python/pull/1376) (Prathamesh9284)
28+
- feat: add regexp_instr function [#1382](https://github.com/apache/datafusion-python/pull/1382) (mesejo)
29+
30+
**Fixed bugs:**
31+
32+
- fix: mangled errors [#1377](https://github.com/apache/datafusion-python/pull/1377) (mesejo)
33+
34+
**Documentation updates:**
35+
36+
- docs: Clarify first_value usage in select vs aggregate [#1348](https://github.com/apache/datafusion-python/pull/1348) (AdMub)
37+
38+
**Other:**
39+
40+
- Release 51.0.0 [#1333](https://github.com/apache/datafusion-python/pull/1333) (timsaucer)
41+
- Use explicit timer in unit test [#1338](https://github.com/apache/datafusion-python/pull/1338) (timsaucer)
42+
- Add use_fabric_endpoint parameter to MicrosoftAzure class [#1357](https://github.com/apache/datafusion-python/pull/1357) (djouallah)
43+
- Prepare for DF52 release [#1337](https://github.com/apache/datafusion-python/pull/1337) (timsaucer)
44+
- build(deps): bump actions/checkout from 5 to 6 [#1310](https://github.com/apache/datafusion-python/pull/1310) (dependabot[bot])
45+
- build(deps): bump actions/download-artifact from 5 to 7 [#1321](https://github.com/apache/datafusion-python/pull/1321) (dependabot[bot])
46+
- build(deps): bump actions/upload-artifact from 4 to 6 [#1322](https://github.com/apache/datafusion-python/pull/1322) (dependabot[bot])
47+
- build(deps): bump actions/cache from 4 to 5 [#1323](https://github.com/apache/datafusion-python/pull/1323) (dependabot[bot])
48+
- Pass Field information back and forth when using scalar UDFs [#1299](https://github.com/apache/datafusion-python/pull/1299) (timsaucer)
49+
- Update dependency minor versions to prepare for DF52 release [#1368](https://github.com/apache/datafusion-python/pull/1368) (timsaucer)
50+
- Improve displayed error by using `DataFusionError`'s `Display` trait [#1370](https://github.com/apache/datafusion-python/pull/1370) (abey79)
51+
- Enforce DataFrame display memory limits with `max_rows` + `min_rows` constraint (deprecate `repr_rows`) [#1367](https://github.com/apache/datafusion-python/pull/1367) (kosiew)
52+
- Implement all CSV reader options [#1361](https://github.com/apache/datafusion-python/pull/1361) (timsaucer)
53+
- chore: add confirmation before tarball is released [#1372](https://github.com/apache/datafusion-python/pull/1372) (milenkovicm)
54+
- Build in debug mode for PRs [#1375](https://github.com/apache/datafusion-python/pull/1375) (timsaucer)
55+
- minor: remove ffi test wheel from distribution artifact [#1378](https://github.com/apache/datafusion-python/pull/1378) (timsaucer)
56+
- chore: update rust 2024 edition [#1371](https://github.com/apache/datafusion-python/pull/1371) (timsaucer)
57+
- Fix Python UDAF list-of-timestamps return by enforcing list-valued scalars and caching PyArrow types [#1347](https://github.com/apache/datafusion-python/pull/1347) (kosiew)
58+
- minor: update cargo dependencies [#1383](https://github.com/apache/datafusion-python/pull/1383) (timsaucer)
59+
- chore: bump Python version for RAT checking [#1386](https://github.com/apache/datafusion-python/pull/1386) (timsaucer)
60+
61+
## Credits
62+
63+
Thank you to everyone who contributed to this release. Here is a breakdown of commits (PRs merged) per contributor.
64+
65+
```
66+
13 Tim Saucer
67+
4 dependabot[bot]
68+
2 Daniel Mesejo
69+
2 kosiew
70+
1 Adisa Mubarak (AdMub)
71+
1 Antoine Beyeler
72+
1 Dhanashri Prathamesh Iranna
73+
1 Marko Milenković
74+
1 Mimoune
75+
```
76+
77+
Thank you also to everyone who contributed in other ways such as filing issues, reviewing PRs, and providing feedback on this release.
78+

dev/release/README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,25 @@ This will create a file named `dist/datafusion-0.7.0.tar.gz`. Upload this to tes
154154
python3 -m twine upload --repository testpypi dist/datafusion-0.7.0.tar.gz
155155
```
156156

157+
### Run Verify Release Candidate Workflow
158+
159+
Before sending the vote email, run the manually triggered GitHub Actions workflow
160+
"Verify Release Candidate" and confirm all matrix jobs pass across the OS/architecture matrix
161+
(for example, Linux, macOS, and Windows runners):
162+
163+
1. Go to https://github.com/apache/datafusion-python/actions/workflows/verify-release-candidate.yml
164+
2. Click "Run workflow"
165+
3. Set `version` to the release version (for example, `52.0.0`)
166+
4. Set `rc_number` to the RC number (for example, `0`)
167+
5. Wait for all jobs to complete successfully
168+
169+
Include a short note in the vote email template that this workflow was run across all OS/architecture
170+
matrix entries and that all jobs passed.
171+
172+
```text
173+
Verification note: The manually triggered "Verify Release Candidate" workflow was run for version <VERSION> and rc_number <RC_NUMBER> across all configured OS/architecture matrix entries, and all matrix jobs completed successfully.
174+
```
175+
157176
### Send the Email
158177

159178
Send the email to start the vote.

dev/release/verify-release-candidate.sh

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,17 @@ test_source_distribution() {
112112

113113
curl https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path
114114

115-
export PATH=$RUSTUP_HOME/bin:$PATH
116-
source $RUSTUP_HOME/env
115+
# On Unix, rustup creates an env file. On Windows GitHub runners (MSYS bash),
116+
# that file may not exist, so fall back to adding Cargo bin directly.
117+
if [ -f "$CARGO_HOME/env" ]; then
118+
# shellcheck disable=SC1090
119+
source "$CARGO_HOME/env"
120+
elif [ -f "$RUSTUP_HOME/env" ]; then
121+
# shellcheck disable=SC1090
122+
source "$RUSTUP_HOME/env"
123+
else
124+
export PATH="$CARGO_HOME/bin:$PATH"
125+
fi
117126

118127
# build and test rust
119128

@@ -126,10 +135,20 @@ test_source_distribution() {
126135
git clone https://github.com/apache/parquet-testing.git parquet-testing
127136

128137
python3 -m venv .venv
129-
source .venv/bin/activate
130-
python3 -m pip install -U pip
131-
python3 -m pip install -U maturin
132-
maturin develop
138+
if [ -x ".venv/bin/python" ]; then
139+
VENV_PYTHON=".venv/bin/python"
140+
elif [ -x ".venv/Scripts/python.exe" ]; then
141+
VENV_PYTHON=".venv/Scripts/python.exe"
142+
elif [ -x ".venv/Scripts/python" ]; then
143+
VENV_PYTHON=".venv/Scripts/python"
144+
else
145+
echo "Unable to find python executable in virtual environment"
146+
exit 1
147+
fi
148+
149+
"$VENV_PYTHON" -m pip install -U pip
150+
"$VENV_PYTHON" -m pip install -U maturin
151+
"$VENV_PYTHON" -m maturin develop
133152

134153
#TODO: we should really run tests here as well
135154
#python3 -m pytest

examples/datafusion-ffi-example/src/utils.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
// Licensed to the Apache Software Foundation (ASF) under one
2+
// or more contributor license agreements. See the NOTICE file
3+
// distributed with this work for additional information
4+
// regarding copyright ownership. The ASF licenses this file
5+
// to you under the Apache License, Version 2.0 (the
6+
// "License"); you may not use this file except in compliance
7+
// with the License. You may obtain a copy of the License at
8+
//
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
//
11+
// Unless required by applicable law or agreed to in writing,
12+
// software distributed under the License is distributed on an
13+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
// KIND, either express or implied. See the License for the
15+
// specific language governing permissions and limitations
16+
// under the License.
17+
118
use datafusion_ffi::proto::logical_extension_codec::FFI_LogicalExtensionCodec;
219
use pyo3::exceptions::PyValueError;
320
use pyo3::prelude::{PyAnyMethods, PyCapsuleMethods};

python/tests/test_udtf.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
# Licensed to the Apache Software Foundation (ASF) under one
2+
# or more contributor license agreements. See the NOTICE file
3+
# distributed with this work for additional information
4+
# regarding copyright ownership. The ASF licenses this file
5+
# to you under the Apache License, Version 2.0 (the
6+
# "License"); you may not use this file except in compliance
7+
# with the License. You may obtain a copy of the License at
8+
#
9+
# http://www.apache.org/licenses/LICENSE-2.0
10+
#
11+
# Unless required by applicable law or agreed to in writing,
12+
# software distributed under the License is distributed on an
13+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
# KIND, either express or implied. See the License for the
15+
# specific language governing permissions and limitations
16+
# under the License.
17+
118
import pyarrow as pa
219
import pyarrow.dataset as ds
320
from datafusion import Expr, SessionContext, Table, udtf

src/options.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
1+
// Licensed to the Apache Software Foundation (ASF) under one
2+
// or more contributor license agreements. See the NOTICE file
3+
// distributed with this work for additional information
4+
// regarding copyright ownership. The ASF licenses this file
5+
// to you under the Apache License, Version 2.0 (the
6+
// "License"); you may not use this file except in compliance
7+
// with the License. You may obtain a copy of the License at
8+
//
9+
// http://www.apache.org/licenses/LICENSE-2.0
10+
//
11+
// Unless required by applicable law or agreed to in writing,
12+
// software distributed under the License is distributed on an
13+
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14+
// KIND, either express or implied. See the License for the
15+
// specific language governing permissions and limitations
16+
// under the License.
17+
118
use arrow::datatypes::{DataType, Schema};
219
use arrow::pyarrow::PyArrowType;
320
use datafusion::prelude::CsvReadOptions;

0 commit comments

Comments
 (0)