wavelet-matrix 2.2.1__tar.gz → 2.2.4__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.
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/.github/workflows/CI.yml +24 -28
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/Cargo.lock +124 -32
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/Cargo.toml +3 -2
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/PKG-INFO +1 -7
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/README.md +0 -6
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/benchmarks/bench_disk_wavelet_matrix.py +11 -11
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/pyproject.toml +1 -1
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/disk_wavelet_matrix/disk_bit_vector.rs +131 -65
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/disk_wavelet_matrix/disk_wavelet_matrix.rs +158 -52
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/lib.rs +1 -1
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/python/wavelet_matrix.rs +101 -73
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/.gitignore +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/LICENSE +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/benchmarks/__init__.py +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/benchmarks/bench_dynamic_wavelet_matrix.py +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/benchmarks/bench_wavelet_matrix.py +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/docs/index.html +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/docs/wavelet_matrix.html +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/pdoc_templates/error.html.jinja2 +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/pdoc_templates/frame.html.jinja2 +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/pdoc_templates/index.html.jinja2 +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/pdoc_templates/module.html.jinja2 +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/disk_wavelet_matrix/mod.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/dynamic_wavelet_matrix/dynamic_bit_vector.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/dynamic_wavelet_matrix/dynamic_wavelet_matrix.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/dynamic_wavelet_matrix/mod.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/python/dynamic_wavelet_matrix.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/python/mod.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/traits/bit_vector/bit_vector.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/traits/bit_vector/dynamic_bit_vector.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/traits/bit_vector/mod.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/traits/mod.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/traits/utils/bit_select.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/traits/utils/bit_width.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/traits/utils/mod.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/traits/wavelet_matrix/dynamic_wavelet_matrix.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/traits/wavelet_matrix/mod.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/traits/wavelet_matrix/wavelet_matrix.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/wavelet_matrix/bit_vector.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/wavelet_matrix/mod.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/src/wavelet_matrix/wavelet_matrix.rs +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/tests/__init__.py +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/tests/test_disk_wavelet_matrix.py +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/tests/test_dynamic_wavelet_matrix.py +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/tests/test_wavelet_matrix.py +0 -0
- {wavelet_matrix-2.2.1 → wavelet_matrix-2.2.4}/wavelet_matrix.pyi +0 -0
|
@@ -42,8 +42,8 @@ jobs:
|
|
|
42
42
|
- runner: ubuntu-latest
|
|
43
43
|
target: ppc64le
|
|
44
44
|
steps:
|
|
45
|
-
- uses: actions/checkout@
|
|
46
|
-
- uses: actions/setup-python@
|
|
45
|
+
- uses: actions/checkout@v7
|
|
46
|
+
- uses: actions/setup-python@v7
|
|
47
47
|
with:
|
|
48
48
|
python-version: 3.x
|
|
49
49
|
- name: Build wheels
|
|
@@ -55,7 +55,7 @@ jobs:
|
|
|
55
55
|
manylinux: auto
|
|
56
56
|
- name: Upload wheels
|
|
57
57
|
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
|
|
58
|
-
uses: actions/upload-artifact@
|
|
58
|
+
uses: actions/upload-artifact@v7
|
|
59
59
|
with:
|
|
60
60
|
name: wheels-linux-${{ matrix.platform.target }}
|
|
61
61
|
path: dist
|
|
@@ -75,8 +75,8 @@ jobs:
|
|
|
75
75
|
- runner: ubuntu-latest
|
|
76
76
|
target: armv7
|
|
77
77
|
steps:
|
|
78
|
-
- uses: actions/checkout@
|
|
79
|
-
- uses: actions/setup-python@
|
|
78
|
+
- uses: actions/checkout@v7
|
|
79
|
+
- uses: actions/setup-python@v7
|
|
80
80
|
with:
|
|
81
81
|
python-version: 3.x
|
|
82
82
|
- name: Build wheels
|
|
@@ -88,7 +88,7 @@ jobs:
|
|
|
88
88
|
manylinux: musllinux_1_2
|
|
89
89
|
- name: Upload wheels
|
|
90
90
|
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
|
|
91
|
-
uses: actions/upload-artifact@
|
|
91
|
+
uses: actions/upload-artifact@v7
|
|
92
92
|
with:
|
|
93
93
|
name: wheels-musllinux-${{ matrix.platform.target }}
|
|
94
94
|
path: dist
|
|
@@ -104,8 +104,8 @@ jobs:
|
|
|
104
104
|
- runner: windows-latest
|
|
105
105
|
target: x86
|
|
106
106
|
steps:
|
|
107
|
-
- uses: actions/checkout@
|
|
108
|
-
- uses: actions/setup-python@
|
|
107
|
+
- uses: actions/checkout@v7
|
|
108
|
+
- uses: actions/setup-python@v7
|
|
109
109
|
with:
|
|
110
110
|
python-version: 3.x
|
|
111
111
|
architecture: ${{ matrix.platform.target }}
|
|
@@ -117,7 +117,7 @@ jobs:
|
|
|
117
117
|
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
118
118
|
- name: Upload wheels
|
|
119
119
|
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
|
|
120
|
-
uses: actions/upload-artifact@
|
|
120
|
+
uses: actions/upload-artifact@v7
|
|
121
121
|
with:
|
|
122
122
|
name: wheels-windows-${{ matrix.platform.target }}
|
|
123
123
|
path: dist
|
|
@@ -133,8 +133,8 @@ jobs:
|
|
|
133
133
|
- runner: macos-latest
|
|
134
134
|
target: aarch64
|
|
135
135
|
steps:
|
|
136
|
-
- uses: actions/checkout@
|
|
137
|
-
- uses: actions/setup-python@
|
|
136
|
+
- uses: actions/checkout@v7
|
|
137
|
+
- uses: actions/setup-python@v7
|
|
138
138
|
with:
|
|
139
139
|
python-version: 3.x
|
|
140
140
|
- name: Build wheels
|
|
@@ -145,7 +145,7 @@ jobs:
|
|
|
145
145
|
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
|
|
146
146
|
- name: Upload wheels
|
|
147
147
|
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
|
|
148
|
-
uses: actions/upload-artifact@
|
|
148
|
+
uses: actions/upload-artifact@v7
|
|
149
149
|
with:
|
|
150
150
|
name: wheels-macos-${{ matrix.platform.target }}
|
|
151
151
|
path: dist
|
|
@@ -154,8 +154,8 @@ jobs:
|
|
|
154
154
|
needs: [cargo-test, python-test]
|
|
155
155
|
runs-on: ubuntu-latest
|
|
156
156
|
steps:
|
|
157
|
-
- uses: actions/checkout@
|
|
158
|
-
- uses: actions/setup-python@
|
|
157
|
+
- uses: actions/checkout@v7
|
|
158
|
+
- uses: actions/setup-python@v7
|
|
159
159
|
with:
|
|
160
160
|
python-version: 3.x
|
|
161
161
|
- name: Build sdist
|
|
@@ -165,7 +165,7 @@ jobs:
|
|
|
165
165
|
args: --out dist
|
|
166
166
|
- name: Upload sdist
|
|
167
167
|
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
|
|
168
|
-
uses: actions/upload-artifact@
|
|
168
|
+
uses: actions/upload-artifact@v7
|
|
169
169
|
with:
|
|
170
170
|
name: wheels-sdist
|
|
171
171
|
path: dist
|
|
@@ -173,7 +173,7 @@ jobs:
|
|
|
173
173
|
cargo-test:
|
|
174
174
|
runs-on: ubuntu-latest
|
|
175
175
|
steps:
|
|
176
|
-
- uses: actions/checkout@
|
|
176
|
+
- uses: actions/checkout@v7
|
|
177
177
|
- uses: dtolnay/rust-toolchain@stable
|
|
178
178
|
with:
|
|
179
179
|
components: clippy
|
|
@@ -191,7 +191,7 @@ jobs:
|
|
|
191
191
|
- name: Clippy check
|
|
192
192
|
run: cargo clippy --all-targets --all-features -- -D warnings
|
|
193
193
|
- name: Upload coverage reports to Codecov
|
|
194
|
-
uses: codecov/codecov-action@
|
|
194
|
+
uses: codecov/codecov-action@v7
|
|
195
195
|
with:
|
|
196
196
|
fail_ci_if_error: true
|
|
197
197
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
@@ -199,14 +199,14 @@ jobs:
|
|
|
199
199
|
python-test:
|
|
200
200
|
runs-on: ubuntu-latest
|
|
201
201
|
steps:
|
|
202
|
-
- uses: actions/checkout@
|
|
203
|
-
- uses: actions/setup-python@
|
|
202
|
+
- uses: actions/checkout@v7
|
|
203
|
+
- uses: actions/setup-python@v7
|
|
204
204
|
with:
|
|
205
205
|
python-version: 3.x
|
|
206
206
|
- name: Install packages
|
|
207
207
|
run: python -m pip install -e .[test,dev]
|
|
208
208
|
- name: Run tests
|
|
209
|
-
run: pytest --benchmark-skip
|
|
209
|
+
run: python -m pytest --benchmark-skip
|
|
210
210
|
- name: Docs check
|
|
211
211
|
run: |
|
|
212
212
|
pdoc wavelet_matrix \
|
|
@@ -233,11 +233,11 @@ jobs:
|
|
|
233
233
|
- "3.12"
|
|
234
234
|
- "3.13"
|
|
235
235
|
- "3.14"
|
|
236
|
-
- "3.15
|
|
236
|
+
- "3.15-dev"
|
|
237
237
|
- "pypy3.11"
|
|
238
238
|
steps:
|
|
239
|
-
- uses: actions/checkout@
|
|
240
|
-
- uses: actions/setup-python@
|
|
239
|
+
- uses: actions/checkout@v7
|
|
240
|
+
- uses: actions/setup-python@v7
|
|
241
241
|
with:
|
|
242
242
|
python-version: ${{ matrix.python }}
|
|
243
243
|
- name: Install packages
|
|
@@ -245,7 +245,7 @@ jobs:
|
|
|
245
245
|
python -m pip install --upgrade pip
|
|
246
246
|
python -m pip install -e .[test]
|
|
247
247
|
- name: Run benchmarks
|
|
248
|
-
run: pytest --benchmark-only --db .pymon
|
|
248
|
+
run: python -m pytest --benchmark-only --db .pymon
|
|
249
249
|
- name: Display benchmark results
|
|
250
250
|
run: |
|
|
251
251
|
sqlite3 -header -column .pymon '
|
|
@@ -278,10 +278,6 @@ jobs:
|
|
|
278
278
|
pattern: wheels-*
|
|
279
279
|
path: dist
|
|
280
280
|
merge-multiple: true
|
|
281
|
-
- name: Generate artifact attestation
|
|
282
|
-
uses: actions/attest-build-provenance@v3
|
|
283
|
-
with:
|
|
284
|
-
subject-path: 'dist/*'
|
|
285
281
|
- name: Publish to PyPI
|
|
286
282
|
if: ${{ startsWith(github.ref, 'refs/tags/') }}
|
|
287
283
|
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -8,17 +8,29 @@ version = "1.5.1"
|
|
|
8
8
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
9
9
|
checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
|
|
10
10
|
|
|
11
|
+
[[package]]
|
|
12
|
+
name = "bitflags"
|
|
13
|
+
version = "2.13.1"
|
|
14
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
+
checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da"
|
|
16
|
+
|
|
11
17
|
[[package]]
|
|
12
18
|
name = "bytemuck"
|
|
13
|
-
version = "1.25.
|
|
19
|
+
version = "1.25.2"
|
|
20
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
21
|
+
checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797"
|
|
22
|
+
|
|
23
|
+
[[package]]
|
|
24
|
+
name = "cfg-if"
|
|
25
|
+
version = "1.0.4"
|
|
14
26
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
15
|
-
checksum = "
|
|
27
|
+
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
|
16
28
|
|
|
17
29
|
[[package]]
|
|
18
30
|
name = "crossbeam-deque"
|
|
19
|
-
version = "0.8.
|
|
31
|
+
version = "0.8.7"
|
|
20
32
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
21
|
-
checksum = "
|
|
33
|
+
checksum = "5181e0de7b61eb03a81e347d6dd8797bae9da5146707b51077e2d71a54ec0ceb"
|
|
22
34
|
dependencies = [
|
|
23
35
|
"crossbeam-epoch",
|
|
24
36
|
"crossbeam-utils",
|
|
@@ -26,18 +38,18 @@ dependencies = [
|
|
|
26
38
|
|
|
27
39
|
[[package]]
|
|
28
40
|
name = "crossbeam-epoch"
|
|
29
|
-
version = "0.9.
|
|
41
|
+
version = "0.9.20"
|
|
30
42
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
31
|
-
checksum = "
|
|
43
|
+
checksum = "2d6914041f254d6e9176c01941b21115dcfb7089e55135a35411081bd106ef3f"
|
|
32
44
|
dependencies = [
|
|
33
45
|
"crossbeam-utils",
|
|
34
46
|
]
|
|
35
47
|
|
|
36
48
|
[[package]]
|
|
37
49
|
name = "crossbeam-utils"
|
|
38
|
-
version = "0.8.
|
|
50
|
+
version = "0.8.22"
|
|
39
51
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
40
|
-
checksum = "
|
|
52
|
+
checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17"
|
|
41
53
|
|
|
42
54
|
[[package]]
|
|
43
55
|
name = "either"
|
|
@@ -45,6 +57,33 @@ version = "1.16.0"
|
|
|
45
57
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
46
58
|
checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e"
|
|
47
59
|
|
|
60
|
+
[[package]]
|
|
61
|
+
name = "errno"
|
|
62
|
+
version = "0.3.14"
|
|
63
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
64
|
+
checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
|
|
65
|
+
dependencies = [
|
|
66
|
+
"libc",
|
|
67
|
+
"windows-sys",
|
|
68
|
+
]
|
|
69
|
+
|
|
70
|
+
[[package]]
|
|
71
|
+
name = "fastrand"
|
|
72
|
+
version = "2.5.0"
|
|
73
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
74
|
+
checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223"
|
|
75
|
+
|
|
76
|
+
[[package]]
|
|
77
|
+
name = "getrandom"
|
|
78
|
+
version = "0.4.3"
|
|
79
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
80
|
+
checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
|
|
81
|
+
dependencies = [
|
|
82
|
+
"cfg-if",
|
|
83
|
+
"libc",
|
|
84
|
+
"r-efi",
|
|
85
|
+
]
|
|
86
|
+
|
|
48
87
|
[[package]]
|
|
49
88
|
name = "heck"
|
|
50
89
|
version = "0.5.0"
|
|
@@ -53,9 +92,15 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
|
|
|
53
92
|
|
|
54
93
|
[[package]]
|
|
55
94
|
name = "libc"
|
|
56
|
-
version = "0.2.
|
|
95
|
+
version = "0.2.189"
|
|
96
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
97
|
+
checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
|
|
98
|
+
|
|
99
|
+
[[package]]
|
|
100
|
+
name = "linux-raw-sys"
|
|
101
|
+
version = "0.12.1"
|
|
57
102
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
58
|
-
checksum = "
|
|
103
|
+
checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53"
|
|
59
104
|
|
|
60
105
|
[[package]]
|
|
61
106
|
name = "memmap2"
|
|
@@ -68,9 +113,9 @@ dependencies = [
|
|
|
68
113
|
|
|
69
114
|
[[package]]
|
|
70
115
|
name = "num-bigint"
|
|
71
|
-
version = "0.4.
|
|
116
|
+
version = "0.4.8"
|
|
72
117
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
73
|
-
checksum = "
|
|
118
|
+
checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367"
|
|
74
119
|
dependencies = [
|
|
75
120
|
"num-integer",
|
|
76
121
|
"num-traits",
|
|
@@ -102,24 +147,24 @@ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
|
102
147
|
|
|
103
148
|
[[package]]
|
|
104
149
|
name = "portable-atomic"
|
|
105
|
-
version = "1.
|
|
150
|
+
version = "1.14.0"
|
|
106
151
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
107
|
-
checksum = "
|
|
152
|
+
checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3"
|
|
108
153
|
|
|
109
154
|
[[package]]
|
|
110
155
|
name = "proc-macro2"
|
|
111
|
-
version = "1.0.
|
|
156
|
+
version = "1.0.107"
|
|
112
157
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
113
|
-
checksum = "
|
|
158
|
+
checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
|
|
114
159
|
dependencies = [
|
|
115
160
|
"unicode-ident",
|
|
116
161
|
]
|
|
117
162
|
|
|
118
163
|
[[package]]
|
|
119
164
|
name = "pyo3"
|
|
120
|
-
version = "0.
|
|
165
|
+
version = "0.29.0"
|
|
121
166
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
122
|
-
checksum = "
|
|
167
|
+
checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
|
|
123
168
|
dependencies = [
|
|
124
169
|
"libc",
|
|
125
170
|
"num-bigint",
|
|
@@ -133,18 +178,18 @@ dependencies = [
|
|
|
133
178
|
|
|
134
179
|
[[package]]
|
|
135
180
|
name = "pyo3-build-config"
|
|
136
|
-
version = "0.
|
|
181
|
+
version = "0.29.0"
|
|
137
182
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
138
|
-
checksum = "
|
|
183
|
+
checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
|
|
139
184
|
dependencies = [
|
|
140
185
|
"target-lexicon",
|
|
141
186
|
]
|
|
142
187
|
|
|
143
188
|
[[package]]
|
|
144
189
|
name = "pyo3-ffi"
|
|
145
|
-
version = "0.
|
|
190
|
+
version = "0.29.0"
|
|
146
191
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
147
|
-
checksum = "
|
|
192
|
+
checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
|
|
148
193
|
dependencies = [
|
|
149
194
|
"libc",
|
|
150
195
|
"pyo3-build-config",
|
|
@@ -152,9 +197,9 @@ dependencies = [
|
|
|
152
197
|
|
|
153
198
|
[[package]]
|
|
154
199
|
name = "pyo3-macros"
|
|
155
|
-
version = "0.
|
|
200
|
+
version = "0.29.0"
|
|
156
201
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
157
|
-
checksum = "
|
|
202
|
+
checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
|
|
158
203
|
dependencies = [
|
|
159
204
|
"proc-macro2",
|
|
160
205
|
"pyo3-macros-backend",
|
|
@@ -164,26 +209,31 @@ dependencies = [
|
|
|
164
209
|
|
|
165
210
|
[[package]]
|
|
166
211
|
name = "pyo3-macros-backend"
|
|
167
|
-
version = "0.
|
|
212
|
+
version = "0.29.0"
|
|
168
213
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
169
|
-
checksum = "
|
|
214
|
+
checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
|
|
170
215
|
dependencies = [
|
|
171
216
|
"heck",
|
|
172
217
|
"proc-macro2",
|
|
173
|
-
"pyo3-build-config",
|
|
174
218
|
"quote",
|
|
175
219
|
"syn",
|
|
176
220
|
]
|
|
177
221
|
|
|
178
222
|
[[package]]
|
|
179
223
|
name = "quote"
|
|
180
|
-
version = "1.0.
|
|
224
|
+
version = "1.0.47"
|
|
181
225
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
182
|
-
checksum = "
|
|
226
|
+
checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
|
|
183
227
|
dependencies = [
|
|
184
228
|
"proc-macro2",
|
|
185
229
|
]
|
|
186
230
|
|
|
231
|
+
[[package]]
|
|
232
|
+
name = "r-efi"
|
|
233
|
+
version = "6.0.0"
|
|
234
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
235
|
+
checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
|
|
236
|
+
|
|
187
237
|
[[package]]
|
|
188
238
|
name = "rayon"
|
|
189
239
|
version = "1.12.0"
|
|
@@ -204,11 +254,24 @@ dependencies = [
|
|
|
204
254
|
"crossbeam-utils",
|
|
205
255
|
]
|
|
206
256
|
|
|
257
|
+
[[package]]
|
|
258
|
+
name = "rustix"
|
|
259
|
+
version = "1.1.4"
|
|
260
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
261
|
+
checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
|
|
262
|
+
dependencies = [
|
|
263
|
+
"bitflags",
|
|
264
|
+
"errno",
|
|
265
|
+
"libc",
|
|
266
|
+
"linux-raw-sys",
|
|
267
|
+
"windows-sys",
|
|
268
|
+
]
|
|
269
|
+
|
|
207
270
|
[[package]]
|
|
208
271
|
name = "syn"
|
|
209
|
-
version = "2.0.
|
|
272
|
+
version = "2.0.119"
|
|
210
273
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
211
|
-
checksum = "
|
|
274
|
+
checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
|
|
212
275
|
dependencies = [
|
|
213
276
|
"proc-macro2",
|
|
214
277
|
"quote",
|
|
@@ -221,6 +284,19 @@ version = "0.13.5"
|
|
|
221
284
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
222
285
|
checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
223
286
|
|
|
287
|
+
[[package]]
|
|
288
|
+
name = "tempfile"
|
|
289
|
+
version = "3.27.0"
|
|
290
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
291
|
+
checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd"
|
|
292
|
+
dependencies = [
|
|
293
|
+
"fastrand",
|
|
294
|
+
"getrandom",
|
|
295
|
+
"once_cell",
|
|
296
|
+
"rustix",
|
|
297
|
+
"windows-sys",
|
|
298
|
+
]
|
|
299
|
+
|
|
224
300
|
[[package]]
|
|
225
301
|
name = "unicode-ident"
|
|
226
302
|
version = "1.0.24"
|
|
@@ -229,7 +305,7 @@ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
|
|
|
229
305
|
|
|
230
306
|
[[package]]
|
|
231
307
|
name = "wavelet-matrix"
|
|
232
|
-
version = "2.2.
|
|
308
|
+
version = "2.2.4"
|
|
233
309
|
dependencies = [
|
|
234
310
|
"bytemuck",
|
|
235
311
|
"memmap2",
|
|
@@ -238,4 +314,20 @@ dependencies = [
|
|
|
238
314
|
"num-traits",
|
|
239
315
|
"pyo3",
|
|
240
316
|
"rayon",
|
|
317
|
+
"tempfile",
|
|
318
|
+
]
|
|
319
|
+
|
|
320
|
+
[[package]]
|
|
321
|
+
name = "windows-link"
|
|
322
|
+
version = "0.2.1"
|
|
323
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
324
|
+
checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
|
|
325
|
+
|
|
326
|
+
[[package]]
|
|
327
|
+
name = "windows-sys"
|
|
328
|
+
version = "0.61.2"
|
|
329
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
330
|
+
checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
|
|
331
|
+
dependencies = [
|
|
332
|
+
"windows-link",
|
|
241
333
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "wavelet-matrix"
|
|
3
|
-
version = "2.2.
|
|
3
|
+
version = "2.2.4"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
|
|
@@ -15,5 +15,6 @@ memmap2 = "0.9.10"
|
|
|
15
15
|
num-bigint = "0.4.6"
|
|
16
16
|
num-integer = "0.1.46"
|
|
17
17
|
num-traits = "0.2.19"
|
|
18
|
-
pyo3 = { version = "0.
|
|
18
|
+
pyo3 = { version = "0.29.0", features = ["num-bigint"] }
|
|
19
19
|
rayon = "1.12.0"
|
|
20
|
+
tempfile = "3.27.0"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: wavelet-matrix
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.4
|
|
4
4
|
Classifier: Intended Audience :: Developers
|
|
5
5
|
Classifier: Intended Audience :: Science/Research
|
|
6
6
|
Classifier: Intended Audience :: Information Technology
|
|
@@ -47,7 +47,6 @@ Project-URL: repository, https://github.com/math-hiyoko/wavelet-matrix
|
|
|
47
47
|
[](https://pepy.tech/projects/wavelet-matrix)
|
|
48
48
|

|
|
49
49
|

|
|
50
|
-

|
|
51
50
|

|
|
52
51
|
|
|
53
52
|
|
|
@@ -63,7 +62,6 @@ supporting fast rank / select / range queries over indexed sequences
|
|
|
63
62
|
- Rich range queries (freq / sum / top-k / min / max)
|
|
64
63
|
- Optional disk-backed storage for static WaveletMatrix (`on_disk=True`)
|
|
65
64
|
- Optional dynamic updates (insert / remove / update)
|
|
66
|
-
- Safe Rust (no unsafe)
|
|
67
65
|
|
|
68
66
|
## Installation
|
|
69
67
|
```bash
|
|
@@ -177,10 +175,6 @@ dwm.update(index=4, value=5)
|
|
|
177
175
|
# or dwm[4] = 5
|
|
178
176
|
```
|
|
179
177
|
|
|
180
|
-
## Safety
|
|
181
|
-
- Powered by safe Rust
|
|
182
|
-
- Memory-safe by design
|
|
183
|
-
|
|
184
178
|
## Development
|
|
185
179
|
|
|
186
180
|
### Running Tests
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
[](https://pepy.tech/projects/wavelet-matrix)
|
|
11
11
|

|
|
12
12
|

|
|
13
|
-

|
|
14
13
|

|
|
15
14
|
|
|
16
15
|
|
|
@@ -26,7 +25,6 @@ supporting fast rank / select / range queries over indexed sequences
|
|
|
26
25
|
- Rich range queries (freq / sum / top-k / min / max)
|
|
27
26
|
- Optional disk-backed storage for static WaveletMatrix (`on_disk=True`)
|
|
28
27
|
- Optional dynamic updates (insert / remove / update)
|
|
29
|
-
- Safe Rust (no unsafe)
|
|
30
28
|
|
|
31
29
|
## Installation
|
|
32
30
|
```bash
|
|
@@ -140,10 +138,6 @@ dwm.update(index=4, value=5)
|
|
|
140
138
|
# or dwm[4] = 5
|
|
141
139
|
```
|
|
142
140
|
|
|
143
|
-
## Safety
|
|
144
|
-
- Powered by safe Rust
|
|
145
|
-
- Memory-safe by design
|
|
146
|
-
|
|
147
141
|
## Development
|
|
148
142
|
|
|
149
143
|
### Running Tests
|
|
@@ -22,39 +22,39 @@ def random_disk_wavelet_matrix(random_data: list[int]) -> WaveletMatrix:
|
|
|
22
22
|
@pytest.mark.parametrize("size", [500, 10000, 200000])
|
|
23
23
|
@pytest.mark.parametrize("max_bit", [8, 32, 128])
|
|
24
24
|
class BenchDiskWaveletMatrix:
|
|
25
|
-
def
|
|
25
|
+
def bench_disk_construction(self, benchmark, random_data):
|
|
26
26
|
"""Benchmark DiskWaveletMatrix construction"""
|
|
27
27
|
benchmark(WaveletMatrix, random_data, on_disk=True)
|
|
28
28
|
|
|
29
|
-
def
|
|
29
|
+
def bench_disk_values(self, benchmark, random_disk_wavelet_matrix):
|
|
30
30
|
"""Benchmark DiskWaveletMatrix values retrieval"""
|
|
31
31
|
benchmark(random_disk_wavelet_matrix.values)
|
|
32
32
|
|
|
33
|
-
def
|
|
33
|
+
def bench_disk_access(self, benchmark, random_disk_wavelet_matrix, size):
|
|
34
34
|
"""Benchmark DiskWaveletMatrix access"""
|
|
35
35
|
index = random.randint(0, size - 1)
|
|
36
36
|
benchmark(random_disk_wavelet_matrix.access, index)
|
|
37
37
|
|
|
38
|
-
def
|
|
38
|
+
def bench_disk_rank(self, benchmark, random_disk_wavelet_matrix, size):
|
|
39
39
|
"""Benchmark DiskWaveletMatrix rank"""
|
|
40
40
|
value = random_disk_wavelet_matrix[random.randint(0, size - 1)]
|
|
41
41
|
end = random.randint(0, size)
|
|
42
42
|
benchmark(random_disk_wavelet_matrix.rank, value, end)
|
|
43
43
|
|
|
44
|
-
def
|
|
44
|
+
def bench_disk_select(self, benchmark, random_disk_wavelet_matrix, size):
|
|
45
45
|
"""Benchmark DiskWaveletMatrix select"""
|
|
46
46
|
value = random_disk_wavelet_matrix[random.randint(0, size - 1)]
|
|
47
47
|
kth = random_disk_wavelet_matrix.rank(value, size)
|
|
48
48
|
benchmark(random_disk_wavelet_matrix.select, value, kth)
|
|
49
49
|
|
|
50
|
-
def
|
|
50
|
+
def bench_disk_quantile(self, benchmark, random_disk_wavelet_matrix, size):
|
|
51
51
|
"""Benchmark DiskWaveletMatrix quantile"""
|
|
52
52
|
start = size // 4
|
|
53
53
|
end = size * 3 // 4
|
|
54
54
|
kth = random.randint(1, end - start)
|
|
55
55
|
benchmark(random_disk_wavelet_matrix.quantile, start, end, kth)
|
|
56
56
|
|
|
57
|
-
def
|
|
57
|
+
def bench_disk_range_freq(self, benchmark, random_disk_wavelet_matrix, size, max_bit):
|
|
58
58
|
"""Benchmark DiskWaveletMatrix range_freq"""
|
|
59
59
|
start = size // 4
|
|
60
60
|
end = size * 3 // 4
|
|
@@ -62,28 +62,28 @@ class BenchDiskWaveletMatrix:
|
|
|
62
62
|
upper = (1 << max_bit) * 3 // 4
|
|
63
63
|
benchmark(random_disk_wavelet_matrix.range_freq, start, end, lower, upper)
|
|
64
64
|
|
|
65
|
-
def
|
|
65
|
+
def bench_disk_range_maxk(self, benchmark, random_disk_wavelet_matrix, size):
|
|
66
66
|
"""Benchmark DiskWaveletMatrix range_maxk"""
|
|
67
67
|
start = size // 4
|
|
68
68
|
end = size * 3 // 4
|
|
69
69
|
k = 10
|
|
70
70
|
benchmark(random_disk_wavelet_matrix.range_maxk, start, end, k)
|
|
71
71
|
|
|
72
|
-
def
|
|
72
|
+
def bench_disk_range_mink(self, benchmark, random_disk_wavelet_matrix, size):
|
|
73
73
|
"""Benchmark DiskWaveletMatrix range_mink"""
|
|
74
74
|
start = size // 4
|
|
75
75
|
end = size * 3 // 4
|
|
76
76
|
k = 10
|
|
77
77
|
benchmark(random_disk_wavelet_matrix.range_mink, start, end, k)
|
|
78
78
|
|
|
79
|
-
def
|
|
79
|
+
def bench_disk_prev_value(self, benchmark, random_disk_wavelet_matrix, size, max_bit):
|
|
80
80
|
"""Benchmark DiskWaveletMatrix prev_value"""
|
|
81
81
|
start = size // 4
|
|
82
82
|
end = size * 3 // 4
|
|
83
83
|
upper = 1 << (max_bit - 1)
|
|
84
84
|
benchmark(random_disk_wavelet_matrix.prev_value, start, end, upper)
|
|
85
85
|
|
|
86
|
-
def
|
|
86
|
+
def bench_disk_next_value(self, benchmark, random_disk_wavelet_matrix, size, max_bit):
|
|
87
87
|
"""Benchmark DiskWaveletMatrix next_value"""
|
|
88
88
|
start = size // 4
|
|
89
89
|
end = size * 3 // 4
|