Skip to content

Commit c9f7c2b

Browse files
committed
Merge branch 'main' into feature/write-to-branch
2 parents 076a6d5 + 62ad2ca commit c9f7c2b

File tree

164 files changed

+18159
-7860
lines changed

Some content is hidden

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

164 files changed

+18159
-7860
lines changed

.asf.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,15 @@ github:
3434
rebase: true
3535
protected_branches:
3636
main:
37+
required_status_checks:
38+
# strict means "Require branches to be up to date before merging".
39+
strict: true
40+
3741
required_pull_request_reviews:
3842
required_approving_review_count: 1
3943

4044
required_linear_history: true
45+
del_branch_on_merge: true
4146
features:
4247
wiki: true
4348
issues: true

mkdocs/requirements.txt renamed to .codespellrc

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,5 @@
1414
# KIND, either express or implied. See the License for the
1515
# specific language governing permissions and limitations
1616
# under the License.
17-
18-
mkdocs==1.6.1
19-
griffe==1.5.1
20-
jinja2==3.1.4
21-
mkdocstrings==0.26.2
22-
mkdocstrings-python==1.12.2
23-
mkdocs-literate-nav==0.6.1
24-
mkdocs-autorefs==1.2.0
25-
mkdocs-gen-files==0.5.0
26-
mkdocs-material==9.5.43
27-
mkdocs-material-extensions==1.3.1
28-
mkdocs-section-index==0.3.9
17+
[codespell]
18+
ignore-words-list = BoundIn,fo,MoR,NotIn,notIn,oT

.github/ISSUE_TEMPLATE/iceberg_bug_report.yml

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
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+
120
---
221
name: Iceberg Bug report 🐞
322
description: Problems, bugs and issues with Apache Iceberg
@@ -9,7 +28,11 @@ body:
928
description: What Apache Iceberg version are you using?
1029
multiple: false
1130
options:
12-
- "0.7.1 (latest release)"
31+
- "0.9.1 (latest release)"
32+
- "0.9.0"
33+
- "0.8.1"
34+
- "0.8.0"
35+
- "0.7.1"
1336
- "0.7.0"
1437
- "0.6.1"
1538
- "0.6.0"
@@ -30,3 +53,11 @@ body:
3053
You can include files by dragging and dropping them here.
3154
validations:
3255
required: true
56+
- type: checkboxes
57+
attributes:
58+
label: Willingness to contribute
59+
description: The Apache Iceberg community encourages bug-fix contributions. Would you or another member of your organization be willing to contribute a fix for this bug to the PyIceberg codebase?
60+
options:
61+
- label: I can contribute a fix for this bug independently
62+
- label: I would be willing to contribute a fix for this bug with guidance from the Iceberg community
63+
- label: I cannot contribute a fix for this bug at this time

.github/ISSUE_TEMPLATE/iceberg_improvement.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
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+
120
---
221
name: Iceberg Improvement / Feature Request
322
description: New features with Apache Iceberg

.github/ISSUE_TEMPLATE/iceberg_question.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
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+
120
---
221
name: Iceberg Question
322
description: Questions around Apache Iceberg

.github/dependabot.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ updates:
2222
- package-ecosystem: "pip"
2323
directory: "/"
2424
schedule:
25-
interval: "daily"
26-
open-pull-requests-limit: 5
25+
interval: "weekly"
26+
open-pull-requests-limit: 50
2727
- package-ecosystem: "github-actions"
2828
directory: "/"
2929
schedule:
30-
interval: "daily"
30+
interval: "weekly"

.github/pull_request_template.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<!--
2+
Thanks for opening a pull request!
3+
-->
4+
5+
<!-- In the case this PR will resolve an issue, please replace ${GITHUB_ISSUE_ID} below with the actual Github issue id. -->
6+
<!-- Closes #${GITHUB_ISSUE_ID} -->
7+
8+
# Rationale for this change
9+
10+
# Are these changes tested?
11+
12+
# Are there any user-facing changes?
13+
14+
<!-- In the case of user-facing changes, please add the changelog label. -->

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

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,35 @@
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+
120
name: Check Markdown links
221

322
on:
423
push:
524
paths:
6-
- mkdocs/**
25+
- '.github/workflows/check-md-link.yml'
26+
- 'mkdocs/**'
727
branches:
828
- 'main'
929
pull_request:
30+
paths:
31+
- '.github/workflows/check-md-link.yml'
32+
- 'mkdocs/**'
1033

1134
jobs:
1235
markdown-link-check:
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
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: "Nightly PyPI Build"
21+
22+
on:
23+
schedule:
24+
- cron: "0 0 * * *" # Runs at midnight UTC every day
25+
workflow_dispatch: # Allows manual triggering
26+
27+
jobs:
28+
set-version:
29+
if: github.repository == 'apache/iceberg-python' # Only run for apache repo
30+
runs-on: ubuntu-latest
31+
outputs:
32+
VERSION: ${{ steps.set-version.outputs.VERSION }}
33+
steps:
34+
- uses: actions/checkout@v4
35+
with:
36+
fetch-depth: 1
37+
38+
- uses: actions/setup-python@v5
39+
with:
40+
python-version: 3.12
41+
42+
- name: Install Poetry
43+
run: make install-poetry
44+
45+
- name: Set version
46+
id: set-version
47+
run: |
48+
CURRENT_VERSION=$(poetry version --short)
49+
TIMESTAMP=$(date +%Y%m%d%H%M%S)
50+
echo "VERSION=${CURRENT_VERSION}.dev${TIMESTAMP}" >> "$GITHUB_OUTPUT"
51+
52+
- name: Debug version
53+
run: echo "Publishing version ${{ steps.set-version.outputs.VERSION }}"
54+
55+
nightly-build:
56+
needs: set-version
57+
uses: ./.github/workflows/pypi-build-artifacts.yml
58+
with:
59+
version: ${{ needs.set-version.outputs.VERSION }}
60+
testpypi-publish:
61+
name: Publish to TestPypi
62+
needs:
63+
- nightly-build
64+
runs-on: ubuntu-latest
65+
environment:
66+
name: testpypi
67+
url: https://test.pypi.org/p/pyiceberg
68+
69+
permissions:
70+
id-token: write # IMPORTANT: mandatory for trusted publishing
71+
72+
steps:
73+
- name: Download all the artifacts
74+
uses: actions/download-artifact@v4
75+
with:
76+
merge-multiple: true
77+
path: dist/
78+
- name: List downloaded artifacts
79+
run: ls -R dist/
80+
- name: Publish to TestPyPI
81+
uses: pypa/gh-action-pypi-publish@release/v1
82+
with:
83+
repository-url: https://test.pypi.org/legacy/
84+
skip-existing: true
85+
verbose: true
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
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: "Build PyPI Artifacts"
21+
22+
on:
23+
workflow_call:
24+
inputs:
25+
VERSION:
26+
required: true
27+
type: string
28+
29+
jobs:
30+
pypi-build-artifacts:
31+
name: Build artifacts for PyPi on ${{ matrix.os }}
32+
runs-on: ${{ matrix.os }}
33+
strategy:
34+
matrix:
35+
os: [ ubuntu-22.04, windows-2022, macos-13, macos-14 ]
36+
37+
steps:
38+
- uses: actions/checkout@v4
39+
with:
40+
fetch-depth: 1
41+
42+
- uses: actions/setup-python@v5
43+
with:
44+
python-version: |
45+
3.9
46+
3.10
47+
3.11
48+
3.12
49+
50+
- name: Install poetry
51+
run: make install-poetry
52+
53+
- name: Set version with RC
54+
env:
55+
VERSION: ${{ inputs.VERSION }}
56+
run: python -m poetry version "${{ env.VERSION }}"
57+
58+
# Publish the source distribution with the version that's in
59+
# the repository, otherwise the tests will fail
60+
- name: Compile source distribution
61+
run: python3 -m poetry build --format=sdist
62+
if: startsWith(matrix.os, 'ubuntu')
63+
64+
- name: Build wheels
65+
uses: pypa/[email protected]
66+
with:
67+
output-dir: wheelhouse
68+
config-file: "pyproject.toml"
69+
env:
70+
# Ignore 32 bit architectures
71+
CIBW_ARCHS: "auto64"
72+
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.9,<3.13"
73+
CIBW_TEST_REQUIRES: "pytest==7.4.2 moto==5.0.1"
74+
CIBW_TEST_COMMAND: "pytest {project}/tests/avro/test_decoder.py"
75+
# Ignore tests for pypy since not all dependencies are compiled for it
76+
# and would require a local rust build chain
77+
CIBW_TEST_SKIP: "pp*"
78+
79+
- name: Add source distribution
80+
if: startsWith(matrix.os, 'ubuntu')
81+
run: ls -lah dist/* && cp dist/* wheelhouse/
82+
83+
- uses: actions/upload-artifact@v4
84+
with:
85+
name: "pypi-release-candidate-${{ matrix.os }}"
86+
path: ./wheelhouse/*
87+
88+
pypi-merge-artifacts:
89+
runs-on: ubuntu-latest
90+
needs:
91+
- pypi-build-artifacts
92+
steps:
93+
- name: Merge Artifacts
94+
uses: actions/upload-artifact/merge@v4
95+
with:
96+
name: "pypi-release-candidate-${{ inputs.VERSION }}"
97+
pattern: pypi-release-candidate*
98+
delete-merged: true

0 commit comments

Comments
 (0)