cachebox 6.2.2__tar.gz → 6.2.5__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 (85) hide show
  1. cachebox-6.2.5/.github/dependabot.yaml +13 -0
  2. cachebox-6.2.5/.github/workflows/CI.yml +240 -0
  3. cachebox-6.2.5/.github/workflows/docs.yml +55 -0
  4. cachebox-6.2.5/.github/workflows/python-test.yml +122 -0
  5. {cachebox-6.2.2 → cachebox-6.2.5}/Cargo.lock +51 -51
  6. {cachebox-6.2.2 → cachebox-6.2.5}/Cargo.toml +6 -6
  7. {cachebox-6.2.2 → cachebox-6.2.5}/PKG-INFO +49 -24
  8. {cachebox-6.2.2 → cachebox-6.2.5}/README.md +38 -18
  9. {cachebox-6.2.2 → cachebox-6.2.5}/cachebox/_core.pyi +107 -63
  10. {cachebox-6.2.2 → cachebox-6.2.5}/docs/docs/getting-started.md +1 -1
  11. {cachebox-6.2.2 → cachebox-6.2.5}/pyproject.toml +48 -18
  12. cachebox-6.2.5/rust-toolchain.toml +2 -0
  13. {cachebox-6.2.2 → cachebox-6.2.5}/src/hashbrown/control/bitmask.rs +4 -1
  14. {cachebox-6.2.2 → cachebox-6.2.5}/src/hashbrown/control/group/lsx.rs +2 -1
  15. {cachebox-6.2.2 → cachebox-6.2.5}/src/hashbrown/control/group/mod.rs +4 -1
  16. {cachebox-6.2.2 → cachebox-6.2.5}/src/hashbrown/control/group/neon.rs +2 -1
  17. {cachebox-6.2.2 → cachebox-6.2.5}/src/hashbrown/control/group/sse2.rs +2 -1
  18. cachebox-6.2.5/src/hashbrown/control/mod.rs +9 -0
  19. {cachebox-6.2.2 → cachebox-6.2.5}/src/hashbrown/control/tag.rs +2 -1
  20. {cachebox-6.2.2 → cachebox-6.2.5}/src/hashbrown/raw.rs +1 -1
  21. {cachebox-6.2.2 → cachebox-6.2.5}/src/hashbrown/scopeguard.rs +4 -5
  22. {cachebox-6.2.2 → cachebox-6.2.5}/src/internal/lazyheap.rs +18 -0
  23. cachebox-6.2.5/src/internal/linked_list.rs +661 -0
  24. {cachebox-6.2.2 → cachebox-6.2.5}/src/internal/onceinit.rs +2 -2
  25. {cachebox-6.2.2 → cachebox-6.2.5}/src/internal/pickle.rs +13 -4
  26. {cachebox-6.2.2 → cachebox-6.2.5}/src/internal/utils.rs +39 -1
  27. {cachebox-6.2.2 → cachebox-6.2.5}/src/lib.rs +11 -9
  28. {cachebox-6.2.2 → cachebox-6.2.5}/src/macro_rules.rs +27 -0
  29. {cachebox-6.2.2 → cachebox-6.2.5}/src/policies/common.rs +1 -1
  30. {cachebox-6.2.2 → cachebox-6.2.5}/src/policies/fifopolicy.rs +8 -8
  31. {cachebox-6.2.2 → cachebox-6.2.5}/src/policies/lfupolicy.rs +2 -1
  32. {cachebox-6.2.2 → cachebox-6.2.5}/src/policies/lrupolicy.rs +10 -3
  33. {cachebox-6.2.2 → cachebox-6.2.5}/src/policies/mod.rs +1 -3
  34. {cachebox-6.2.2 → cachebox-6.2.5}/src/policies/nopolicy.rs +4 -3
  35. {cachebox-6.2.2 → cachebox-6.2.5}/src/policies/rrpolicy.rs +3 -2
  36. {cachebox-6.2.2 → cachebox-6.2.5}/src/policies/traits.rs +7 -6
  37. {cachebox-6.2.2 → cachebox-6.2.5}/src/policies/ttlpolicy.rs +8 -8
  38. {cachebox-6.2.2 → cachebox-6.2.5}/src/policies/vttlpolicy.rs +2 -3
  39. {cachebox-6.2.2 → cachebox-6.2.5}/src/policies/wrapped.rs +2 -2
  40. {cachebox-6.2.2 → cachebox-6.2.5}/src/pyclasses/cache.rs +60 -38
  41. {cachebox-6.2.2 → cachebox-6.2.5}/src/pyclasses/fifocache.rs +57 -35
  42. {cachebox-6.2.2 → cachebox-6.2.5}/src/pyclasses/lfucache.rs +61 -36
  43. {cachebox-6.2.2 → cachebox-6.2.5}/src/pyclasses/lrucache.rs +56 -34
  44. {cachebox-6.2.2 → cachebox-6.2.5}/src/pyclasses/rrcache.rs +55 -33
  45. {cachebox-6.2.2 → cachebox-6.2.5}/src/pyclasses/ttlcache.rs +80 -43
  46. {cachebox-6.2.2 → cachebox-6.2.5}/src/pyclasses/vttlcache.rs +69 -32
  47. {cachebox-6.2.2 → cachebox-6.2.5}/tests/mixins.py +137 -0
  48. {cachebox-6.2.2 → cachebox-6.2.5}/tests/test_impls.py +87 -0
  49. {cachebox-6.2.2 → cachebox-6.2.5}/tests/test_utils.py +2 -2
  50. cachebox-6.2.5/typos.toml +13 -0
  51. cachebox-6.2.5/uv.lock +1025 -0
  52. cachebox-6.2.2/.github/workflows/CI.yml +0 -222
  53. cachebox-6.2.2/.github/workflows/docs.yml +0 -48
  54. cachebox-6.2.2/.github/workflows/python-test.yml +0 -79
  55. cachebox-6.2.2/requirements-dev.txt +0 -7
  56. cachebox-6.2.2/src/hashbrown/control/mod.rs +0 -10
  57. cachebox-6.2.2/src/internal/linked_list.rs +0 -455
  58. {cachebox-6.2.2 → cachebox-6.2.5}/.gitignore +0 -0
  59. {cachebox-6.2.2 → cachebox-6.2.5}/LICENSE +0 -0
  60. {cachebox-6.2.2 → cachebox-6.2.5}/LICENSE-THIRD-PARTY +0 -0
  61. {cachebox-6.2.2 → cachebox-6.2.5}/build.rs +0 -0
  62. {cachebox-6.2.2 → cachebox-6.2.5}/cachebox/__init__.py +0 -0
  63. {cachebox-6.2.2 → cachebox-6.2.5}/cachebox/_cachebox.py +0 -0
  64. {cachebox-6.2.2 → cachebox-6.2.5}/cachebox/_wrappers.py +0 -0
  65. {cachebox-6.2.2 → cachebox-6.2.5}/cachebox/utils.py +0 -0
  66. {cachebox-6.2.2 → cachebox-6.2.5}/docs/docs/api/impls.md +0 -0
  67. {cachebox-6.2.2 → cachebox-6.2.5}/docs/docs/api/index.md +0 -0
  68. {cachebox-6.2.2 → cachebox-6.2.5}/docs/docs/api/utils.md +0 -0
  69. {cachebox-6.2.2 → cachebox-6.2.5}/docs/docs/index.md +0 -0
  70. {cachebox-6.2.2 → cachebox-6.2.5}/docs/docs/installation.md +0 -0
  71. {cachebox-6.2.2 → cachebox-6.2.5}/docs/docs/migration.md +0 -0
  72. {cachebox-6.2.2 → cachebox-6.2.5}/docs/docs/tips.md +0 -0
  73. {cachebox-6.2.2 → cachebox-6.2.5}/docs/mkdocs.yml +0 -0
  74. {cachebox-6.2.2 → cachebox-6.2.5}/rustfmt.toml +0 -0
  75. {cachebox-6.2.2 → cachebox-6.2.5}/src/hashbrown/alloc.rs +0 -0
  76. {cachebox-6.2.2 → cachebox-6.2.5}/src/hashbrown/control/group/generic.rs +0 -0
  77. {cachebox-6.2.2 → cachebox-6.2.5}/src/hashbrown/mod.rs +0 -0
  78. {cachebox-6.2.2 → cachebox-6.2.5}/src/hashbrown/util.rs +0 -0
  79. {cachebox-6.2.2 → cachebox-6.2.5}/src/internal/alias.rs +0 -0
  80. {cachebox-6.2.2 → cachebox-6.2.5}/src/internal/mod.rs +0 -0
  81. {cachebox-6.2.2 → cachebox-6.2.5}/src/pyclasses/base.rs +0 -0
  82. {cachebox-6.2.2 → cachebox-6.2.5}/src/pyclasses/mod.rs +0 -0
  83. {cachebox-6.2.2 → cachebox-6.2.5}/src/typeref.rs +0 -0
  84. {cachebox-6.2.2 → cachebox-6.2.5}/tests/__init__.py +0 -0
  85. {cachebox-6.2.2 → cachebox-6.2.5}/tests/conftest.py +0 -0
@@ -0,0 +1,13 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "github-actions" # zizmor: ignore[dependabot-cooldown]
4
+ directory: "/"
5
+ schedule:
6
+ interval: "weekly"
7
+ target-branch: main
8
+
9
+ - package-ecosystem: "cargo" # zizmor: ignore[dependabot-cooldown]
10
+ directory: "/"
11
+ schedule:
12
+ interval: "weekly"
13
+ target-branch: main
@@ -0,0 +1,240 @@
1
+ name: Publish
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "*"
7
+
8
+ workflow_dispatch:
9
+
10
+ permissions: {}
11
+
12
+ concurrency:
13
+ group: ci-${{ github.ref }}
14
+ cancel-in-progress: ${{ github.ref_type != 'tag' }}
15
+
16
+ env:
17
+ (^_^): &interpreters "3.10 3.11 3.12 3.13 3.14 3.14t 3.15 3.15t pypy3.11"
18
+ ○_○: &interpreters_without_pypy "3.10 3.11 3.12 3.13 3.14 3.14t 3.15 3.15t"
19
+
20
+ jobs:
21
+ tools:
22
+ name: ${{ matrix.name }}
23
+ runs-on: ubuntu-latest
24
+
25
+ strategy:
26
+ matrix:
27
+ include:
28
+ - name: "zizmor"
29
+ command: zizmor .github/
30
+
31
+ - name: "typos"
32
+ command: typos --config typos.toml
33
+
34
+ steps:
35
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
36
+ with:
37
+ persist-credentials: false
38
+
39
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
40
+ with:
41
+ python-version: "3.14"
42
+
43
+ - name: "Install uv"
44
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
45
+ with:
46
+ # zizmor: ignore[cache-poisoning]
47
+ enable-cache: ${{ github.event_name == 'pull_request' }}
48
+
49
+ - name: "Install ${{ matrix.name }}"
50
+ run: uv pip install --group ${{ matrix.name }} --system
51
+
52
+ - name: "Run ${{ matrix.name }}"
53
+ run: ${{ matrix.command }}
54
+
55
+ build-linux:
56
+ runs-on: ubuntu-latest
57
+ strategy:
58
+ matrix:
59
+ platform:
60
+ - { target: x86_64, interpreter: *interpreters }
61
+ - { target: x86, interpreter: *interpreters }
62
+ - { target: aarch64, interpreter: *interpreters }
63
+ - { target: armv7, interpreter: *interpreters }
64
+ - { target: s390x, interpreter: *interpreters }
65
+ - { target: ppc64le, interpreter: *interpreters }
66
+
67
+ steps:
68
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
69
+ with:
70
+ persist-credentials: false
71
+
72
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
73
+ with:
74
+ python-version: "3.x"
75
+
76
+ - uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
77
+ # zizmor: ignore[cache-poisoning]
78
+ with:
79
+ target: ${{ matrix.platform.target }}
80
+ sccache: ${{ github.ref_type != 'tag' }}
81
+ manylinux: auto
82
+ args: >-
83
+ --release
84
+ --out dist
85
+ --interpreter ${{ matrix.platform.interpreter }}
86
+ --compatibility pypi
87
+
88
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
89
+ with:
90
+ name: wheels-linux-${{ matrix.platform.target }}
91
+ path: dist
92
+
93
+ build-musllinux:
94
+ runs-on: ubuntu-latest
95
+ strategy:
96
+ matrix:
97
+ platform:
98
+ - { target: x86_64, interpreter: *interpreters }
99
+ - { target: x86, interpreter: *interpreters }
100
+ - { target: aarch64, interpreter: *interpreters }
101
+ - { target: armv7, interpreter: *interpreters }
102
+
103
+ steps:
104
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
105
+ with:
106
+ persist-credentials: false
107
+
108
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
109
+ with:
110
+ python-version: "3.x"
111
+
112
+ - uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
113
+ # zizmor: ignore[cache-poisoning]
114
+ with:
115
+ target: ${{ matrix.platform.target }}
116
+ sccache: ${{ github.ref_type != 'tag' }}
117
+ manylinux: musllinux_1_2
118
+ args: >-
119
+ --release
120
+ --out dist
121
+ --interpreter ${{ matrix.platform.interpreter }}
122
+ --compatibility pypi
123
+
124
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
125
+ with:
126
+ name: wheels-musllinux-${{ matrix.platform.target }}
127
+ path: dist
128
+
129
+ build-windows:
130
+ runs-on: windows-latest
131
+ strategy:
132
+ matrix:
133
+ platform:
134
+ - { target: x64, interpreter: *interpreters }
135
+ - { target: x86, interpreter: *interpreters_without_pypy }
136
+
137
+ steps:
138
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
139
+ with:
140
+ persist-credentials: false
141
+
142
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
143
+ with:
144
+ python-version: "3.x"
145
+ architecture: ${{ matrix.platform.target }}
146
+
147
+ - uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
148
+ # zizmor: ignore[cache-poisoning]
149
+ with:
150
+ target: ${{ matrix.platform.target }}
151
+ sccache: ${{ github.ref_type != 'tag' }}
152
+ args: >-
153
+ --release
154
+ --out dist
155
+ --interpreter ${{ matrix.platform.interpreter }}
156
+ --compatibility pypi
157
+
158
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
159
+ with:
160
+ name: wheels-windows-${{ matrix.platform.target }}
161
+ path: dist
162
+
163
+ build-macos:
164
+ runs-on: macos-latest
165
+ strategy:
166
+ matrix:
167
+ platform:
168
+ - { target: x86_64, interpreter: *interpreters }
169
+ - { target: aarch64, interpreter: *interpreters }
170
+
171
+ steps:
172
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
173
+ with:
174
+ persist-credentials: false
175
+
176
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
177
+ with:
178
+ python-version: "3.x"
179
+
180
+ - uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
181
+ # zizmor: ignore[cache-poisoning]
182
+ with:
183
+ target: ${{ matrix.platform.target }}
184
+ sccache: ${{ github.ref_type != 'tag' }}
185
+ args: >-
186
+ --release
187
+ --out dist
188
+ --interpreter ${{ matrix.platform.interpreter }}
189
+ --compatibility pypi
190
+
191
+ - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
192
+ with:
193
+ name: wheels-macos-${{ matrix.platform.target }}
194
+ path: dist
195
+
196
+ build-sdist:
197
+ runs-on: ubuntu-latest
198
+ steps:
199
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
200
+ with:
201
+ persist-credentials: false
202
+
203
+ - name: Build sdist
204
+ uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
205
+ with:
206
+ command: sdist
207
+ args: --out dist
208
+
209
+ - name: Upload sdist
210
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
211
+ with:
212
+ name: wheels-sdist
213
+ path: dist
214
+
215
+ release:
216
+ runs-on: ubuntu-latest
217
+ if: github.ref_type == 'tag' || github.event_name == 'workflow_dispatch'
218
+ needs:
219
+ - build-linux
220
+ - build-musllinux
221
+ - build-windows
222
+ - build-macos
223
+ - build-sdist
224
+
225
+ permissions:
226
+ id-token: write
227
+ contents: write
228
+
229
+ steps:
230
+ - uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
231
+ with:
232
+ pattern: wheels-*
233
+ merge-multiple: true
234
+ path: dist
235
+
236
+ - name: Publish to PyPI
237
+ if: github.ref_type == 'tag'
238
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
239
+ with:
240
+ packages-dir: dist
@@ -0,0 +1,55 @@
1
+ name: Deploy Docs
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ jobs:
7
+ build:
8
+ runs-on: ubuntu-latest
9
+ permissions:
10
+ contents: write
11
+
12
+ steps:
13
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
14
+ # zizmor: ignore[artipacked]
15
+ with:
16
+ fetch-depth: 0
17
+
18
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
19
+ with:
20
+ python-version: 3.14
21
+
22
+ - name: "Install uv"
23
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
24
+ with:
25
+ enable-cache: false
26
+
27
+ - run: uv pip install --group docs --system
28
+ - run: mkdocs gh-deploy --config-file docs/mkdocs.yml --force
29
+
30
+ deploy_mkdocs:
31
+ needs: build
32
+ permissions:
33
+ pages: write
34
+ id-token: write
35
+
36
+ environment:
37
+ name: github-pages
38
+ url: ${{ steps.deployment.outputs.page_url }}
39
+
40
+ runs-on: ubuntu-latest
41
+
42
+ steps:
43
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
44
+ with:
45
+ ref: gh-pages
46
+ persist-credentials: false
47
+
48
+ - uses: actions/configure-pages@45bfe0192ca1faeb007ade9deae92b16b8254a0d # v6.0.0
49
+
50
+ - uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
51
+ with:
52
+ path: "."
53
+
54
+ - id: deployment
55
+ uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0
@@ -0,0 +1,122 @@
1
+ name: Python Test
2
+
3
+ on:
4
+ pull_request:
5
+ workflow_dispatch:
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ concurrency:
11
+ group: tests-${{ github.ref }}
12
+ cancel-in-progress: true
13
+
14
+ env:
15
+ RUST_BACKTRACE: 1
16
+ UV_PYTHON_DOWNLOADS: 0
17
+
18
+ jobs:
19
+ test-python:
20
+ name: ${{ matrix.python-version }}
21
+ runs-on: ubuntu-latest
22
+ continue-on-error: ${{ endsWith(matrix.python-version, 't') }}
23
+ strategy:
24
+ fail-fast: false
25
+ matrix:
26
+ python-version: [
27
+ "3.10",
28
+ "3.11",
29
+ "3.12",
30
+ "3.13",
31
+ "3.14", "3.14t",
32
+ "3.15", "3.15t",
33
+ "pypy3.11",
34
+ ]
35
+
36
+ steps:
37
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
38
+ with:
39
+ persist-credentials: false
40
+
41
+ - uses: dtolnay/rust-toolchain@stable # zizmor: ignore[unpinned-uses]
42
+
43
+ - uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
44
+ if: github.event_name == 'pull_request' && github.run_attempt == 1
45
+ with:
46
+ lookup-only: false # zizmor: ignore[cache-poisoning]
47
+ shared-key: ${{ matrix.python-version }}
48
+
49
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
50
+ with:
51
+ python-version: ${{ matrix.python-version }}
52
+ allow-prereleases: true
53
+
54
+ - name: "Install uv"
55
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
56
+ with:
57
+ enable-cache: false
58
+
59
+ - name: "Create and activate .venv"
60
+ run: |
61
+ uv venv .venv --python ${{ matrix.python-version }}
62
+ echo ".venv/bin" >> "$GITHUB_PATH"
63
+ echo "PYO3_PYTHON=.venv/bin/python3" >> "$GITHUB_ENV"
64
+
65
+ - name: "Install dependencies"
66
+ run: uv pip install --group ci
67
+
68
+ - name: "Run maturin"
69
+ run: maturin develop --features use-small-offset
70
+
71
+ - name: "Run pytest"
72
+ run: pytest -v -n auto
73
+ env:
74
+ HYPOTHESIS_PROFILE: slow
75
+
76
+ test-os:
77
+ name: ${{ matrix.os }}
78
+ runs-on: ${{ matrix.os }}-latest
79
+ strategy:
80
+ fail-fast: false
81
+ matrix:
82
+ os: [ubuntu, macos, windows]
83
+
84
+ steps:
85
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
86
+ with:
87
+ persist-credentials: false
88
+
89
+ - uses: dtolnay/rust-toolchain@stable # zizmor: ignore[unpinned-uses]
90
+
91
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
92
+ with:
93
+ python-version: "3.13"
94
+
95
+ - name: "Install uv"
96
+ uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
97
+ with:
98
+ enable-cache: false
99
+
100
+ - name: "Create and activate .venv"
101
+ shell: bash
102
+ run: |
103
+ uv venv .venv --python 3.13
104
+ if [[ "${{ matrix.os }}" == "windows" ]]; then
105
+ echo ".venv/Scripts" >> "$GITHUB_PATH"
106
+ echo "PYO3_PYTHON=.venv/Scripts/python" >> "$GITHUB_ENV"
107
+ echo "UV_LINK_MODE=copy" >> "$GITHUB_ENV"
108
+ else
109
+ echo ".venv/bin" >> "$GITHUB_PATH"
110
+ echo "PYO3_PYTHON=.venv/bin/python3" >> "$GITHUB_ENV"
111
+ fi
112
+
113
+ - name: "Install dependencies"
114
+ run: uv pip install --group ci
115
+
116
+ - name: "Run maturin"
117
+ run: maturin develop --features use-small-offset
118
+
119
+ - name: "Run pytest"
120
+ run: pytest -v -n auto
121
+ env:
122
+ HYPOTHESIS_PROFILE: slow