Skip to content

Commit c3f68e2

Browse files
committed
Merge origin/main into feat/geospatial-types
2 parents 1c2abce + 7d4a8ef commit c3f68e2

File tree

101 files changed

+9647
-3408
lines changed

Some content is hidden

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

101 files changed

+9647
-3408
lines changed

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

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
runs-on: ${{ matrix.os }}
3333
strategy:
3434
matrix:
35-
os: [ ubuntu-latest, windows-latest, macos-latest ]
35+
os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15-intel, macos-latest ]
3636

3737
steps:
3838
- uses: actions/checkout@v6
@@ -45,6 +45,7 @@ jobs:
4545
3.10
4646
3.11
4747
3.12
48+
3.13
4849
4950
- name: Install UV
5051
uses: astral-sh/setup-uv@v7
@@ -58,28 +59,25 @@ jobs:
5859
# the repository, otherwise the tests will fail
5960
- name: Compile source distribution
6061
run: uv build --sdist
61-
if: startsWith(matrix.os, 'ubuntu')
62+
if: matrix.os == 'ubuntu-latest'
6263

6364
- name: Build wheels
64-
uses: pypa/cibuildwheel@v3.3.0
65+
uses: pypa/cibuildwheel@v3.3.1
6566
with:
6667
output-dir: wheelhouse
6768
config-file: "pyproject.toml"
6869
env:
6970
# Ignore 32 bit architectures
7071
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*"
72+
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.10,<3.14"
73+
CIBW_BEFORE_TEST: "uv sync --directory {project} --only-group dev --no-install-project"
74+
CIBW_TEST_COMMAND: "uv run --directory {project} pytest tests/avro/test_decoder.py"
7775
# Skip free-threaded (PEP 703) builds until we evaluate decoder_fast support
7876
CIBW_SKIP: "cp3*t-*"
7977

8078

8179
- name: Add source distribution
82-
if: startsWith(matrix.os, 'ubuntu')
80+
if: matrix.os == 'ubuntu-latest'
8381
run: ls -lah dist/* && cp dist/* wheelhouse/
8482

8583
- uses: actions/upload-artifact@v4

.github/workflows/python-ci.yml

Lines changed: 98 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,12 @@ concurrency:
4343
cancel-in-progress: ${{ github.event_name == 'pull_request' }}
4444

4545
jobs:
46-
lint-and-test:
46+
lint-and-unit-test:
4747
runs-on: ubuntu-latest
4848
strategy:
49+
fail-fast: true
4950
matrix:
50-
python: ['3.10', '3.11', '3.12']
51+
python: ['3.10', '3.11', '3.12', '3.13']
5152

5253
steps:
5354
- uses: actions/checkout@v6
@@ -56,10 +57,12 @@ jobs:
5657
python-version: ${{ matrix.python }}
5758
- name: Install UV
5859
uses: astral-sh/setup-uv@v7
60+
with:
61+
enable-cache: true
5962
- name: Install system dependencies
6063
run: sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
6164
- name: Install
62-
run: make install-dependencies
65+
run: make install
6366
- name: Run linters
6467
run: make lint
6568
- name: Run unit tests with coverage
@@ -69,45 +72,130 @@ jobs:
6972

7073
integration-test:
7174
runs-on: ubuntu-latest
72-
strategy:
73-
matrix:
74-
python: ['3.10', '3.11', '3.12']
75-
7675
steps:
7776
- uses: actions/checkout@v6
7877
- uses: actions/setup-python@v6
7978
with:
80-
python-version: ${{ matrix.python }}
79+
python-version: '3.12'
8180
- name: Install UV
8281
uses: astral-sh/setup-uv@v7
82+
with:
83+
enable-cache: true
8384
- name: Install system dependencies
8485
run: sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
8586
- name: Install
8687
run: make install
87-
8888
- name: Run integration tests with coverage
8989
run: COVERAGE=1 make test-integration
9090
- name: Show debug logs
9191
if: ${{ failure() }}
92-
run: docker compose -f dev/docker-compose.yml logs
92+
run: docker compose -f dev/docker-compose-integration.yml logs
93+
- name: Upload coverage data
94+
uses: actions/upload-artifact@v4
95+
with:
96+
name: coverage-integration
97+
path: .coverage*
98+
include-hidden-files: true
9399

100+
integration-test-s3:
101+
runs-on: ubuntu-latest
102+
steps:
103+
- uses: actions/checkout@v6
104+
- uses: actions/setup-python@v6
105+
with:
106+
python-version: '3.12'
107+
- name: Install UV
108+
uses: astral-sh/setup-uv@v7
109+
with:
110+
enable-cache: true
111+
- name: Install system dependencies
112+
run: sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
113+
- name: Install
114+
run: make install
94115
- name: Run s3 integration tests with coverage
95116
run: COVERAGE=1 make test-s3
96117
- name: Show debug logs
97118
if: ${{ failure() }}
98119
run: docker compose -f dev/docker-compose.yml logs
120+
- name: Upload coverage data
121+
uses: actions/upload-artifact@v4
122+
with:
123+
name: coverage-s3
124+
path: .coverage*
125+
include-hidden-files: true
99126

127+
integration-test-adls:
128+
runs-on: ubuntu-latest
129+
steps:
130+
- uses: actions/checkout@v6
131+
- uses: actions/setup-python@v6
132+
with:
133+
python-version: '3.12'
134+
- name: Install UV
135+
uses: astral-sh/setup-uv@v7
136+
with:
137+
enable-cache: true
138+
- name: Install system dependencies
139+
run: sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
140+
- name: Install
141+
run: make install
100142
- name: Run adls integration tests with coverage
101143
run: COVERAGE=1 make test-adls
102144
- name: Show debug logs
103145
if: ${{ failure() }}
104146
run: docker compose -f dev/docker-compose-azurite.yml logs
147+
- name: Upload coverage data
148+
uses: actions/upload-artifact@v4
149+
with:
150+
name: coverage-adls
151+
path: .coverage*
152+
include-hidden-files: true
105153

154+
integration-test-gcs:
155+
runs-on: ubuntu-latest
156+
steps:
157+
- uses: actions/checkout@v6
158+
- uses: actions/setup-python@v6
159+
with:
160+
python-version: '3.12'
161+
- name: Install UV
162+
uses: astral-sh/setup-uv@v7
163+
with:
164+
enable-cache: true
165+
- name: Install system dependencies
166+
run: sudo apt-get update && sudo apt-get install -y libkrb5-dev # for kerberos
167+
- name: Install
168+
run: make install
106169
- name: Run gcs integration tests with coverage
107170
run: COVERAGE=1 make test-gcs
108171
- name: Show debug logs
109172
if: ${{ failure() }}
110173
run: docker compose -f dev/docker-compose-gcs-server.yml logs
174+
- name: Upload coverage data
175+
uses: actions/upload-artifact@v4
176+
with:
177+
name: coverage-gcs
178+
path: .coverage*
179+
include-hidden-files: true
111180

181+
integration-coverage-report:
182+
runs-on: ubuntu-latest
183+
needs: [integration-test, integration-test-s3, integration-test-adls, integration-test-gcs]
184+
steps:
185+
- uses: actions/checkout@v6
186+
- uses: actions/setup-python@v6
187+
with:
188+
python-version: '3.12'
189+
- name: Install UV
190+
uses: astral-sh/setup-uv@v7
191+
with:
192+
enable-cache: true
193+
- name: Install dependencies
194+
run: uv sync --group dev
195+
- name: Download all coverage artifacts
196+
uses: actions/download-artifact@v7
197+
with:
198+
pattern: coverage-*
199+
merge-multiple: true
112200
- name: Generate coverage report (75%) # Coverage threshold should only increase over time — never decrease it!
113201
run: COVERAGE_FAIL_UNDER=75 make coverage-report

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

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ jobs:
3232
runs-on: ${{ matrix.os }}
3333
strategy:
3434
matrix:
35-
os: [ ubuntu-latest, windows-latest, macos-latest ]
35+
os: [ ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15-intel, macos-latest ]
3636

3737
steps:
3838
- uses: actions/checkout@v6
@@ -45,6 +45,7 @@ jobs:
4545
3.10
4646
3.11
4747
3.12
48+
3.13
4849
4950
- name: Install UV
5051
uses: astral-sh/setup-uv@v7
@@ -53,27 +54,24 @@ jobs:
5354
# the repository, otherwise the tests will fail
5455
- name: Compile source distribution
5556
run: uv build --sdist
56-
if: startsWith(matrix.os, 'ubuntu')
57+
if: matrix.os == 'ubuntu-latest'
5758

5859
- name: Build wheels
59-
uses: pypa/cibuildwheel@v3.3.0
60+
uses: pypa/cibuildwheel@v3.3.1
6061
with:
6162
output-dir: wheelhouse
6263
config-file: "pyproject.toml"
6364
env:
6465
# Ignore 32 bit architectures
6566
CIBW_ARCHS: "auto64"
66-
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.10"
67-
CIBW_TEST_REQUIRES: "pytest==7.4.2 moto==5.0.1"
68-
CIBW_TEST_COMMAND: "pytest {project}/tests/avro/test_decoder.py"
69-
# Ignore tests for pypy since not all dependencies are compiled for it
70-
# and would require a local rust build chain
71-
CIBW_TEST_SKIP: "pp*"
67+
CIBW_PROJECT_REQUIRES_PYTHON: ">=3.10,<3.14"
68+
CIBW_BEFORE_TEST: "uv sync --directory {project} --only-group dev --no-install-project"
69+
CIBW_TEST_COMMAND: "uv run --directory {project} pytest tests/avro/test_decoder.py"
7270
# Skip free-threaded (PEP 703) builds until we evaluate decoder_fast support
7371
CIBW_SKIP: "cp3*t-*"
7472

7573
- name: Add source distribution
76-
if: startsWith(matrix.os, 'ubuntu')
74+
if: matrix.os == 'ubuntu-latest'
7775
run: ls -lah dist/* && cp dist/* wheelhouse/
7876

7977
- uses: actions/upload-artifact@v4

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ bin/
4141
.mypy_cache/
4242
htmlcov
4343

44+
# Jupyter notebook checkpoints
45+
.ipynb_checkpoints/
46+
4447
pyiceberg/avro/decoder_fast.c
4548
pyiceberg/avro/*.html
4649
pyiceberg/avro/*.so

.pre-commit-config.yaml

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ repos:
2323
hooks:
2424
- id: trailing-whitespace
2525
- id: end-of-file-fixer
26-
- id: debug-statements
2726
- id: check-yaml
2827
- id: check-ast
2928
- repo: https://github.com/astral-sh/ruff-pre-commit
@@ -32,6 +31,11 @@ repos:
3231
- id: ruff
3332
args: [ --fix, --exit-non-zero-on-fix ]
3433
- id: ruff-format
34+
- repo: https://github.com/nbQA-dev/nbQA
35+
rev: 1.9.1
36+
hooks:
37+
- id: nbqa-ruff
38+
args: [ --fix, --exit-non-zero-on-fix ]
3539
- repo: https://github.com/pre-commit/mirrors-mypy
3640
rev: v1.18.2
3741
hooks:
@@ -58,15 +62,15 @@ repos:
5862
]
5963
additional_dependencies:
6064
- tomli==2.0.1
61-
- repo: https://github.com/ikamensh/flynt
62-
rev: 1.0.6
63-
hooks:
64-
- id: flynt
65-
args:
66-
# --line-length is set to a high value to deal with very long lines
67-
- --line-length
68-
- '99999'
6965
- repo: https://github.com/codespell-project/codespell
7066
rev: v2.4.1
7167
hooks:
7268
- id: codespell
69+
- repo: local
70+
hooks:
71+
- id: uv-lock-check
72+
name: uv lock file check
73+
entry: make uv-lock-check
74+
language: system
75+
pass_filenames: false
76+
files: ^(pyproject\.toml|uv\.lock)$

MANIFEST.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ recursive-include tests *
2626

2727
# Include development files
2828
include Makefile
29+
include uv.lock
2930
recursive-include dev *
3031

3132
# Exclude build artifacts

0 commit comments

Comments
 (0)