globlin 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.
globlin-0.1.1/.envrc ADDED
@@ -0,0 +1,5 @@
1
+ # SPDX-FileCopyrightText: 2025 László Vaskó <opensource@vlaci.email.com>
2
+ #
3
+ # SPDX-License-Identifier: EUPL-1.2
4
+
5
+ use flake
@@ -0,0 +1,360 @@
1
+ # SPDX-FileCopyrightText: 2025 László Vaskó <opensource@vlaci.email.com>
2
+ #
3
+ # SPDX-License-Identifier: EUPL-1.2
4
+
5
+ name: CI
6
+
7
+ on:
8
+ push:
9
+ branches:
10
+ - main
11
+ tags:
12
+ - "*"
13
+ pull_request:
14
+ workflow_dispatch:
15
+
16
+ permissions:
17
+ contents: read
18
+
19
+ concurrency:
20
+ group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref_name }}
21
+ cancel-in-progress: true
22
+
23
+ jobs:
24
+ Nix:
25
+ strategy:
26
+ matrix:
27
+ include:
28
+ - os: ubuntu-24.04
29
+ arch: x86_64-linux
30
+ - os: ubuntu-24.04-arm
31
+ arch: aarch64-linux
32
+ - os: macos-13
33
+ arch: x86_64-darwin
34
+ - os: macos-14
35
+ arch: aarch64-darwin
36
+ name: Build Nix - ${{ matrix.arch }}.${{ matrix.os }}
37
+ runs-on: ${{ matrix.os }}
38
+ steps:
39
+ - uses: actions/checkout@v4
40
+ - uses: cachix/install-nix-action@v31
41
+ - uses: cachix/cachix-action@v16
42
+ with:
43
+ name: vlaci
44
+ authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
45
+ - name: Pre-Commit
46
+ if: ${{ matrix.arch == 'x86_64-linux' }}
47
+ run: |
48
+ source <(nix print-dev-env)
49
+ nix fmt
50
+ - name: Nix Flake checks
51
+ run: |
52
+ nix flake check \
53
+ --keep-going \
54
+ --print-build-logs
55
+ - name: Code coverage
56
+ if: ${{ matrix.arch == 'x86_64-linux' }}
57
+ run: |
58
+ nix build .#checks.${{ matrix.arch }}.test-coverage -o cargo-test
59
+ - uses: codecov/codecov-action@v5
60
+ if: ${{ matrix.arch == 'x86_64-linux' }}
61
+ with:
62
+ flags: cargo-test
63
+ files: cargo-test/coverage.codecov
64
+ token: ${{ secrets.CODECOV_TOKEN }}
65
+ - uses: codecov/codecov-action@v5
66
+ if: ${{ matrix.arch == 'x86_64-linux' }}
67
+ with:
68
+ flags: pytest
69
+ files: pytest/coverage.codecov
70
+ token: ${{ secrets.CODECOV_TOKEN }}
71
+
72
+ linux:
73
+ needs: [Nix]
74
+ runs-on: ${{ matrix.platform.runner }}
75
+ strategy:
76
+ matrix:
77
+ platform:
78
+ - runner: ubuntu-22.04
79
+ target: x86_64
80
+ - runner: ubuntu-22.04
81
+ target: x86
82
+ - runner: ubuntu-22.04
83
+ target: aarch64
84
+ steps:
85
+ - uses: actions/checkout@v4
86
+ - uses: actions/setup-python@v5
87
+ with:
88
+ python-version: 3.x
89
+ - name: Build wheels
90
+ uses: PyO3/maturin-action@v1
91
+ with:
92
+ target: ${{ matrix.platform.target }}
93
+ args: --release --out dist --zig
94
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
95
+ manylinux: auto
96
+ - name: Build free-threaded wheels (3.13)
97
+ uses: PyO3/maturin-action@v1
98
+ with:
99
+ target: ${{ matrix.platform.target }}
100
+ args: --release --out dist --zig -i python3.13t
101
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
102
+ manylinux: auto
103
+ - name: Build free-threaded wheels (3.14)
104
+ uses: PyO3/maturin-action@v1
105
+ with:
106
+ target: ${{ matrix.platform.target }}
107
+ args: --release --out dist --zig -i python3.14t
108
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
109
+ manylinux: auto
110
+ - name: Upload wheels
111
+ uses: actions/upload-artifact@v5
112
+ with:
113
+ name: wheels-linux-${{ matrix.platform.target }}
114
+ path: dist
115
+ - name: pytest
116
+ if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
117
+ shell: bash
118
+ run: |
119
+ set -e
120
+ python3 -m venv .venv
121
+ source .venv/bin/activate
122
+ pip install globlin --find-links dist --force-reinstall
123
+ pip install pytest
124
+ pytest
125
+ - name: pytest
126
+ if: ${{ !startsWith(matrix.platform.target, 'x86') }}
127
+ uses: uraimo/run-on-arch-action@v3
128
+ with:
129
+ arch: ${{ matrix.platform.target }}
130
+ distro: ubuntu22.04
131
+ githubToken: ${{ github.token }}
132
+ install: |
133
+ apt-get update
134
+ apt-get install -y --no-install-recommends python3 python3-pip
135
+ pip3 install -U pip pytest
136
+ run: |
137
+ set -e
138
+ pip3 install globlin --find-links dist --force-reinstall
139
+ pytest
140
+
141
+ musllinux:
142
+ needs: [Nix]
143
+ runs-on: ${{ matrix.platform.runner }}
144
+ strategy:
145
+ matrix:
146
+ platform:
147
+ - runner: ubuntu-22.04
148
+ target: x86_64
149
+ - runner: ubuntu-22.04
150
+ target: x86
151
+ - runner: ubuntu-22.04
152
+ target: aarch64
153
+ steps:
154
+ - uses: actions/checkout@v4
155
+ - uses: actions/setup-python@v5
156
+ with:
157
+ python-version: 3.x
158
+ - name: Build wheels
159
+ uses: PyO3/maturin-action@v1
160
+ with:
161
+ target: ${{ matrix.platform.target }}
162
+ args: --release --out dist
163
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
164
+ manylinux: musllinux_1_2
165
+ - name: Build free-threaded wheels (3.13)
166
+ uses: PyO3/maturin-action@v1
167
+ with:
168
+ target: ${{ matrix.platform.target }}
169
+ args: --release --out dist -i python3.13t
170
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
171
+ manylinux: musllinux_1_2
172
+ - name: Build free-threaded wheels (3.14)
173
+ uses: PyO3/maturin-action@v1
174
+ with:
175
+ target: ${{ matrix.platform.target }}
176
+ args: --release --out dist -i python3.14t
177
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
178
+ manylinux: musllinux_1_2
179
+ - name: Upload wheels
180
+ uses: actions/upload-artifact@v5
181
+ with:
182
+ name: wheels-musllinux-${{ matrix.platform.target }}
183
+ path: dist
184
+ - name: pytest
185
+ if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
186
+ uses: addnab/docker-run-action@v3
187
+ with:
188
+ image: alpine:latest
189
+ options: -v ${{ github.workspace }}:/io -w /io
190
+ run: |
191
+ set -e
192
+ apk add py3-pip py3-virtualenv
193
+ python3 -m virtualenv .venv
194
+ source .venv/bin/activate
195
+ pip install globlin --no-index --find-links dist --force-reinstall
196
+ pip install pytest
197
+ pytest
198
+ - name: pytest
199
+ if: ${{ !startsWith(matrix.platform.target, 'x86') }}
200
+ uses: uraimo/run-on-arch-action@v3
201
+ with:
202
+ arch: ${{ matrix.platform.target }}
203
+ distro: alpine_latest
204
+ githubToken: ${{ github.token }}
205
+ install: |
206
+ apk add py3-virtualenv
207
+ run: |
208
+ set -e
209
+ python3 -m virtualenv .venv
210
+ source .venv/bin/activate
211
+ pip install pytest
212
+ pip install globlin --find-links dist --force-reinstall
213
+ pytest
214
+
215
+ windows:
216
+ needs: [Nix]
217
+ runs-on: ${{ matrix.platform.runner }}
218
+ strategy:
219
+ matrix:
220
+ platform:
221
+ - runner: windows-latest
222
+ target: x64
223
+ - runner: windows-latest
224
+ target: x86
225
+ steps:
226
+ - uses: actions/checkout@v4
227
+ - uses: actions/setup-python@v5
228
+ with:
229
+ python-version: 3.x
230
+ architecture: ${{ matrix.platform.target }}
231
+ - name: Build wheels
232
+ uses: PyO3/maturin-action@v1
233
+ with:
234
+ target: ${{ matrix.platform.target }}
235
+ args: --release --out dist
236
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
237
+ - uses: actions/setup-python@v5
238
+ with:
239
+ python-version: 3.13t
240
+ architecture: ${{ matrix.platform.target }}
241
+ - name: Build free-threaded wheels (3.13)
242
+ uses: PyO3/maturin-action@v1
243
+ with:
244
+ target: ${{ matrix.platform.target }}
245
+ args: --release --out dist -i python3.13t
246
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
247
+ - uses: actions/setup-python@v5
248
+ with:
249
+ python-version: 3.14t
250
+ architecture: ${{ matrix.platform.target }}
251
+ - name: Build free-threaded wheels (3.14)
252
+ uses: PyO3/maturin-action@v1
253
+ with:
254
+ target: ${{ matrix.platform.target }}
255
+ args: --release --out dist -i python3.14t
256
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
257
+ - name: Upload wheels
258
+ uses: actions/upload-artifact@v5
259
+ with:
260
+ name: wheels-windows-${{ matrix.platform.target }}
261
+ path: dist
262
+ - name: pytest
263
+ if: ${{ !startsWith(matrix.platform.target, 'aarch64') }}
264
+ shell: bash
265
+ run: |
266
+ set -e
267
+ python3 -m venv .venv
268
+ source .venv/Scripts/activate
269
+ pip install globlin --find-links dist --force-reinstall
270
+ pip install pytest
271
+ pytest
272
+
273
+ macos:
274
+ needs: [Nix]
275
+ runs-on: ${{ matrix.platform.runner }}
276
+ strategy:
277
+ matrix:
278
+ platform:
279
+ - runner: macos-13
280
+ target: x86_64
281
+ - runner: macos-14
282
+ target: aarch64
283
+ steps:
284
+ - uses: actions/checkout@v4
285
+ - uses: actions/setup-python@v5
286
+ with:
287
+ python-version: 3.x
288
+ - name: Build wheels
289
+ uses: PyO3/maturin-action@v1
290
+ with:
291
+ target: ${{ matrix.platform.target }}
292
+ args: --release --out dist
293
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
294
+ - name: Build free-threaded wheels (3.13)
295
+ uses: PyO3/maturin-action@v1
296
+ with:
297
+ target: ${{ matrix.platform.target }}
298
+ args: --release --out dist -i python3.13t
299
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
300
+ - name: Build free-threaded wheels (3.13)
301
+ uses: PyO3/maturin-action@v1
302
+ with:
303
+ target: ${{ matrix.platform.target }}
304
+ args: --release --out dist -i python3.14t
305
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
306
+ - name: Upload wheels
307
+ uses: actions/upload-artifact@v5
308
+ with:
309
+ name: wheels-macos-${{ matrix.platform.target }}
310
+ path: dist
311
+ - name: pytest
312
+ run: |
313
+ set -e
314
+ python3 -m venv .venv
315
+ source .venv/bin/activate
316
+ pip install globlin --find-links dist --force-reinstall
317
+ pip install pytest
318
+ pytest
319
+
320
+ sdist:
321
+ needs: [Nix]
322
+ runs-on: ubuntu-latest
323
+ steps:
324
+ - uses: actions/checkout@v4
325
+ - name: Build sdist
326
+ uses: PyO3/maturin-action@v1
327
+ with:
328
+ command: sdist
329
+ args: --out dist
330
+ - name: Upload sdist
331
+ uses: actions/upload-artifact@v5
332
+ with:
333
+ name: wheels-sdist
334
+ path: dist
335
+
336
+ release:
337
+ name: Release
338
+ runs-on: ubuntu-latest
339
+ if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
340
+ needs: [linux, musllinux, windows, macos, sdist]
341
+ environment: pypi
342
+ permissions:
343
+ # Use to sign the release artifacts
344
+ id-token: write
345
+ # Used to upload release artifacts
346
+ contents: write
347
+ # Used to generate artifact attestation
348
+ attestations: write
349
+ steps:
350
+ - uses: actions/download-artifact@v6
351
+ - name: Generate artifact attestation
352
+ uses: actions/attest-build-provenance@v3
353
+ with:
354
+ subject-path: "wheels-*/*"
355
+ - name: Publish to PyPI
356
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
357
+ uses: PyO3/maturin-action@v1
358
+ with:
359
+ command: upload
360
+ args: --non-interactive --skip-existing wheels-*/*
@@ -0,0 +1,22 @@
1
+ # SPDX-FileCopyrightText: 2025 László Vaskó <opensource@vlaci.email.com>
2
+ #
3
+ # SPDX-License-Identifier: EUPL-1.2
4
+
5
+ /target
6
+
7
+ # Byte-compiled / optimized / DLL files
8
+ __pycache__/
9
+ .pytest_cache/
10
+ *.py[cod]
11
+
12
+ # C extensions
13
+ *.so
14
+
15
+ # Development
16
+ .direnv/
17
+ .venv/
18
+ .pre-commit-config.yaml
19
+
20
+ # Unit test / coverage reports
21
+ htmlcov/
22
+ .coverage
@@ -0,0 +1 @@
1
+ 3.13
@@ -0,0 +1,3 @@
1
+ SPDX-FileCopyrightText: 2025 László Vaskó <opensource@vlaci.email.com>
2
+
3
+ SPDX-License-Identifier: EUPL-1.2
@@ -0,0 +1,179 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "autocfg"
7
+ version = "1.5.0"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
10
+
11
+ [[package]]
12
+ name = "glob-match"
13
+ version = "0.2.1"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "9985c9503b412198aa4197559e9a318524ebc4519c229bfa05a535828c950b9d"
16
+
17
+ [[package]]
18
+ name = "globlin"
19
+ version = "0.1.1"
20
+ dependencies = [
21
+ "glob-match",
22
+ "pyo3",
23
+ ]
24
+
25
+ [[package]]
26
+ name = "heck"
27
+ version = "0.5.0"
28
+ source = "registry+https://github.com/rust-lang/crates.io-index"
29
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
30
+
31
+ [[package]]
32
+ name = "indoc"
33
+ version = "2.0.7"
34
+ source = "registry+https://github.com/rust-lang/crates.io-index"
35
+ checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
36
+ dependencies = [
37
+ "rustversion",
38
+ ]
39
+
40
+ [[package]]
41
+ name = "libc"
42
+ version = "0.2.177"
43
+ source = "registry+https://github.com/rust-lang/crates.io-index"
44
+ checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
45
+
46
+ [[package]]
47
+ name = "memoffset"
48
+ version = "0.9.1"
49
+ source = "registry+https://github.com/rust-lang/crates.io-index"
50
+ checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
51
+ dependencies = [
52
+ "autocfg",
53
+ ]
54
+
55
+ [[package]]
56
+ name = "once_cell"
57
+ version = "1.21.3"
58
+ source = "registry+https://github.com/rust-lang/crates.io-index"
59
+ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
60
+
61
+ [[package]]
62
+ name = "portable-atomic"
63
+ version = "1.11.1"
64
+ source = "registry+https://github.com/rust-lang/crates.io-index"
65
+ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483"
66
+
67
+ [[package]]
68
+ name = "proc-macro2"
69
+ version = "1.0.103"
70
+ source = "registry+https://github.com/rust-lang/crates.io-index"
71
+ checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
72
+ dependencies = [
73
+ "unicode-ident",
74
+ ]
75
+
76
+ [[package]]
77
+ name = "pyo3"
78
+ version = "0.27.1"
79
+ source = "registry+https://github.com/rust-lang/crates.io-index"
80
+ checksum = "37a6df7eab65fc7bee654a421404947e10a0f7085b6951bf2ea395f4659fb0cf"
81
+ dependencies = [
82
+ "indoc",
83
+ "libc",
84
+ "memoffset",
85
+ "once_cell",
86
+ "portable-atomic",
87
+ "pyo3-build-config",
88
+ "pyo3-ffi",
89
+ "pyo3-macros",
90
+ "unindent",
91
+ ]
92
+
93
+ [[package]]
94
+ name = "pyo3-build-config"
95
+ version = "0.27.1"
96
+ source = "registry+https://github.com/rust-lang/crates.io-index"
97
+ checksum = "f77d387774f6f6eec64a004eac0ed525aab7fa1966d94b42f743797b3e395afb"
98
+ dependencies = [
99
+ "target-lexicon",
100
+ ]
101
+
102
+ [[package]]
103
+ name = "pyo3-ffi"
104
+ version = "0.27.1"
105
+ source = "registry+https://github.com/rust-lang/crates.io-index"
106
+ checksum = "2dd13844a4242793e02df3e2ec093f540d948299a6a77ea9ce7afd8623f542be"
107
+ dependencies = [
108
+ "libc",
109
+ "pyo3-build-config",
110
+ ]
111
+
112
+ [[package]]
113
+ name = "pyo3-macros"
114
+ version = "0.27.1"
115
+ source = "registry+https://github.com/rust-lang/crates.io-index"
116
+ checksum = "eaf8f9f1108270b90d3676b8679586385430e5c0bb78bb5f043f95499c821a71"
117
+ dependencies = [
118
+ "proc-macro2",
119
+ "pyo3-macros-backend",
120
+ "quote",
121
+ "syn",
122
+ ]
123
+
124
+ [[package]]
125
+ name = "pyo3-macros-backend"
126
+ version = "0.27.1"
127
+ source = "registry+https://github.com/rust-lang/crates.io-index"
128
+ checksum = "70a3b2274450ba5288bc9b8c1b69ff569d1d61189d4bff38f8d22e03d17f932b"
129
+ dependencies = [
130
+ "heck",
131
+ "proc-macro2",
132
+ "pyo3-build-config",
133
+ "quote",
134
+ "syn",
135
+ ]
136
+
137
+ [[package]]
138
+ name = "quote"
139
+ version = "1.0.42"
140
+ source = "registry+https://github.com/rust-lang/crates.io-index"
141
+ checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
142
+ dependencies = [
143
+ "proc-macro2",
144
+ ]
145
+
146
+ [[package]]
147
+ name = "rustversion"
148
+ version = "1.0.22"
149
+ source = "registry+https://github.com/rust-lang/crates.io-index"
150
+ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
151
+
152
+ [[package]]
153
+ name = "syn"
154
+ version = "2.0.110"
155
+ source = "registry+https://github.com/rust-lang/crates.io-index"
156
+ checksum = "a99801b5bd34ede4cf3fc688c5919368fea4e4814a4664359503e6015b280aea"
157
+ dependencies = [
158
+ "proc-macro2",
159
+ "quote",
160
+ "unicode-ident",
161
+ ]
162
+
163
+ [[package]]
164
+ name = "target-lexicon"
165
+ version = "0.13.3"
166
+ source = "registry+https://github.com/rust-lang/crates.io-index"
167
+ checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c"
168
+
169
+ [[package]]
170
+ name = "unicode-ident"
171
+ version = "1.0.22"
172
+ source = "registry+https://github.com/rust-lang/crates.io-index"
173
+ checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
174
+
175
+ [[package]]
176
+ name = "unindent"
177
+ version = "0.2.4"
178
+ source = "registry+https://github.com/rust-lang/crates.io-index"
179
+ checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
@@ -0,0 +1,3 @@
1
+ SPDX-FileCopyrightText: 2025 László Vaskó <opensource@vlaci.email.com>
2
+
3
+ SPDX-License-Identifier: EUPL-1.2
@@ -0,0 +1,18 @@
1
+ # SPDX-FileCopyrightText: 2025 László Vaskó <opensource@vlaci.email.com>
2
+ #
3
+ # SPDX-License-Identifier: EUPL-1.2
4
+
5
+ [package]
6
+ name = "globlin"
7
+ version = "0.1.1"
8
+ edition = "2021"
9
+ readme = "README.md"
10
+
11
+ # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
12
+ [lib]
13
+ name = "globlin"
14
+ crate-type = ["cdylib"]
15
+
16
+ [dependencies]
17
+ glob-match = "0.2.1"
18
+ pyo3 = "0.27.1"