xorq-datafusion 0.1.0__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.
- xorq_datafusion-0.1.0/.codespell.ignore-words +4 -0
- xorq_datafusion-0.1.0/.envrc +1 -0
- xorq_datafusion-0.1.0/.github/workflows/ci-lint.yml +76 -0
- xorq_datafusion-0.1.0/.github/workflows/ci-pre-release.yml +121 -0
- xorq_datafusion-0.1.0/.github/workflows/ci-release.yml +122 -0
- xorq_datafusion-0.1.0/.github/workflows/ci-test.yml +78 -0
- xorq_datafusion-0.1.0/.gitignore +72 -0
- xorq_datafusion-0.1.0/.pre-commit-config.yaml +49 -0
- xorq_datafusion-0.1.0/Cargo.lock +4628 -0
- xorq_datafusion-0.1.0/Cargo.toml +29 -0
- xorq_datafusion-0.1.0/PKG-INFO +13 -0
- xorq_datafusion-0.1.0/README.md +2 -0
- xorq_datafusion-0.1.0/data/data.rownum.parquet +0 -0
- xorq_datafusion-0.1.0/data/iris.csv +151 -0
- xorq_datafusion-0.1.0/pyproject.toml +33 -0
- xorq_datafusion-0.1.0/python/tests/__init__.py +0 -0
- xorq_datafusion-0.1.0/python/tests/conftest.py +8 -0
- xorq_datafusion-0.1.0/python/tests/test_basic.py +17 -0
- xorq_datafusion-0.1.0/python/xorq_datafusion/__init__.py +174 -0
- xorq_datafusion-0.1.0/src/catalog.rs +120 -0
- xorq_datafusion-0.1.0/src/common/data_type.rs +790 -0
- xorq_datafusion-0.1.0/src/common/df_schema.rs +57 -0
- xorq_datafusion-0.1.0/src/common/function.rs +55 -0
- xorq_datafusion-0.1.0/src/common/schema.rs +220 -0
- xorq_datafusion-0.1.0/src/common.rs +38 -0
- xorq_datafusion-0.1.0/src/context.rs +563 -0
- xorq_datafusion-0.1.0/src/dataframe.rs +421 -0
- xorq_datafusion-0.1.0/src/dataset.rs +116 -0
- xorq_datafusion-0.1.0/src/dataset_exec.rs +288 -0
- xorq_datafusion-0.1.0/src/errors.rs +80 -0
- xorq_datafusion-0.1.0/src/expr/aggregate.rs +160 -0
- xorq_datafusion-0.1.0/src/expr/aggregate_expr.rs +80 -0
- xorq_datafusion-0.1.0/src/expr/alias.rs +67 -0
- xorq_datafusion-0.1.0/src/expr/analyze.rs +85 -0
- xorq_datafusion-0.1.0/src/expr/between.rs +76 -0
- xorq_datafusion-0.1.0/src/expr/binary_expr.rs +57 -0
- xorq_datafusion-0.1.0/src/expr/bool_expr.rs +322 -0
- xorq_datafusion-0.1.0/src/expr/case.rs +57 -0
- xorq_datafusion-0.1.0/src/expr/cast.rs +82 -0
- xorq_datafusion-0.1.0/src/expr/column.rs +60 -0
- xorq_datafusion-0.1.0/src/expr/conditional_expr.rs +54 -0
- xorq_datafusion-0.1.0/src/expr/create_memory_table.rs +97 -0
- xorq_datafusion-0.1.0/src/expr/create_view.rs +105 -0
- xorq_datafusion-0.1.0/src/expr/distinct.rs +95 -0
- xorq_datafusion-0.1.0/src/expr/drop_table.rs +89 -0
- xorq_datafusion-0.1.0/src/expr/empty_relation.rs +91 -0
- xorq_datafusion-0.1.0/src/expr/exists.rs +45 -0
- xorq_datafusion-0.1.0/src/expr/explain.rs +110 -0
- xorq_datafusion-0.1.0/src/expr/extension.rs +52 -0
- xorq_datafusion-0.1.0/src/expr/filter.rs +87 -0
- xorq_datafusion-0.1.0/src/expr/grouping_set.rs +37 -0
- xorq_datafusion-0.1.0/src/expr/in_list.rs +53 -0
- xorq_datafusion-0.1.0/src/expr/in_subquery.rs +54 -0
- xorq_datafusion-0.1.0/src/expr/join.rs +199 -0
- xorq_datafusion-0.1.0/src/expr/like.rs +196 -0
- xorq_datafusion-0.1.0/src/expr/limit.rs +122 -0
- xorq_datafusion-0.1.0/src/expr/literal.rs +163 -0
- xorq_datafusion-0.1.0/src/expr/logical_node.rs +29 -0
- xorq_datafusion-0.1.0/src/expr/ordered.rs +57 -0
- xorq_datafusion-0.1.0/src/expr/placeholder.rs +48 -0
- xorq_datafusion-0.1.0/src/expr/projection.rs +119 -0
- xorq_datafusion-0.1.0/src/expr/repartition.rs +127 -0
- xorq_datafusion-0.1.0/src/expr/scalar_subquery.rs +46 -0
- xorq_datafusion-0.1.0/src/expr/scalar_variable.rs +53 -0
- xorq_datafusion-0.1.0/src/expr/signature.rs +39 -0
- xorq_datafusion-0.1.0/src/expr/sort.rs +102 -0
- xorq_datafusion-0.1.0/src/expr/sort_expr.rs +90 -0
- xorq_datafusion-0.1.0/src/expr/subquery.rs +81 -0
- xorq_datafusion-0.1.0/src/expr/subquery_alias.rs +91 -0
- xorq_datafusion-0.1.0/src/expr/table_scan.rs +152 -0
- xorq_datafusion-0.1.0/src/expr/union.rs +89 -0
- xorq_datafusion-0.1.0/src/expr/wildcard.rs +26 -0
- xorq_datafusion-0.1.0/src/expr/window.rs +302 -0
- xorq_datafusion-0.1.0/src/expr.rs +870 -0
- xorq_datafusion-0.1.0/src/functions/greatest.rs +126 -0
- xorq_datafusion-0.1.0/src/functions/hash_int.rs +85 -0
- xorq_datafusion-0.1.0/src/functions/least.rs +125 -0
- xorq_datafusion-0.1.0/src/functions/min_max.rs +226 -0
- xorq_datafusion-0.1.0/src/functions.rs +4 -0
- xorq_datafusion-0.1.0/src/ibis_filter_expression.rs +129 -0
- xorq_datafusion-0.1.0/src/ibis_table.rs +124 -0
- xorq_datafusion-0.1.0/src/ibis_table_exec.rs +172 -0
- xorq_datafusion-0.1.0/src/lib.rs +87 -0
- xorq_datafusion-0.1.0/src/model.rs +4 -0
- xorq_datafusion-0.1.0/src/object_storage.rs +486 -0
- xorq_datafusion-0.1.0/src/optimizer.rs +124 -0
- xorq_datafusion-0.1.0/src/physical_plan.rs +77 -0
- xorq_datafusion-0.1.0/src/provider.rs +110 -0
- xorq_datafusion-0.1.0/src/py_record_batch_provider.rs +254 -0
- xorq_datafusion-0.1.0/src/pyarrow_filter_expression.rs +169 -0
- xorq_datafusion-0.1.0/src/pyarrow_util.rs +61 -0
- xorq_datafusion-0.1.0/src/record_batch.rs +105 -0
- xorq_datafusion-0.1.0/src/sql/builder.rs +90 -0
- xorq_datafusion-0.1.0/src/sql/exceptions.rs +42 -0
- xorq_datafusion-0.1.0/src/sql/logical.rs +129 -0
- xorq_datafusion-0.1.0/src/sql/parser.rs +143 -0
- xorq_datafusion-0.1.0/src/sql.rs +21 -0
- xorq_datafusion-0.1.0/src/udaf.rs +160 -0
- xorq_datafusion-0.1.0/src/udf.rs +68 -0
- xorq_datafusion-0.1.0/src/udwf.rs +314 -0
- xorq_datafusion-0.1.0/src/utils.rs +112 -0
- xorq_datafusion-0.1.0/uv.lock +468 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export UV_NO_SYNC=1
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
name: ci-lint
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
# Skip the backend suite if all changes are docs
|
|
6
|
+
paths-ignore:
|
|
7
|
+
- "docs/**"
|
|
8
|
+
- "**/*.md"
|
|
9
|
+
- "**/*.qmd"
|
|
10
|
+
- "*.md"
|
|
11
|
+
- "codecov.yml"
|
|
12
|
+
- ".envrc"
|
|
13
|
+
branches:
|
|
14
|
+
- main
|
|
15
|
+
- master
|
|
16
|
+
tags:
|
|
17
|
+
- '*'
|
|
18
|
+
pull_request:
|
|
19
|
+
workflow_dispatch:
|
|
20
|
+
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
lint:
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/checkout@v4
|
|
30
|
+
|
|
31
|
+
- name: Run codespell
|
|
32
|
+
uses: codespell-project/actions-codespell@v2
|
|
33
|
+
with:
|
|
34
|
+
path: "python src"
|
|
35
|
+
ignore_words_file: .codespell.ignore-words
|
|
36
|
+
|
|
37
|
+
- uses: actions/setup-python@v5
|
|
38
|
+
with:
|
|
39
|
+
python-version: "3.12.9"
|
|
40
|
+
|
|
41
|
+
- name: Install uv
|
|
42
|
+
uses: astral-sh/setup-uv@v5
|
|
43
|
+
with:
|
|
44
|
+
enable-cache: true
|
|
45
|
+
|
|
46
|
+
- name: Install dependencies
|
|
47
|
+
run: uv sync --locked --only-group dev
|
|
48
|
+
|
|
49
|
+
- name: Check requirements-dev.txt
|
|
50
|
+
run: uv export --frozen --no-hashes --no-emit-project --all-groups --all-extras --output-file=requirements-dev.txt
|
|
51
|
+
|
|
52
|
+
# Update output format to enable automatic inline annotations.
|
|
53
|
+
- name: Run Ruff
|
|
54
|
+
run: uv run --no-project ruff check --output-format=github python
|
|
55
|
+
|
|
56
|
+
- name: Run fmt
|
|
57
|
+
uses: actions-rs/cargo@v1
|
|
58
|
+
with:
|
|
59
|
+
command: fmt
|
|
60
|
+
args: -- --check
|
|
61
|
+
|
|
62
|
+
- name: Run Clippy
|
|
63
|
+
uses: actions-rs/cargo@v1
|
|
64
|
+
with:
|
|
65
|
+
command: clippy
|
|
66
|
+
args: --all-targets --all-features -- -D clippy::all -A clippy::redundant_closure
|
|
67
|
+
|
|
68
|
+
- name: Verify no uncommitted changes
|
|
69
|
+
run: |
|
|
70
|
+
echo "Checking for uncommitted changes in the workspace..."
|
|
71
|
+
if ! git diff --exit-code --stat; then
|
|
72
|
+
echo "::error::Error: The linting process must not create uncommitted files"
|
|
73
|
+
echo "Hint: If you recently updated dependencies or generated files, make sure to commit those changes"
|
|
74
|
+
echo "Hint: Additionally, check that uv version for pre-commit and ci-lint.yaml match and run pre-commit locally"
|
|
75
|
+
exit 1
|
|
76
|
+
fi
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# This file is autogenerated by maturin v1.2.3
|
|
2
|
+
# To update, run
|
|
3
|
+
#
|
|
4
|
+
# maturin generate-ci github
|
|
5
|
+
#
|
|
6
|
+
name: ci-pre-release
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
|
|
11
|
+
# we do not want more than one release workflow executing at the same time, ever
|
|
12
|
+
concurrency:
|
|
13
|
+
group: release
|
|
14
|
+
# cancelling in the middle of a release would create incomplete releases
|
|
15
|
+
# so cancel-in-progress is false
|
|
16
|
+
cancel-in-progress: false
|
|
17
|
+
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
|
|
21
|
+
jobs:
|
|
22
|
+
linux:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
strategy:
|
|
25
|
+
matrix:
|
|
26
|
+
target: [x86_64, x86, aarch64]
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@v4
|
|
29
|
+
- uses: actions/setup-python@v5
|
|
30
|
+
with:
|
|
31
|
+
python-version: '3.10'
|
|
32
|
+
- name: Build wheels
|
|
33
|
+
uses: PyO3/maturin-action@v1
|
|
34
|
+
with:
|
|
35
|
+
target: ${{ matrix.target }}
|
|
36
|
+
args: --release --out dist --find-interpreter
|
|
37
|
+
sccache: 'true'
|
|
38
|
+
manylinux: ${{ matrix.target == 'aarch64' && '2_28' || 'auto' }}
|
|
39
|
+
- name: Upload wheels
|
|
40
|
+
uses: actions/upload-artifact@v4
|
|
41
|
+
with:
|
|
42
|
+
name: wheel-ubuntu-${{ matrix.target }}
|
|
43
|
+
path: dist
|
|
44
|
+
|
|
45
|
+
windows:
|
|
46
|
+
runs-on: windows-latest
|
|
47
|
+
strategy:
|
|
48
|
+
matrix:
|
|
49
|
+
target: [x64, x86]
|
|
50
|
+
steps:
|
|
51
|
+
- uses: actions/checkout@v4
|
|
52
|
+
- uses: actions/setup-python@v5
|
|
53
|
+
with:
|
|
54
|
+
python-version: '3.10'
|
|
55
|
+
architecture: ${{ matrix.target }}
|
|
56
|
+
- name: Build wheels
|
|
57
|
+
uses: PyO3/maturin-action@v1
|
|
58
|
+
with:
|
|
59
|
+
target: ${{ matrix.target }}
|
|
60
|
+
args: --release --out dist --find-interpreter
|
|
61
|
+
sccache: 'true'
|
|
62
|
+
- name: Upload wheels
|
|
63
|
+
uses: actions/upload-artifact@v4
|
|
64
|
+
with:
|
|
65
|
+
name: wheel-windows-${{ matrix.target }}
|
|
66
|
+
path: dist
|
|
67
|
+
|
|
68
|
+
macos:
|
|
69
|
+
runs-on: macos-latest
|
|
70
|
+
strategy:
|
|
71
|
+
matrix:
|
|
72
|
+
target: [x86_64, aarch64]
|
|
73
|
+
steps:
|
|
74
|
+
- uses: actions/checkout@v4
|
|
75
|
+
- uses: actions/setup-python@v5
|
|
76
|
+
with:
|
|
77
|
+
python-version: '3.10'
|
|
78
|
+
- name: Build wheels
|
|
79
|
+
uses: PyO3/maturin-action@v1
|
|
80
|
+
with:
|
|
81
|
+
target: ${{ matrix.target }}
|
|
82
|
+
args: --release --out dist --find-interpreter
|
|
83
|
+
sccache: 'true'
|
|
84
|
+
- name: Upload wheels
|
|
85
|
+
uses: actions/upload-artifact@v4
|
|
86
|
+
with:
|
|
87
|
+
name: wheel-macos-${{ matrix.target }}
|
|
88
|
+
path: dist
|
|
89
|
+
|
|
90
|
+
sdist:
|
|
91
|
+
runs-on: ubuntu-latest
|
|
92
|
+
steps:
|
|
93
|
+
- uses: actions/checkout@v4
|
|
94
|
+
- name: Build sdist
|
|
95
|
+
uses: PyO3/maturin-action@v1
|
|
96
|
+
with:
|
|
97
|
+
command: sdist
|
|
98
|
+
args: --out dist
|
|
99
|
+
- name: Upload sdist
|
|
100
|
+
uses: actions/upload-artifact@v4
|
|
101
|
+
with:
|
|
102
|
+
name: wheels
|
|
103
|
+
path: dist
|
|
104
|
+
|
|
105
|
+
release:
|
|
106
|
+
name: Release
|
|
107
|
+
runs-on: ubuntu-latest
|
|
108
|
+
needs: [linux, windows, macos, sdist]
|
|
109
|
+
steps:
|
|
110
|
+
- uses: actions/download-artifact@v4
|
|
111
|
+
with:
|
|
112
|
+
path: dist
|
|
113
|
+
merge-multiple: true
|
|
114
|
+
- name: Publish to TestPyPI
|
|
115
|
+
uses: PyO3/maturin-action@v1
|
|
116
|
+
env:
|
|
117
|
+
MATURIN_PYPI_TOKEN: ${{ secrets.TEST_PYPI_API_TOKEN }}
|
|
118
|
+
MATURIN_REPOSITORY: "testpypi"
|
|
119
|
+
with:
|
|
120
|
+
command: upload
|
|
121
|
+
args: --non-interactive --skip-existing ./dist/*
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# This file is autogenerated by maturin v1.2.3
|
|
2
|
+
# To update, run
|
|
3
|
+
#
|
|
4
|
+
# maturin generate-ci github
|
|
5
|
+
#
|
|
6
|
+
name: ci-release
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
release:
|
|
11
|
+
types: [ published ]
|
|
12
|
+
|
|
13
|
+
# we do not want more than one release workflow executing at the same time, ever
|
|
14
|
+
concurrency:
|
|
15
|
+
group: release
|
|
16
|
+
# cancelling in the middle of a release would create incomplete releases
|
|
17
|
+
# so cancel-in-progress is false
|
|
18
|
+
cancel-in-progress: false
|
|
19
|
+
|
|
20
|
+
permissions:
|
|
21
|
+
contents: read
|
|
22
|
+
|
|
23
|
+
jobs:
|
|
24
|
+
linux:
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
strategy:
|
|
27
|
+
matrix:
|
|
28
|
+
target: [x86_64, x86, aarch64]
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v4
|
|
31
|
+
- uses: actions/setup-python@v5
|
|
32
|
+
with:
|
|
33
|
+
python-version: '3.10'
|
|
34
|
+
- name: Build wheels
|
|
35
|
+
uses: PyO3/maturin-action@v1
|
|
36
|
+
with:
|
|
37
|
+
target: ${{ matrix.target }}
|
|
38
|
+
args: --release --out dist --find-interpreter
|
|
39
|
+
sccache: 'true'
|
|
40
|
+
manylinux: ${{ matrix.target == 'aarch64' && '2_28' || 'auto' }}
|
|
41
|
+
- name: Upload wheels
|
|
42
|
+
uses: actions/upload-artifact@v4
|
|
43
|
+
with:
|
|
44
|
+
name: wheel-ubuntu-${{ matrix.target }}
|
|
45
|
+
path: dist
|
|
46
|
+
|
|
47
|
+
windows:
|
|
48
|
+
runs-on: windows-latest
|
|
49
|
+
strategy:
|
|
50
|
+
matrix:
|
|
51
|
+
target: [x64, x86]
|
|
52
|
+
steps:
|
|
53
|
+
- uses: actions/checkout@v4
|
|
54
|
+
- uses: actions/setup-python@v5
|
|
55
|
+
with:
|
|
56
|
+
python-version: '3.10'
|
|
57
|
+
architecture: ${{ matrix.target }}
|
|
58
|
+
- name: Build wheels
|
|
59
|
+
uses: PyO3/maturin-action@v1
|
|
60
|
+
with:
|
|
61
|
+
target: ${{ matrix.target }}
|
|
62
|
+
args: --release --out dist --find-interpreter
|
|
63
|
+
sccache: 'true'
|
|
64
|
+
- name: Upload wheels
|
|
65
|
+
uses: actions/upload-artifact@v4
|
|
66
|
+
with:
|
|
67
|
+
name: wheel-windows-${{ matrix.target }}
|
|
68
|
+
path: dist
|
|
69
|
+
|
|
70
|
+
macos:
|
|
71
|
+
runs-on: macos-latest
|
|
72
|
+
strategy:
|
|
73
|
+
matrix:
|
|
74
|
+
target: [x86_64, aarch64]
|
|
75
|
+
steps:
|
|
76
|
+
- uses: actions/checkout@v4
|
|
77
|
+
- uses: actions/setup-python@v5
|
|
78
|
+
with:
|
|
79
|
+
python-version: '3.10'
|
|
80
|
+
- name: Build wheels
|
|
81
|
+
uses: PyO3/maturin-action@v1
|
|
82
|
+
with:
|
|
83
|
+
target: ${{ matrix.target }}
|
|
84
|
+
args: --release --out dist --find-interpreter
|
|
85
|
+
sccache: 'true'
|
|
86
|
+
- name: Upload wheels
|
|
87
|
+
uses: actions/upload-artifact@v4
|
|
88
|
+
with:
|
|
89
|
+
name: wheel-macos-${{ matrix.target }}
|
|
90
|
+
path: dist
|
|
91
|
+
|
|
92
|
+
sdist:
|
|
93
|
+
runs-on: ubuntu-latest
|
|
94
|
+
steps:
|
|
95
|
+
- uses: actions/checkout@v4
|
|
96
|
+
- name: Build sdist
|
|
97
|
+
uses: PyO3/maturin-action@v1
|
|
98
|
+
with:
|
|
99
|
+
command: sdist
|
|
100
|
+
args: --out dist
|
|
101
|
+
- name: Upload sdist
|
|
102
|
+
uses: actions/upload-artifact@v4
|
|
103
|
+
with:
|
|
104
|
+
name: wheels
|
|
105
|
+
path: dist
|
|
106
|
+
|
|
107
|
+
release:
|
|
108
|
+
name: Release
|
|
109
|
+
runs-on: ubuntu-latest
|
|
110
|
+
needs: [linux, windows, macos, sdist]
|
|
111
|
+
steps:
|
|
112
|
+
- uses: actions/download-artifact@v4
|
|
113
|
+
with:
|
|
114
|
+
path: dist
|
|
115
|
+
merge-multiple: true
|
|
116
|
+
- name: Publish to PyPI
|
|
117
|
+
uses: PyO3/maturin-action@v1
|
|
118
|
+
env:
|
|
119
|
+
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
|
120
|
+
with:
|
|
121
|
+
command: upload
|
|
122
|
+
args: --non-interactive --skip-existing ./dist/*
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
name: ci-test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
# Skip the backend suite if all changes are docs
|
|
6
|
+
paths-ignore:
|
|
7
|
+
- "docs/**"
|
|
8
|
+
- "**/*.md"
|
|
9
|
+
- "**/*.qmd"
|
|
10
|
+
- "*.md"
|
|
11
|
+
- "codecov.yml"
|
|
12
|
+
- ".envrc"
|
|
13
|
+
branches:
|
|
14
|
+
- main
|
|
15
|
+
- master
|
|
16
|
+
tags:
|
|
17
|
+
- '*'
|
|
18
|
+
pull_request:
|
|
19
|
+
workflow_dispatch:
|
|
20
|
+
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
jobs:
|
|
26
|
+
linux:
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
strategy:
|
|
29
|
+
matrix:
|
|
30
|
+
target: [x86_64, x86]
|
|
31
|
+
python-version: ["3.10", "3.11"]
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v4
|
|
34
|
+
|
|
35
|
+
- name: rust latest
|
|
36
|
+
run: rustup update
|
|
37
|
+
|
|
38
|
+
- name: cargo cache
|
|
39
|
+
uses: actions/cache@v4
|
|
40
|
+
with:
|
|
41
|
+
path: |
|
|
42
|
+
~/.cargo/bin/
|
|
43
|
+
~/.cargo/registry/index/
|
|
44
|
+
~/.cargo/registry/cache/
|
|
45
|
+
~/.cargo/git/db/
|
|
46
|
+
./target/
|
|
47
|
+
key: cargo-cache-${{ matrix.python-version }}-${{ matrix.target }}-${{ hashFiles('**/Cargo.toml', '**/Cargo.lock') }}
|
|
48
|
+
|
|
49
|
+
- uses: actions/setup-python@v5
|
|
50
|
+
with:
|
|
51
|
+
python-version: ${{ matrix.python-version }}
|
|
52
|
+
|
|
53
|
+
- name: Install uv
|
|
54
|
+
uses: astral-sh/setup-uv@v5
|
|
55
|
+
with:
|
|
56
|
+
enable-cache: true
|
|
57
|
+
|
|
58
|
+
- name: Install the project
|
|
59
|
+
run: uv sync --locked --group dev --no-install-project
|
|
60
|
+
working-directory: ${{ github.workspace }}
|
|
61
|
+
|
|
62
|
+
- name: maturin develop
|
|
63
|
+
uses: PyO3/maturin-action@v1
|
|
64
|
+
with:
|
|
65
|
+
command: 'develop'
|
|
66
|
+
args: '--release --strip'
|
|
67
|
+
target: ${{ matrix.target }}
|
|
68
|
+
sccache: 'true'
|
|
69
|
+
manylinux: 'auto'
|
|
70
|
+
|
|
71
|
+
- name: pytest
|
|
72
|
+
run: uv run --no-sync pytest --import-mode=importlib --cov --cov-report=xml
|
|
73
|
+
working-directory: ${{ github.workspace }}
|
|
74
|
+
|
|
75
|
+
- name: Upload coverage reports to Codecov
|
|
76
|
+
uses: codecov/codecov-action@v5.4.0
|
|
77
|
+
with:
|
|
78
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/target
|
|
2
|
+
|
|
3
|
+
# Byte-compiled / optimized / DLL files
|
|
4
|
+
__pycache__/
|
|
5
|
+
.pytest_cache/
|
|
6
|
+
*.py[cod]
|
|
7
|
+
|
|
8
|
+
# C extensions
|
|
9
|
+
*.so
|
|
10
|
+
|
|
11
|
+
# Distribution / packaging
|
|
12
|
+
.Python
|
|
13
|
+
.venv/
|
|
14
|
+
env/
|
|
15
|
+
bin/
|
|
16
|
+
build/
|
|
17
|
+
develop-eggs/
|
|
18
|
+
dist/
|
|
19
|
+
eggs/
|
|
20
|
+
lib/
|
|
21
|
+
lib64/
|
|
22
|
+
parts/
|
|
23
|
+
sdist/
|
|
24
|
+
var/
|
|
25
|
+
include/
|
|
26
|
+
man/
|
|
27
|
+
venv/
|
|
28
|
+
*.egg-info/
|
|
29
|
+
.installed.cfg
|
|
30
|
+
*.egg
|
|
31
|
+
|
|
32
|
+
# Installer logs
|
|
33
|
+
pip-log.txt
|
|
34
|
+
pip-delete-this-directory.txt
|
|
35
|
+
pip-selfcheck.json
|
|
36
|
+
|
|
37
|
+
# Unit test / coverage reports
|
|
38
|
+
htmlcov/
|
|
39
|
+
.tox/
|
|
40
|
+
.coverage
|
|
41
|
+
.cache
|
|
42
|
+
nosetests.xml
|
|
43
|
+
coverage.xml
|
|
44
|
+
|
|
45
|
+
# Translations
|
|
46
|
+
*.mo
|
|
47
|
+
|
|
48
|
+
# Mr Developer
|
|
49
|
+
.mr.developer.cfg
|
|
50
|
+
.project
|
|
51
|
+
.pydevproject
|
|
52
|
+
|
|
53
|
+
# Rope
|
|
54
|
+
.ropeproject
|
|
55
|
+
|
|
56
|
+
# Django stuff:
|
|
57
|
+
*.log
|
|
58
|
+
*.pot
|
|
59
|
+
|
|
60
|
+
.DS_Store
|
|
61
|
+
|
|
62
|
+
# Sphinx documentation
|
|
63
|
+
docs/_build/
|
|
64
|
+
|
|
65
|
+
# PyCharm
|
|
66
|
+
.idea/
|
|
67
|
+
|
|
68
|
+
# VSCode
|
|
69
|
+
.vscode/
|
|
70
|
+
|
|
71
|
+
# Pyenv
|
|
72
|
+
.python-version
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
ci:
|
|
2
|
+
autofix_commit_msg: "style: auto fixes from pre-commit.ci hooks"
|
|
3
|
+
autofix_prs: false
|
|
4
|
+
autoupdate_commit_msg: "chore(deps): pre-commit.ci autoupdate"
|
|
5
|
+
skip:
|
|
6
|
+
- ruff
|
|
7
|
+
default_stages:
|
|
8
|
+
- pre-commit
|
|
9
|
+
repos:
|
|
10
|
+
- repo: https://github.com/codespell-project/codespell
|
|
11
|
+
rev: v2.4.1
|
|
12
|
+
hooks:
|
|
13
|
+
- id: codespell
|
|
14
|
+
additional_dependencies:
|
|
15
|
+
- tomli
|
|
16
|
+
args: [--ignore-words=.codespell.ignore-words]
|
|
17
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
18
|
+
# Ruff version.
|
|
19
|
+
rev: v0.11.2
|
|
20
|
+
hooks:
|
|
21
|
+
# Run the linter.
|
|
22
|
+
- id: ruff
|
|
23
|
+
args: ["--output-format=full", "--fix", "python"]
|
|
24
|
+
# Run the formatter.
|
|
25
|
+
- id: ruff-format
|
|
26
|
+
- repo: local
|
|
27
|
+
hooks:
|
|
28
|
+
- id: rust-fmt
|
|
29
|
+
name: Rust fmt
|
|
30
|
+
description: Run cargo fmt on files included in the commit. rustfmt should be installed before-hand.
|
|
31
|
+
entry: cargo fmt --all --
|
|
32
|
+
pass_filenames: true
|
|
33
|
+
types: [file, rust]
|
|
34
|
+
language: system
|
|
35
|
+
- id: rust-clippy
|
|
36
|
+
name: Rust clippy
|
|
37
|
+
description: Run cargo clippy on files included in the commit. clippy should be installed before-hand.
|
|
38
|
+
entry: cargo clippy --all-targets --all-features -- -Dclippy::all -Aclippy::redundant_closure
|
|
39
|
+
pass_filenames: false
|
|
40
|
+
types: [file, rust]
|
|
41
|
+
language: system
|
|
42
|
+
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
43
|
+
# uv version.
|
|
44
|
+
rev: 0.6.11
|
|
45
|
+
hooks:
|
|
46
|
+
# Update the uv lockfile
|
|
47
|
+
- id: uv-lock
|
|
48
|
+
- id: uv-export
|
|
49
|
+
args: ["--frozen", "--no-hashes", "--no-emit-project", "--all-groups", "--all-extras", "--output-file=requirements-dev.txt"]
|