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.
Files changed (102) hide show
  1. xorq_datafusion-0.1.0/.codespell.ignore-words +4 -0
  2. xorq_datafusion-0.1.0/.envrc +1 -0
  3. xorq_datafusion-0.1.0/.github/workflows/ci-lint.yml +76 -0
  4. xorq_datafusion-0.1.0/.github/workflows/ci-pre-release.yml +121 -0
  5. xorq_datafusion-0.1.0/.github/workflows/ci-release.yml +122 -0
  6. xorq_datafusion-0.1.0/.github/workflows/ci-test.yml +78 -0
  7. xorq_datafusion-0.1.0/.gitignore +72 -0
  8. xorq_datafusion-0.1.0/.pre-commit-config.yaml +49 -0
  9. xorq_datafusion-0.1.0/Cargo.lock +4628 -0
  10. xorq_datafusion-0.1.0/Cargo.toml +29 -0
  11. xorq_datafusion-0.1.0/PKG-INFO +13 -0
  12. xorq_datafusion-0.1.0/README.md +2 -0
  13. xorq_datafusion-0.1.0/data/data.rownum.parquet +0 -0
  14. xorq_datafusion-0.1.0/data/iris.csv +151 -0
  15. xorq_datafusion-0.1.0/pyproject.toml +33 -0
  16. xorq_datafusion-0.1.0/python/tests/__init__.py +0 -0
  17. xorq_datafusion-0.1.0/python/tests/conftest.py +8 -0
  18. xorq_datafusion-0.1.0/python/tests/test_basic.py +17 -0
  19. xorq_datafusion-0.1.0/python/xorq_datafusion/__init__.py +174 -0
  20. xorq_datafusion-0.1.0/src/catalog.rs +120 -0
  21. xorq_datafusion-0.1.0/src/common/data_type.rs +790 -0
  22. xorq_datafusion-0.1.0/src/common/df_schema.rs +57 -0
  23. xorq_datafusion-0.1.0/src/common/function.rs +55 -0
  24. xorq_datafusion-0.1.0/src/common/schema.rs +220 -0
  25. xorq_datafusion-0.1.0/src/common.rs +38 -0
  26. xorq_datafusion-0.1.0/src/context.rs +563 -0
  27. xorq_datafusion-0.1.0/src/dataframe.rs +421 -0
  28. xorq_datafusion-0.1.0/src/dataset.rs +116 -0
  29. xorq_datafusion-0.1.0/src/dataset_exec.rs +288 -0
  30. xorq_datafusion-0.1.0/src/errors.rs +80 -0
  31. xorq_datafusion-0.1.0/src/expr/aggregate.rs +160 -0
  32. xorq_datafusion-0.1.0/src/expr/aggregate_expr.rs +80 -0
  33. xorq_datafusion-0.1.0/src/expr/alias.rs +67 -0
  34. xorq_datafusion-0.1.0/src/expr/analyze.rs +85 -0
  35. xorq_datafusion-0.1.0/src/expr/between.rs +76 -0
  36. xorq_datafusion-0.1.0/src/expr/binary_expr.rs +57 -0
  37. xorq_datafusion-0.1.0/src/expr/bool_expr.rs +322 -0
  38. xorq_datafusion-0.1.0/src/expr/case.rs +57 -0
  39. xorq_datafusion-0.1.0/src/expr/cast.rs +82 -0
  40. xorq_datafusion-0.1.0/src/expr/column.rs +60 -0
  41. xorq_datafusion-0.1.0/src/expr/conditional_expr.rs +54 -0
  42. xorq_datafusion-0.1.0/src/expr/create_memory_table.rs +97 -0
  43. xorq_datafusion-0.1.0/src/expr/create_view.rs +105 -0
  44. xorq_datafusion-0.1.0/src/expr/distinct.rs +95 -0
  45. xorq_datafusion-0.1.0/src/expr/drop_table.rs +89 -0
  46. xorq_datafusion-0.1.0/src/expr/empty_relation.rs +91 -0
  47. xorq_datafusion-0.1.0/src/expr/exists.rs +45 -0
  48. xorq_datafusion-0.1.0/src/expr/explain.rs +110 -0
  49. xorq_datafusion-0.1.0/src/expr/extension.rs +52 -0
  50. xorq_datafusion-0.1.0/src/expr/filter.rs +87 -0
  51. xorq_datafusion-0.1.0/src/expr/grouping_set.rs +37 -0
  52. xorq_datafusion-0.1.0/src/expr/in_list.rs +53 -0
  53. xorq_datafusion-0.1.0/src/expr/in_subquery.rs +54 -0
  54. xorq_datafusion-0.1.0/src/expr/join.rs +199 -0
  55. xorq_datafusion-0.1.0/src/expr/like.rs +196 -0
  56. xorq_datafusion-0.1.0/src/expr/limit.rs +122 -0
  57. xorq_datafusion-0.1.0/src/expr/literal.rs +163 -0
  58. xorq_datafusion-0.1.0/src/expr/logical_node.rs +29 -0
  59. xorq_datafusion-0.1.0/src/expr/ordered.rs +57 -0
  60. xorq_datafusion-0.1.0/src/expr/placeholder.rs +48 -0
  61. xorq_datafusion-0.1.0/src/expr/projection.rs +119 -0
  62. xorq_datafusion-0.1.0/src/expr/repartition.rs +127 -0
  63. xorq_datafusion-0.1.0/src/expr/scalar_subquery.rs +46 -0
  64. xorq_datafusion-0.1.0/src/expr/scalar_variable.rs +53 -0
  65. xorq_datafusion-0.1.0/src/expr/signature.rs +39 -0
  66. xorq_datafusion-0.1.0/src/expr/sort.rs +102 -0
  67. xorq_datafusion-0.1.0/src/expr/sort_expr.rs +90 -0
  68. xorq_datafusion-0.1.0/src/expr/subquery.rs +81 -0
  69. xorq_datafusion-0.1.0/src/expr/subquery_alias.rs +91 -0
  70. xorq_datafusion-0.1.0/src/expr/table_scan.rs +152 -0
  71. xorq_datafusion-0.1.0/src/expr/union.rs +89 -0
  72. xorq_datafusion-0.1.0/src/expr/wildcard.rs +26 -0
  73. xorq_datafusion-0.1.0/src/expr/window.rs +302 -0
  74. xorq_datafusion-0.1.0/src/expr.rs +870 -0
  75. xorq_datafusion-0.1.0/src/functions/greatest.rs +126 -0
  76. xorq_datafusion-0.1.0/src/functions/hash_int.rs +85 -0
  77. xorq_datafusion-0.1.0/src/functions/least.rs +125 -0
  78. xorq_datafusion-0.1.0/src/functions/min_max.rs +226 -0
  79. xorq_datafusion-0.1.0/src/functions.rs +4 -0
  80. xorq_datafusion-0.1.0/src/ibis_filter_expression.rs +129 -0
  81. xorq_datafusion-0.1.0/src/ibis_table.rs +124 -0
  82. xorq_datafusion-0.1.0/src/ibis_table_exec.rs +172 -0
  83. xorq_datafusion-0.1.0/src/lib.rs +87 -0
  84. xorq_datafusion-0.1.0/src/model.rs +4 -0
  85. xorq_datafusion-0.1.0/src/object_storage.rs +486 -0
  86. xorq_datafusion-0.1.0/src/optimizer.rs +124 -0
  87. xorq_datafusion-0.1.0/src/physical_plan.rs +77 -0
  88. xorq_datafusion-0.1.0/src/provider.rs +110 -0
  89. xorq_datafusion-0.1.0/src/py_record_batch_provider.rs +254 -0
  90. xorq_datafusion-0.1.0/src/pyarrow_filter_expression.rs +169 -0
  91. xorq_datafusion-0.1.0/src/pyarrow_util.rs +61 -0
  92. xorq_datafusion-0.1.0/src/record_batch.rs +105 -0
  93. xorq_datafusion-0.1.0/src/sql/builder.rs +90 -0
  94. xorq_datafusion-0.1.0/src/sql/exceptions.rs +42 -0
  95. xorq_datafusion-0.1.0/src/sql/logical.rs +129 -0
  96. xorq_datafusion-0.1.0/src/sql/parser.rs +143 -0
  97. xorq_datafusion-0.1.0/src/sql.rs +21 -0
  98. xorq_datafusion-0.1.0/src/udaf.rs +160 -0
  99. xorq_datafusion-0.1.0/src/udf.rs +68 -0
  100. xorq_datafusion-0.1.0/src/udwf.rs +314 -0
  101. xorq_datafusion-0.1.0/src/utils.rs +112 -0
  102. xorq_datafusion-0.1.0/uv.lock +468 -0
@@ -0,0 +1,4 @@
1
+ notin
2
+ curev
3
+ alls
4
+ abd
@@ -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"]