parquet-engine 0.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- parquet_engine-0.1.1/.github/workflows/CI.yml +235 -0
- parquet_engine-0.1.1/.github/workflows/release.yml +105 -0
- parquet_engine-0.1.1/.gitignore +36 -0
- parquet_engine-0.1.1/.python-version +1 -0
- parquet_engine-0.1.1/Cargo.lock +1233 -0
- parquet_engine-0.1.1/Cargo.toml +15 -0
- parquet_engine-0.1.1/LICENSE +21 -0
- parquet_engine-0.1.1/PKG-INFO +99 -0
- parquet_engine-0.1.1/README.md +83 -0
- parquet_engine-0.1.1/pyproject.toml +29 -0
- parquet_engine-0.1.1/src/lib.rs +173 -0
- parquet_engine-0.1.1/tests/test_roundtrip.py +53 -0
- parquet_engine-0.1.1/uv.lock +184 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
# Originally generated by maturin v1.13.3 (maturin generate-ci github --pytest),
|
|
2
|
+
# then adapted by hand:
|
|
3
|
+
# - added `workflow_call` so release.yml can reuse this build matrix,
|
|
4
|
+
# - dropped the tag trigger and the token-based `release` job (publishing now
|
|
5
|
+
# lives in release.yml via PyPI Trusted Publishing).
|
|
6
|
+
# Re-running `maturin generate-ci` will overwrite these edits — re-apply them.
|
|
7
|
+
name: CI
|
|
8
|
+
|
|
9
|
+
on:
|
|
10
|
+
push:
|
|
11
|
+
branches:
|
|
12
|
+
- main
|
|
13
|
+
- master
|
|
14
|
+
pull_request:
|
|
15
|
+
workflow_dispatch:
|
|
16
|
+
workflow_call:
|
|
17
|
+
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
linux:
|
|
23
|
+
runs-on: ${{ matrix.platform.runner }}
|
|
24
|
+
strategy:
|
|
25
|
+
matrix:
|
|
26
|
+
platform:
|
|
27
|
+
- runner: ubuntu-22.04
|
|
28
|
+
target: x86_64
|
|
29
|
+
- runner: ubuntu-22.04
|
|
30
|
+
target: x86
|
|
31
|
+
- runner: ubuntu-22.04
|
|
32
|
+
target: aarch64
|
|
33
|
+
- runner: ubuntu-22.04
|
|
34
|
+
target: armv7
|
|
35
|
+
- runner: ubuntu-22.04
|
|
36
|
+
target: s390x
|
|
37
|
+
- runner: ubuntu-22.04
|
|
38
|
+
target: ppc64le
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v6
|
|
41
|
+
- uses: actions/setup-python@v6
|
|
42
|
+
with:
|
|
43
|
+
python-version: "3.10"
|
|
44
|
+
- name: Build wheels
|
|
45
|
+
uses: PyO3/maturin-action@v1
|
|
46
|
+
with:
|
|
47
|
+
target: ${{ matrix.platform.target }}
|
|
48
|
+
args: --release --out dist
|
|
49
|
+
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
50
|
+
manylinux: auto
|
|
51
|
+
- name: Build free-threaded wheels
|
|
52
|
+
uses: PyO3/maturin-action@v1
|
|
53
|
+
with:
|
|
54
|
+
target: ${{ matrix.platform.target }}
|
|
55
|
+
args: --release --out dist -i python3.14t
|
|
56
|
+
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
57
|
+
manylinux: auto
|
|
58
|
+
- name: Upload wheels
|
|
59
|
+
uses: actions/upload-artifact@v6
|
|
60
|
+
with:
|
|
61
|
+
name: wheels-linux-${{ matrix.platform.target }}
|
|
62
|
+
path: dist
|
|
63
|
+
- uses: astral-sh/setup-uv@v7
|
|
64
|
+
if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
|
|
65
|
+
- name: pytest
|
|
66
|
+
if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
|
|
67
|
+
shell: bash
|
|
68
|
+
run: |
|
|
69
|
+
set -e
|
|
70
|
+
uv venv .venv
|
|
71
|
+
source .venv/bin/activate
|
|
72
|
+
uv pip install parquet-engine --no-index --no-deps --find-links dist --reinstall
|
|
73
|
+
uv pip install parquet-engine pytest
|
|
74
|
+
pytest
|
|
75
|
+
|
|
76
|
+
musllinux:
|
|
77
|
+
runs-on: ${{ matrix.platform.runner }}
|
|
78
|
+
strategy:
|
|
79
|
+
matrix:
|
|
80
|
+
platform:
|
|
81
|
+
- runner: ubuntu-22.04
|
|
82
|
+
target: x86_64
|
|
83
|
+
- runner: ubuntu-22.04
|
|
84
|
+
target: x86
|
|
85
|
+
- runner: ubuntu-22.04
|
|
86
|
+
target: aarch64
|
|
87
|
+
- runner: ubuntu-22.04
|
|
88
|
+
target: armv7
|
|
89
|
+
steps:
|
|
90
|
+
- uses: actions/checkout@v6
|
|
91
|
+
- uses: actions/setup-python@v6
|
|
92
|
+
with:
|
|
93
|
+
python-version: "3.10"
|
|
94
|
+
- name: Build wheels
|
|
95
|
+
uses: PyO3/maturin-action@v1
|
|
96
|
+
with:
|
|
97
|
+
target: ${{ matrix.platform.target }}
|
|
98
|
+
args: --release --out dist
|
|
99
|
+
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
100
|
+
manylinux: musllinux_1_2
|
|
101
|
+
- name: Build free-threaded wheels
|
|
102
|
+
uses: PyO3/maturin-action@v1
|
|
103
|
+
with:
|
|
104
|
+
target: ${{ matrix.platform.target }}
|
|
105
|
+
args: --release --out dist -i python3.14t
|
|
106
|
+
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
107
|
+
manylinux: musllinux_1_2
|
|
108
|
+
- name: Upload wheels
|
|
109
|
+
uses: actions/upload-artifact@v6
|
|
110
|
+
with:
|
|
111
|
+
name: wheels-musllinux-${{ matrix.platform.target }}
|
|
112
|
+
path: dist
|
|
113
|
+
- name: pytest
|
|
114
|
+
if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
|
|
115
|
+
run: |
|
|
116
|
+
set -e
|
|
117
|
+
docker run --rm -v ${{ github.workspace }}:/io -w /io alpine:latest sh -c '
|
|
118
|
+
apk add py3-pip py3-virtualenv
|
|
119
|
+
python3 -m virtualenv .venv
|
|
120
|
+
source .venv/bin/activate
|
|
121
|
+
pip install parquet-engine --no-index --no-deps --find-links dist --force-reinstall
|
|
122
|
+
pip install parquet-engine pytest
|
|
123
|
+
pytest
|
|
124
|
+
'
|
|
125
|
+
|
|
126
|
+
windows:
|
|
127
|
+
runs-on: ${{ matrix.platform.runner }}
|
|
128
|
+
strategy:
|
|
129
|
+
matrix:
|
|
130
|
+
platform:
|
|
131
|
+
- runner: windows-latest
|
|
132
|
+
target: x64
|
|
133
|
+
python_arch: x64
|
|
134
|
+
- runner: windows-latest
|
|
135
|
+
target: x86
|
|
136
|
+
python_arch: x86
|
|
137
|
+
- runner: windows-11-arm
|
|
138
|
+
target: aarch64
|
|
139
|
+
python_arch: arm64
|
|
140
|
+
steps:
|
|
141
|
+
- uses: actions/checkout@v6
|
|
142
|
+
- uses: actions/setup-python@v6
|
|
143
|
+
with:
|
|
144
|
+
python-version: "3.13"
|
|
145
|
+
architecture: ${{ matrix.platform.python_arch }}
|
|
146
|
+
- name: Build wheels
|
|
147
|
+
uses: PyO3/maturin-action@v1
|
|
148
|
+
with:
|
|
149
|
+
target: ${{ matrix.platform.target }}
|
|
150
|
+
args: --release --out dist
|
|
151
|
+
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
152
|
+
- uses: actions/setup-python@v6
|
|
153
|
+
with:
|
|
154
|
+
python-version: "3.14t"
|
|
155
|
+
architecture: ${{ matrix.platform.python_arch }}
|
|
156
|
+
- name: Build free-threaded wheels
|
|
157
|
+
uses: PyO3/maturin-action@v1
|
|
158
|
+
with:
|
|
159
|
+
target: ${{ matrix.platform.target }}
|
|
160
|
+
args: --release --out dist -i python3.14t
|
|
161
|
+
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
162
|
+
- name: Upload wheels
|
|
163
|
+
uses: actions/upload-artifact@v6
|
|
164
|
+
with:
|
|
165
|
+
name: wheels-windows-${{ matrix.platform.target }}
|
|
166
|
+
path: dist
|
|
167
|
+
- uses: astral-sh/setup-uv@v7
|
|
168
|
+
- name: pytest
|
|
169
|
+
shell: bash
|
|
170
|
+
run: |
|
|
171
|
+
set -e
|
|
172
|
+
uv venv .venv
|
|
173
|
+
source .venv/Scripts/activate
|
|
174
|
+
uv pip install parquet-engine --no-index --no-deps --find-links dist --reinstall
|
|
175
|
+
uv pip install parquet-engine pytest
|
|
176
|
+
pytest
|
|
177
|
+
|
|
178
|
+
macos:
|
|
179
|
+
runs-on: ${{ matrix.platform.runner }}
|
|
180
|
+
strategy:
|
|
181
|
+
matrix:
|
|
182
|
+
platform:
|
|
183
|
+
- runner: macos-15-intel
|
|
184
|
+
target: x86_64
|
|
185
|
+
- runner: macos-latest
|
|
186
|
+
target: aarch64
|
|
187
|
+
steps:
|
|
188
|
+
- uses: actions/checkout@v6
|
|
189
|
+
- uses: actions/setup-python@v6
|
|
190
|
+
with:
|
|
191
|
+
python-version: "3.10"
|
|
192
|
+
- name: Build wheels
|
|
193
|
+
uses: PyO3/maturin-action@v1
|
|
194
|
+
with:
|
|
195
|
+
target: ${{ matrix.platform.target }}
|
|
196
|
+
args: --release --out dist
|
|
197
|
+
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
198
|
+
- uses: actions/setup-python@v6
|
|
199
|
+
with:
|
|
200
|
+
python-version: "3.14t"
|
|
201
|
+
- name: Build free-threaded wheels
|
|
202
|
+
uses: PyO3/maturin-action@v1
|
|
203
|
+
with:
|
|
204
|
+
target: ${{ matrix.platform.target }}
|
|
205
|
+
args: --release --out dist -i python3.14t
|
|
206
|
+
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
207
|
+
- name: Upload wheels
|
|
208
|
+
uses: actions/upload-artifact@v6
|
|
209
|
+
with:
|
|
210
|
+
name: wheels-macos-${{ matrix.platform.target }}
|
|
211
|
+
path: dist
|
|
212
|
+
- uses: astral-sh/setup-uv@v7
|
|
213
|
+
- name: pytest
|
|
214
|
+
run: |
|
|
215
|
+
set -e
|
|
216
|
+
uv venv .venv
|
|
217
|
+
source .venv/bin/activate
|
|
218
|
+
uv pip install parquet-engine --no-index --no-deps --find-links dist --reinstall
|
|
219
|
+
uv pip install parquet-engine pytest
|
|
220
|
+
pytest
|
|
221
|
+
|
|
222
|
+
sdist:
|
|
223
|
+
runs-on: ubuntu-latest
|
|
224
|
+
steps:
|
|
225
|
+
- uses: actions/checkout@v6
|
|
226
|
+
- name: Build sdist
|
|
227
|
+
uses: PyO3/maturin-action@v1
|
|
228
|
+
with:
|
|
229
|
+
command: sdist
|
|
230
|
+
args: --out dist
|
|
231
|
+
- name: Upload sdist
|
|
232
|
+
uses: actions/upload-artifact@v6
|
|
233
|
+
with:
|
|
234
|
+
name: wheels-sdist
|
|
235
|
+
path: dist
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
name: Publish to PyPI & Draft Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
inputs:
|
|
9
|
+
tag:
|
|
10
|
+
description: "Existing tag to publish (e.g. v0.1.0 or v0.1.0b1)"
|
|
11
|
+
required: true
|
|
12
|
+
type: string
|
|
13
|
+
|
|
14
|
+
# Minimal default for all jobs; the `build` job calls CI.yml (which requests
|
|
15
|
+
# `contents: read`), so the caller must grant at least that. The `publish` job
|
|
16
|
+
# overrides with its own elevated permissions below.
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
version-check:
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
outputs:
|
|
24
|
+
tag: ${{ steps.vars.outputs.tag }}
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v6
|
|
27
|
+
with:
|
|
28
|
+
fetch-depth: 0
|
|
29
|
+
|
|
30
|
+
- uses: actions/setup-python@v6
|
|
31
|
+
with:
|
|
32
|
+
python-version: "3.13"
|
|
33
|
+
|
|
34
|
+
- name: Resolve tag name
|
|
35
|
+
id: vars
|
|
36
|
+
shell: bash
|
|
37
|
+
run: |
|
|
38
|
+
set -euo pipefail
|
|
39
|
+
if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then
|
|
40
|
+
TAG="${{ inputs.tag }}"
|
|
41
|
+
else
|
|
42
|
+
TAG="${{ github.ref_name }}"
|
|
43
|
+
fi
|
|
44
|
+
echo "tag=${TAG}" >> "$GITHUB_OUTPUT"
|
|
45
|
+
|
|
46
|
+
- name: Ensure tag matches package version
|
|
47
|
+
shell: bash
|
|
48
|
+
env:
|
|
49
|
+
TAG_NAME: ${{ steps.vars.outputs.tag }}
|
|
50
|
+
run: |
|
|
51
|
+
set -euo pipefail
|
|
52
|
+
PYPROJECT="$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")"
|
|
53
|
+
CARGO="$(python -c "import tomllib; print(tomllib.load(open('Cargo.toml','rb'))['package']['version'])")"
|
|
54
|
+
if [[ "${TAG_NAME}" != "v${PYPROJECT}" ]]; then
|
|
55
|
+
echo "::error::Tag ${TAG_NAME} does not match pyproject version v${PYPROJECT}"
|
|
56
|
+
exit 1
|
|
57
|
+
fi
|
|
58
|
+
if [[ "${PYPROJECT}" != "${CARGO}" ]]; then
|
|
59
|
+
echo "::error::pyproject version ${PYPROJECT} != Cargo.toml version ${CARGO}"
|
|
60
|
+
exit 1
|
|
61
|
+
fi
|
|
62
|
+
echo "Releasing ${TAG_NAME}"
|
|
63
|
+
|
|
64
|
+
# Reuse the full wheel/sdist build matrix from CI.yml (linux, musllinux,
|
|
65
|
+
# windows, macos, sdist) so the release publishes the same artifacts CI builds.
|
|
66
|
+
build:
|
|
67
|
+
needs: version-check
|
|
68
|
+
uses: ./.github/workflows/CI.yml
|
|
69
|
+
|
|
70
|
+
publish:
|
|
71
|
+
name: Publish to PyPI & Draft Release
|
|
72
|
+
needs: [version-check, build]
|
|
73
|
+
runs-on: ubuntu-latest
|
|
74
|
+
environment: pypi
|
|
75
|
+
permissions:
|
|
76
|
+
contents: write # create release + upload assets
|
|
77
|
+
id-token: write # PyPI Trusted Publishing
|
|
78
|
+
steps:
|
|
79
|
+
- name: Download build artifacts
|
|
80
|
+
uses: actions/download-artifact@v7
|
|
81
|
+
with:
|
|
82
|
+
path: artifacts
|
|
83
|
+
|
|
84
|
+
- name: Collect distributions
|
|
85
|
+
shell: bash
|
|
86
|
+
run: |
|
|
87
|
+
set -euo pipefail
|
|
88
|
+
mkdir -p dist
|
|
89
|
+
find artifacts -type f \( -name '*.whl' -o -name '*.tar.gz' \) -exec cp -n {} dist/ \;
|
|
90
|
+
ls -l dist
|
|
91
|
+
|
|
92
|
+
- uses: astral-sh/setup-uv@v7
|
|
93
|
+
|
|
94
|
+
- name: Publish to PyPI (Trusted Publishing)
|
|
95
|
+
run: uv publish dist/*
|
|
96
|
+
|
|
97
|
+
- name: Create draft GitHub Release
|
|
98
|
+
uses: softprops/action-gh-release@v2
|
|
99
|
+
with:
|
|
100
|
+
tag_name: ${{ needs.version-check.outputs.tag }}
|
|
101
|
+
name: ${{ needs.version-check.outputs.tag }}
|
|
102
|
+
draft: true
|
|
103
|
+
files: |
|
|
104
|
+
dist/*.whl
|
|
105
|
+
dist/*.tar.gz
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Generated by Cargo
|
|
2
|
+
# will have compiled files and executables
|
|
3
|
+
debug
|
|
4
|
+
target
|
|
5
|
+
|
|
6
|
+
# These are backup files generated by rustfmt
|
|
7
|
+
**/*.rs.bk
|
|
8
|
+
|
|
9
|
+
# MSVC Windows builds of rustc generate these, which store debugging information
|
|
10
|
+
*.pdb
|
|
11
|
+
|
|
12
|
+
# Generated by cargo mutants
|
|
13
|
+
# Contains mutation testing data
|
|
14
|
+
**/mutants.out*/
|
|
15
|
+
|
|
16
|
+
# RustRover
|
|
17
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
18
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
19
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
20
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
21
|
+
#.idea/
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
# Added by cargo
|
|
25
|
+
|
|
26
|
+
/target
|
|
27
|
+
|
|
28
|
+
# Python / maturin / uv
|
|
29
|
+
.venv/
|
|
30
|
+
__pycache__/
|
|
31
|
+
*.py[cod]
|
|
32
|
+
*.so
|
|
33
|
+
*.pyd
|
|
34
|
+
.pytest_cache/
|
|
35
|
+
dist/
|
|
36
|
+
*.egg-info/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.14
|