Skip to content

Commit df31c62

Browse files
authored
Merge branch 'main' into ctty/sort-partition
2 parents 53f785c + a667539 commit df31c62

File tree

201 files changed

+29367
-13635
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

201 files changed

+29367
-13635
lines changed

.asf.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ github:
4040

4141
required_pull_request_reviews:
4242
required_approving_review_count: 1
43-
dismiss_stale_reviews: true
43+
dismiss_stale_reviews: false
4444

4545
required_linear_history: true
4646
del_branch_on_merge: true
@@ -52,12 +52,15 @@ github:
5252
collaborators:
5353
- JanKaul
5454
- c-thiel
55+
- mbutrovich
56+
- CTTY
5557
ghp_branch: gh-pages
5658
ghp_path: /
5759

5860
notifications:
5961
6062
6163
pullrequests: [email protected]
64+
6265
jira_options: link label link label
6366
discussions: [email protected]

.github/ISSUE_TEMPLATE/iceberg_bug_report.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ body:
2828
description: What Apache Iceberg Rust version are you using?
2929
multiple: false
3030
options:
31-
- 0.5.1 (latest version)
31+
- 0.6.0 (latest version)
32+
- 0.5.1
3233
- 0.4.0
3334
- 0.3.0
3435
- 0.2.0

.github/actions/overwrite-package-version/action.yml

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,24 @@ runs:
3838
env:
3939
TIMESTAMP: ${{ inputs.timestamp }}
4040
run: |
41-
CURRENT_VERSION=$(python -c "import toml; print(toml.load('bindings/python/pyproject.toml')['project']['version'])")
42-
NEW_VERSION="${CURRENT_VERSION}.dev${TIMESTAMP}"
43-
NEW_VERSION=$NEW_VERSION python -c "
41+
# Read the current version from the Rust crate's Cargo.toml
42+
CURRENT_VERSION=$(python -c "import toml; print(toml.load('bindings/python/Cargo.toml')['package']['version'])")
43+
export NEW_VERSION="${CURRENT_VERSION}.dev${TIMESTAMP}"
44+
echo "Current version: ${CURRENT_VERSION}"
45+
echo "New dev version: ${NEW_VERSION}"
46+
47+
# Update bindings/python/pyproject.toml:
48+
# - Set project.version = NEW_VERSION
49+
# - Ensure 'version' is not listed in project.dynamic
50+
python -c "
4451
import toml
4552
import os
4653
config = toml.load('bindings/python/pyproject.toml')
47-
config['project']['version'] = os.environ['NEW_VERSION']
54+
new_version = os.environ['NEW_VERSION']
55+
config['project']['version'] = new_version
56+
if 'dynamic' in config['project']:
57+
config['project']['dynamic'] = [v for v in config['project']['dynamic'] if v != 'version']
4858
with open('bindings/python/pyproject.toml', 'w') as f:
4959
toml.dump(config, f)
50-
print(f'Updated version to: {config[\"project\"][\"version\"]}')
60+
print(f'Updated version to: {new_version}')
5161
"

.github/workflows/bindings_python_ci.yml

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,19 @@ on:
2222
branches:
2323
- main
2424
pull_request:
25-
branches:
26-
- main
25+
paths:
26+
- '**' # Include all files and directories in the repository by default.
27+
- '!.github/ISSUE_TEMPLATE/**' # Exclude files and directories that don't impact tests or code like templates, metadata, and documentation.
28+
- '!scripts/**'
29+
- '!website/**'
30+
- '!.asf.yml'
31+
- '!.gitattributes'
32+
- '!.gitignore'
33+
- '!CONTRIBUTING.md'
34+
- '!CHANGELOG.md'
35+
- '!LICENSE'
36+
- '!NOTICE'
37+
- '!README.md'
2738

2839
concurrency:
2940
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
@@ -45,17 +56,21 @@ jobs:
4556
runs-on: ubuntu-latest
4657
steps:
4758
- uses: actions/checkout@v5
59+
- uses: astral-sh/setup-uv@v7
60+
with:
61+
version: "0.9.3"
62+
enable-cache: true
4863
- name: Install tools
4964
run: |
50-
pip install ruff
65+
uv tool install ruff
5166
- name: Check format
5267
working-directory: "bindings/python"
5368
run: |
54-
ruff format . --diff
69+
uvx ruff format . --diff
5570
- name: Check style
5671
working-directory: "bindings/python"
5772
run: |
58-
ruff check .
73+
uvx ruff check .
5974
6075
test:
6176
runs-on: ${{ matrix.os }}
@@ -67,19 +82,30 @@ jobs:
6782
- windows-latest
6883
steps:
6984
- uses: actions/checkout@v5
70-
- uses: actions/setup-python@v5
85+
- uses: actions/setup-python@v6
7186
with:
72-
python-version: 3.9
87+
python-version: 3.12
7388
- uses: PyO3/maturin-action@v1
7489
with:
7590
working-directory: "bindings/python"
7691
command: build
7792
args: --out dist --sdist
93+
- uses: astral-sh/setup-uv@v7
94+
with:
95+
version: "0.9.3"
96+
enable-cache: true
97+
- name: Sync dependencies
98+
working-directory: "bindings/python"
99+
shell: bash
100+
run: |
101+
make install
102+
- name: Install built wheel
103+
working-directory: "bindings/python"
104+
shell: bash
105+
run: |
106+
uv pip install --reinstall dist/pyiceberg_core-*.whl
78107
- name: Run tests
79108
working-directory: "bindings/python"
80109
shell: bash
81110
run: |
82-
set -e
83-
pip install hatch==1.12.0
84-
hatch run dev:pip install dist/pyiceberg_core-*.whl --force-reinstall
85-
hatch run dev:test
111+
make test

.github/workflows/ci.yml

Lines changed: 60 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,26 @@ on:
2222
branches:
2323
- main
2424
pull_request:
25-
branches:
26-
- main
25+
paths:
26+
- '**' # Include all files and directories in the repository by default.
27+
- '!.github/ISSUE_TEMPLATE/**' # Exclude files and directories that don't impact tests or code like templates, metadata, and documentation.
28+
- '!scripts/**'
29+
- '!website/**'
30+
- '!.asf.yml'
31+
- '!.gitattributes'
32+
- '!.gitignore'
33+
- '!CONTRIBUTING.md'
34+
- '!CHANGELOG.md'
35+
- '!LICENSE'
36+
- '!NOTICE'
37+
- '!README.md'
2738

2839
concurrency:
2940
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
3041
cancel-in-progress: true
3142

3243
env:
33-
rust_msrv: "1.85.0"
44+
rust_msrv: "1.87"
3445

3546
jobs:
3647
check:
@@ -47,15 +58,16 @@ jobs:
4758
uses: ./.github/actions/setup-builder
4859

4960
- name: Check License Header
50-
uses: apache/skywalking-eyes/header@v0.7.0
61+
uses: apache/skywalking-eyes/header@v0.8.0
5162

52-
- name: Install taplo-cli
53-
uses: taiki-e/install-action@v2
54-
with:
55-
5663
- name: Check toml format
5764
run: make check-toml
5865

66+
- name: Install protoc
67+
uses: arduino/setup-protoc@v3
68+
with:
69+
repo-token: ${{ secrets.GITHUB_TOKEN }}
70+
5971
- name: Cargo format
6072
run: make check-fmt
6173

@@ -65,12 +77,8 @@ jobs:
6577
- name: Cargo clippy
6678
run: make check-clippy
6779

68-
- name: Install cargo-machete
69-
uses: taiki-e/install-action@v2
70-
with:
71-
tool: cargo-machete
7280
- name: Cargo Machete
73-
run: cargo machete
81+
run: make cargo-machete
7482

7583
build:
7684
runs-on: ${{ matrix.os }}
@@ -81,6 +89,18 @@ jobs:
8189
- macos-latest
8290
- windows-latest
8391
steps:
92+
- name: Maximize build space (Ubuntu)
93+
if: matrix.os == 'ubuntu-latest'
94+
uses: easimon/maximize-build-space@master
95+
with:
96+
remove-dotnet: "true"
97+
remove-android: "true"
98+
remove-haskell: "true"
99+
remove-codeql: "true"
100+
remove-docker-images: "true"
101+
root-reserve-mb: 10240
102+
temp-reserve-mb: 10240
103+
84104
- uses: actions/checkout@v5
85105

86106
- name: Setup Rust toolchain
@@ -89,6 +109,11 @@ jobs:
89109
- name: Cache Rust artifacts
90110
uses: Swatinem/rust-cache@v2
91111

112+
- name: Install protoc
113+
uses: arduino/setup-protoc@v3
114+
with:
115+
repo-token: ${{ secrets.GITHUB_TOKEN }}
116+
92117
- name: Build
93118
run: make build
94119

@@ -114,6 +139,13 @@ jobs:
114139

115140
unit:
116141
runs-on: ubuntu-latest
142+
strategy:
143+
matrix:
144+
test-suite:
145+
- { name: "default", args: "--all-targets --all-features --workspace" }
146+
- { name: "smol", args: "--all-targets --no-default-features --features smol --features storage-all --workspace" }
147+
- { name: "doc", args: "--doc --all-features --workspace" }
148+
name: Unit Tests (${{ matrix.test-suite.name }})
117149
steps:
118150
- name: Maximize build space
119151
uses: easimon/maximize-build-space@master
@@ -131,32 +163,33 @@ jobs:
131163
- name: Setup Rust toolchain
132164
uses: ./.github/actions/setup-builder
133165

166+
- name: Install protoc
167+
uses: arduino/setup-protoc@v3
168+
with:
169+
repo-token: ${{ secrets.GITHUB_TOKEN }}
170+
134171
- name: Cache Rust artifacts
135172
uses: Swatinem/rust-cache@v2
173+
with:
174+
key: ${{ matrix.test-suite.name }}
136175

137176
- name: Test
138-
run: cargo test --no-fail-fast --all-targets --all-features --workspace
139-
140-
- name: Async-std Test
141-
run: cargo test --no-fail-fast --all-targets --no-default-features --features "async-std" --features "storage-all" --workspace
142-
143-
- name: Doc Test
144-
run: cargo test --no-fail-fast --doc --all-features --workspace
177+
run: cargo test --no-fail-fast ${{ matrix.test-suite.args }}
145178

146179
msrv:
147180
name: Verify MSRV
148181
runs-on: ubuntu-latest
149182
steps:
150183
- uses: actions/checkout@v5
151-
- name: Setup Nightly Rust toolchain
152-
uses: ./.github/actions/setup-builder
153-
- name: Generate minimal versions lockfile
154-
run: |
155-
cargo generate-lockfile -Z direct-minimal-versions -Z minimal-versions
184+
- name: Install protoc
185+
uses: arduino/setup-protoc@v3
186+
with:
187+
repo-token: ${{ secrets.GITHUB_TOKEN }}
156188
- name: Setup MSRV Rust toolchain
157189
uses: ./.github/actions/setup-builder
158190
with:
159191
rust-version: ${{ env.rust_msrv }}
192+
- name: Setup Nightly Rust toolchain
193+
uses: ./.github/actions/setup-builder
160194
- name: Check MSRV
161-
run: |
162-
cargo +${{ env.rust_msrv }} check --locked --workspace
195+
run: make check-msrv

.github/workflows/ci_typos.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,4 @@ jobs:
4242
steps:
4343
- uses: actions/checkout@v5
4444
- name: Check typos
45-
uses: crate-ci/typos@v1.35.4
45+
uses: crate-ci/typos@v1.39.2

.github/workflows/publish.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ on:
2727
workflow_dispatch:
2828

2929
env:
30-
rust_msrv: "1.85"
30+
rust_msrv: "1.87"
3131

3232
jobs:
3333
publish:

.github/workflows/release_python.yml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ on:
2525
workflow_dispatch:
2626

2727
env:
28-
rust_msrv: "1.85"
28+
rust_msrv: "1.87"
2929

3030
concurrency:
3131
group: ${{ github.workflow }}-${{ github.event.workflow_run.head_branch }}-${{ github.event_name }}
@@ -107,7 +107,7 @@ jobs:
107107
command: sdist
108108
args: -o dist
109109
- name: Upload sdist
110-
uses: actions/upload-artifact@v4
110+
uses: actions/upload-artifact@v5
111111
with:
112112
name: wheels-sdist
113113
path: bindings/python/dist
@@ -144,9 +144,9 @@ jobs:
144144
rm Cargo.toml
145145
mv Cargo.toml.tmp Cargo.toml
146146
147-
- uses: actions/setup-python@v5
147+
- uses: actions/setup-python@v6
148148
with:
149-
python-version: 3.9
149+
python-version: 3.12
150150
- name: Setup Rust toolchain
151151
uses: ./.github/actions/setup-builder
152152
with:
@@ -159,7 +159,7 @@ jobs:
159159
command: build
160160
args: --release -o dist
161161
- name: Upload wheels
162-
uses: actions/upload-artifact@v4
162+
uses: actions/upload-artifact@v5
163163
with:
164164
name: wheels-${{ matrix.os }}-${{ matrix.target }}
165165
path: bindings/python/dist
@@ -178,14 +178,14 @@ jobs:
178178

179179
steps:
180180
- name: Download all the dists
181-
uses: actions/download-artifact@v5
181+
uses: actions/download-artifact@v6
182182
with:
183183
pattern: wheels-*
184184
merge-multiple: true
185185
path: bindings/python/dist
186186
- name: Publish to PyPI
187187
uses: pypa/gh-action-pypi-publish@release/v1
188-
189188
with:
190189
skip-existing: true
191190
packages-dir: bindings/python/dist
191+
verbose: true

0 commit comments

Comments
 (0)