Skip to content

Commit 8971053

Browse files
authored
Merge branch 'main' into dont-materialize
2 parents c8b7687 + c5c0993 commit 8971053

File tree

182 files changed

+20837
-13466
lines changed

Some content is hidden

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

182 files changed

+20837
-13466
lines changed

.asf.yaml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ github:
4242
required_approving_review_count: 1
4343

4444
required_linear_history: true
45-
del_branch_on_merge: true
45+
pull_requests:
46+
# auto-delete head branches after being merged
47+
del_branch_on_merge: true
4648
features:
4749
wiki: true
4850
issues: true
@@ -57,4 +59,5 @@ notifications:
5759
commits: commits@iceberg.apache.org
5860
issues: issues@iceberg.apache.org
5961
pullrequests: issues@iceberg.apache.org
62+
jobs: ci-jobs@iceberg.apache.org
6063
jira_options: link label link label

.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 version are you using?
2929
multiple: false
3030
options:
31-
- "0.10.0 (latest release)"
31+
- "0.11.0 (latest release)"
32+
- "0.10.0"
3233
- "0.9.1"
3334
- "0.9.0"
3435
- "0.8.1"

.github/dependabot.yml

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

2020
version: 2
2121
updates:
22-
- package-ecosystem: "pip"
22+
- package-ecosystem: "uv"
2323
directory: "/"
2424
schedule:
2525
interval: "weekly"

.github/workflows/check-md-link.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,14 @@ on:
3030
paths:
3131
- '.github/workflows/check-md-link.yml'
3232
- 'mkdocs/**'
33+
workflow_dispatch:
34+
35+
permissions:
36+
contents: read
3337

3438
jobs:
3539
markdown-link-check:
3640
runs-on: ubuntu-latest
3741
steps:
3842
- uses: actions/checkout@master
39-
- uses: tcort/github-action-markdown-link-check@v1
43+
- uses: tcort/github-action-markdown-link-check@e7c7a18363c842693fadde5d41a3bd3573a7a225

.github/workflows/codeql.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
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+
name: "CodeQL"
21+
22+
on:
23+
push:
24+
branches: [ "main" ]
25+
pull_request:
26+
branches: [ "main" ]
27+
schedule:
28+
- cron: '16 4 * * 1'
29+
30+
permissions:
31+
contents: read
32+
33+
jobs:
34+
analyze:
35+
name: Analyze Actions
36+
runs-on: ubuntu-slim
37+
permissions:
38+
contents: read
39+
security-events: write
40+
packages: read
41+
42+
steps:
43+
- name: Checkout repository
44+
uses: actions/checkout@v6
45+
46+
- name: Initialize CodeQL
47+
uses: github/codeql-action/init@v4
48+
with:
49+
languages: actions
50+
51+
- name: Perform CodeQL Analysis
52+
uses: github/codeql-action/analyze@v4
53+
with:
54+
category: "/language:actions"

.github/workflows/license_check.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,12 @@
2020
name: "Run License Check"
2121
on: pull_request
2222

23+
permissions:
24+
contents: read
25+
2326
jobs:
2427
rat:
2528
runs-on: ubuntu-latest
2629
steps:
27-
- uses: actions/checkout@v5
30+
- uses: actions/checkout@v6
2831
- run: dev/check-license

.github/workflows/nightly-pypi-build.yml

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,28 +24,31 @@ on:
2424
- cron: "0 0 * * *" # Runs at midnight UTC every day
2525
workflow_dispatch: # Allows manual triggering
2626

27+
permissions:
28+
contents: read
29+
2730
jobs:
2831
set-version:
2932
if: github.repository == 'apache/iceberg-python' # Only run for apache repo
3033
runs-on: ubuntu-latest
3134
outputs:
3235
VERSION: ${{ steps.set-version.outputs.VERSION }}
3336
steps:
34-
- uses: actions/checkout@v5
37+
- uses: actions/checkout@v6
3538
with:
3639
fetch-depth: 1
3740

3841
- uses: actions/setup-python@v6
3942
with:
4043
python-version: 3.12
4144

42-
- name: Install Poetry
43-
run: make install-poetry
45+
- name: Install UV
46+
uses: astral-sh/setup-uv@v7
4447

4548
- name: Set version
4649
id: set-version
4750
run: |
48-
CURRENT_VERSION=$(poetry version --short)
51+
CURRENT_VERSION=$(uv version --short)
4952
TIMESTAMP=$(date +%Y%m%d%H%M%S)
5053
echo "VERSION=${CURRENT_VERSION}.dev${TIMESTAMP}" >> "$GITHUB_OUTPUT"
5154
@@ -71,15 +74,42 @@ jobs:
7174

7275
steps:
7376
- name: Download all the artifacts
74-
uses: actions/download-artifact@v6
77+
uses: actions/download-artifact@v8
7578
with:
7679
merge-multiple: true
7780
path: dist/
7881
- name: List downloaded artifacts
7982
run: ls -R dist/
8083
- name: Publish to TestPyPI
84+
id: publish-testpypi
85+
continue-on-error: true
8186
uses: pypa/gh-action-pypi-publish@release/v1
8287
with:
8388
repository-url: https://test.pypi.org/legacy/
8489
skip-existing: true
8590
verbose: true
91+
- name: Display error message on publish failure
92+
if: steps.publish-testpypi.outcome == 'failure'
93+
run: |
94+
echo "::error::Failed to publish to TestPyPI"
95+
echo ""
96+
echo "⚠️ TestPyPI Publish Failed"
97+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
98+
echo ""
99+
echo "This may be due to TestPyPI storage limits."
100+
echo "See: https://docs.pypi.org/project-management/storage-limits"
101+
echo ""
102+
echo "To resolve this issue, use the pypi-cleanup utility to clean up old TestPyPI artifacts:"
103+
echo "https://pypi.org/project/pypi-cleanup/"
104+
echo ""
105+
echo " uvx pypi-cleanup --package pyiceberg --host https://test.pypi.org/ \\"
106+
echo " --verbose -d 10 --do-it --username <username>"
107+
echo ""
108+
echo "Requirements:"
109+
echo " • Must be a maintainer for pyiceberg on TestPyPI"
110+
echo " (https://test.pypi.org/project/pyiceberg)"
111+
echo " • Requires TestPyPI password and 2FA"
112+
echo " • ⚠️ ONLY do this for TestPyPI, NOT for production PyPI!"
113+
echo ""
114+
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
115+
exit 1

.github/workflows/pypi-build-artifacts.yml

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,20 @@ on:
2626
required: true
2727
type: string
2828

29+
permissions:
30+
contents: read
31+
2932
jobs:
3033
pypi-build-artifacts:
3134
name: Build artifacts for PyPi on ${{ matrix.os }}
3235
runs-on: ${{ matrix.os }}
3336
strategy:
37+
max-parallel: 15
3438
matrix:
35-
os: [ ubuntu-latest, windows-latest, macos-latest ]
39+
os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15-intel, macos-latest ]
3640

3741
steps:
38-
- uses: actions/checkout@v5
42+
- uses: actions/checkout@v6
3943
with:
4044
fetch-depth: 1
4145

@@ -45,38 +49,41 @@ jobs:
4549
3.10
4650
3.11
4751
3.12
52+
3.13
4853
49-
- name: Install poetry
50-
run: make install-poetry
54+
- name: Install UV
55+
uses: astral-sh/setup-uv@v7
5156

5257
- name: Set version with RC
5358
env:
5459
VERSION: ${{ inputs.VERSION }}
55-
run: python -m poetry version "${{ env.VERSION }}"
60+
run: uv version "${{ env.VERSION }}"
5661

5762
# Publish the source distribution with the version that's in
5863
# the repository, otherwise the tests will fail
5964
- name: Compile source distribution
60-
run: python3 -m poetry build --format=sdist
61-
if: startsWith(matrix.os, 'ubuntu')
65+
run: uv build --sdist
66+
if: matrix.os == 'ubuntu-latest'
6267

6368
- name: Build wheels
64-
uses: pypa/cibuildwheel@v3.2.1
69+
uses: pypa/cibuildwheel@v3.3.1
6570
with:
6671
output-dir: wheelhouse
6772
config-file: "pyproject.toml"
6873
env:
6974
# Ignore 32 bit architectures
7075
CIBW_ARCHS: "auto64"
71-
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.10"
72-
CIBW_TEST_REQUIRES: "pytest==7.4.2 moto==5.0.1"
73-
CIBW_TEST_COMMAND: "pytest {project}/tests/avro/test_decoder.py"
74-
# Ignore tests for pypy since not all dependencies are compiled for it
75-
# and would require a local rust build chain
76-
CIBW_TEST_SKIP: "pp*"
76+
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.10,<3.14"
77+
# Keep these in sync with Python CI job `cibw-dev-env-smoke-test`
78+
# in .github/workflows/python-ci.yml to catch import-time regressions early.
79+
CIBW_BEFORE_TEST: "uv sync --directory {project} --only-group dev --no-install-project"
80+
CIBW_TEST_COMMAND: "uv run --directory {project} pytest tests/avro/test_decoder.py"
81+
# Skip free-threaded (PEP 703) builds until we evaluate decoder_fast support
82+
CIBW_SKIP: "cp3*t-*"
83+
7784

7885
- name: Add source distribution
79-
if: startsWith(matrix.os, 'ubuntu')
86+
if: matrix.os == 'ubuntu-latest'
8087
run: ls -lah dist/* && cp dist/* wheelhouse/
8188

8289
- uses: actions/upload-artifact@v4

.github/workflows/python-ci-docs.yml

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,25 @@ on:
2525
- 'main'
2626
pull_request:
2727

28+
permissions:
29+
contents: read
30+
2831

2932
concurrency:
3033
group: ${{ github.workflow }}-${{ github.ref }}
3134
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
3235

3336
jobs:
3437
docs:
35-
runs-on: ubuntu-latest
38+
runs-on: ubuntu-slim
3639

3740
steps:
38-
- uses: actions/checkout@v5
41+
- uses: actions/checkout@v6
3942
- uses: actions/setup-python@v6
4043
with:
4144
python-version: 3.12
42-
- name: Install poetry
43-
run: make install-poetry
44-
- name: Install
45-
run: make docs-install
45+
- name: Install UV
46+
uses: astral-sh/setup-uv@v7
4647
- name: Build docs
4748
run: make docs-build
4849
- name: Run linters

0 commit comments

Comments
 (0)