ignore-python 0.3.2__tar.gz → 0.4.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.
@@ -0,0 +1,15 @@
1
+ # To get started with Dependabot version updates, you'll need to specify which
2
+ # package ecosystems to update and where the package manifests are located.
3
+ # Please see the documentation for all configuration options:
4
+ # https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
5
+
6
+ version: 2
7
+ updates:
8
+ - package-ecosystem: "cargo" # See documentation for possible values
9
+ directory: "/" # Location of package manifests
10
+ schedule:
11
+ interval: "weekly"
12
+ - package-ecosystem: "pip" # See documentation for possible values
13
+ directory: "/" # Location of package manifests
14
+ schedule:
15
+ interval: "weekly"
@@ -1,14 +1,15 @@
1
- # This file is autogenerated by maturin v1.8.3
1
+ # This file is autogenerated by maturin v1.14.1
2
2
  # To update, run
3
3
  #
4
- # maturin generate-ci github --pytest
4
+ # maturin generate-ci github
5
5
  #
6
6
  name: CI
7
7
 
8
8
  on:
9
9
  push:
10
10
  branches:
11
- - '**'
11
+ - main
12
+ - master
12
13
  tags:
13
14
  - '*'
14
15
  pull_request:
@@ -36,10 +37,10 @@ jobs:
36
37
  - runner: ubuntu-22.04
37
38
  target: ppc64le
38
39
  steps:
39
- - uses: actions/checkout@v4
40
- - uses: actions/setup-python@v5
40
+ - uses: actions/checkout@v6
41
+ - uses: actions/setup-python@v6
41
42
  with:
42
- python-version: 3.x
43
+ python-version: "3.9"
43
44
  - name: Build wheels
44
45
  uses: PyO3/maturin-action@v1
45
46
  with:
@@ -48,34 +49,39 @@ jobs:
48
49
  sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
49
50
  manylinux: auto
50
51
  - name: Upload wheels
51
- uses: actions/upload-artifact@v4
52
+ uses: actions/upload-artifact@v6
52
53
  with:
53
54
  name: wheels-linux-${{ matrix.platform.target }}
54
55
  path: dist
56
+ - uses: astral-sh/setup-uv@v7
57
+ if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
55
58
  - name: pytest
56
59
  if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
57
60
  shell: bash
58
61
  run: |
59
62
  set -e
60
- python3 -m venv .venv
63
+ uv venv .venv
61
64
  source .venv/bin/activate
62
- pip install ignore-python --find-links dist --force-reinstall --no-cache --no-index
63
- pip install pytest
65
+ uv pip install ignore-python --no-index --no-deps --find-links dist --reinstall
66
+ uv pip install ignore-python pytest
64
67
  pytest
65
68
  - name: pytest
66
69
  if: ${{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'ppc64' }}
67
- uses: uraimo/run-on-arch-action@v2
70
+ uses: uraimo/run-on-arch-action@v3
68
71
  with:
69
72
  arch: ${{ matrix.platform.target }}
70
- distro: ubuntu22.04
73
+ distro: ubuntu24.04
71
74
  githubToken: ${{ github.token }}
72
75
  install: |
73
76
  apt-get update
74
- apt-get install -y --no-install-recommends python3 python3-pip
75
- pip3 install -U pip pytest
77
+ apt-get install -y --no-install-recommends python3 python3-venv
76
78
  run: |
77
79
  set -e
78
- pip3 install ignore-python --find-links dist --force-reinstall --no-cache --no-index
80
+ python3 -m venv .venv
81
+ source .venv/bin/activate
82
+ pip install pytest
83
+ pip install ignore-python --no-index --no-deps --find-links dist --force-reinstall
84
+ pip install ignore-python
79
85
  pytest
80
86
 
81
87
  musllinux:
@@ -92,10 +98,10 @@ jobs:
92
98
  - runner: ubuntu-22.04
93
99
  target: armv7
94
100
  steps:
95
- - uses: actions/checkout@v4
96
- - uses: actions/setup-python@v5
101
+ - uses: actions/checkout@v6
102
+ - uses: actions/setup-python@v6
97
103
  with:
98
- python-version: 3.x
104
+ python-version: "3.9"
99
105
  - name: Build wheels
100
106
  uses: PyO3/maturin-action@v1
101
107
  with:
@@ -104,27 +110,25 @@ jobs:
104
110
  sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
105
111
  manylinux: musllinux_1_2
106
112
  - name: Upload wheels
107
- uses: actions/upload-artifact@v4
113
+ uses: actions/upload-artifact@v6
108
114
  with:
109
115
  name: wheels-musllinux-${{ matrix.platform.target }}
110
116
  path: dist
111
117
  - name: pytest
112
118
  if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
113
- uses: addnab/docker-run-action@v3
114
- with:
115
- image: alpine:latest
116
- options: -v ${{ github.workspace }}:/io -w /io
117
- run: |
118
- set -e
119
+ run: |
120
+ set -e
121
+ docker run --rm -v ${{ github.workspace }}:/io -w /io alpine:latest sh -c '
119
122
  apk add py3-pip py3-virtualenv
120
123
  python3 -m virtualenv .venv
121
124
  source .venv/bin/activate
122
- pip install ignore-python --find-links dist --force-reinstall --no-cache --no-index
123
- pip install pytest
125
+ pip install ignore-python --no-index --no-deps --find-links dist --force-reinstall
126
+ pip install ignore-python pytest
124
127
  pytest
128
+ '
125
129
  - name: pytest
126
130
  if: ${{ !startsWith(matrix.platform.target, 'x86') }}
127
- uses: uraimo/run-on-arch-action@v2
131
+ uses: uraimo/run-on-arch-action@v3
128
132
  with:
129
133
  arch: ${{ matrix.platform.target }}
130
134
  distro: alpine_latest
@@ -135,8 +139,8 @@ jobs:
135
139
  set -e
136
140
  python3 -m virtualenv .venv
137
141
  source .venv/bin/activate
138
- pip install pytest
139
- pip install ignore-python --find-links dist --force-reinstall --no-cache --no-index
142
+ pip install ignore-python --no-index --no-deps --find-links dist --force-reinstall
143
+ pip install ignore-python pytest
140
144
  pytest
141
145
 
142
146
  windows:
@@ -146,14 +150,19 @@ jobs:
146
150
  platform:
147
151
  - runner: windows-latest
148
152
  target: x64
153
+ python_arch: x64
149
154
  - runner: windows-latest
150
155
  target: x86
156
+ python_arch: x86
157
+ - runner: windows-11-arm
158
+ target: aarch64
159
+ python_arch: arm64
151
160
  steps:
152
- - uses: actions/checkout@v4
153
- - uses: actions/setup-python@v5
161
+ - uses: actions/checkout@v6
162
+ - uses: actions/setup-python@v6
154
163
  with:
155
- python-version: 3.x
156
- architecture: ${{ matrix.platform.target }}
164
+ python-version: "3.13"
165
+ architecture: ${{ matrix.platform.python_arch }}
157
166
  - name: Build wheels
158
167
  uses: PyO3/maturin-action@v1
159
168
  with:
@@ -161,19 +170,19 @@ jobs:
161
170
  args: --release --out dist --find-interpreter
162
171
  sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
163
172
  - name: Upload wheels
164
- uses: actions/upload-artifact@v4
173
+ uses: actions/upload-artifact@v6
165
174
  with:
166
175
  name: wheels-windows-${{ matrix.platform.target }}
167
176
  path: dist
177
+ - uses: astral-sh/setup-uv@v7
168
178
  - name: pytest
169
- if: ${{ !startsWith(matrix.platform.target, 'aarch64') }}
170
179
  shell: bash
171
180
  run: |
172
181
  set -e
173
- python3 -m venv .venv
182
+ uv venv .venv
174
183
  source .venv/Scripts/activate
175
- pip install ignore-python --find-links dist --force-reinstall --no-cache --no-index
176
- pip install pytest
184
+ uv pip install ignore-python --no-index --no-deps --find-links dist --reinstall
185
+ uv pip install ignore-python pytest
177
186
  pytest
178
187
 
179
188
  macos:
@@ -181,13 +190,15 @@ jobs:
181
190
  strategy:
182
191
  matrix:
183
192
  platform:
184
- - runner: macos-14
193
+ - runner: macos-15-intel
194
+ target: x86_64
195
+ - runner: macos-latest
185
196
  target: aarch64
186
197
  steps:
187
- - uses: actions/checkout@v4
188
- - uses: actions/setup-python@v5
198
+ - uses: actions/checkout@v6
199
+ - uses: actions/setup-python@v6
189
200
  with:
190
- python-version: 3.x
201
+ python-version: "3.9"
191
202
  - name: Build wheels
192
203
  uses: PyO3/maturin-action@v1
193
204
  with:
@@ -195,30 +206,31 @@ jobs:
195
206
  args: --release --out dist --find-interpreter
196
207
  sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
197
208
  - name: Upload wheels
198
- uses: actions/upload-artifact@v4
209
+ uses: actions/upload-artifact@v6
199
210
  with:
200
211
  name: wheels-macos-${{ matrix.platform.target }}
201
212
  path: dist
213
+ - uses: astral-sh/setup-uv@v7
202
214
  - name: pytest
203
215
  run: |
204
216
  set -e
205
- python3 -m venv .venv
217
+ uv venv .venv
206
218
  source .venv/bin/activate
207
- pip install ignore-python --find-links dist --force-reinstall --no-cache --no-index
208
- pip install pytest
219
+ uv pip install ignore-python --no-index --no-deps --find-links dist --reinstall
220
+ uv pip install ignore-python pytest
209
221
  pytest
210
222
 
211
223
  sdist:
212
224
  runs-on: ubuntu-latest
213
225
  steps:
214
- - uses: actions/checkout@v4
226
+ - uses: actions/checkout@v6
215
227
  - name: Build sdist
216
228
  uses: PyO3/maturin-action@v1
217
229
  with:
218
230
  command: sdist
219
231
  args: --out dist
220
232
  - name: Upload sdist
221
- uses: actions/upload-artifact@v4
233
+ uses: actions/upload-artifact@v6
222
234
  with:
223
235
  name: wheels-sdist
224
236
  path: dist
@@ -228,6 +240,7 @@ jobs:
228
240
  runs-on: ubuntu-latest
229
241
  if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
230
242
  needs: [linux, musllinux, windows, macos, sdist]
243
+ environment: pypi
231
244
  permissions:
232
245
  # Use to sign the release artifacts
233
246
  id-token: write
@@ -236,16 +249,14 @@ jobs:
236
249
  # Used to generate artifact attestation
237
250
  attestations: write
238
251
  steps:
239
- - uses: actions/download-artifact@v4
252
+ - uses: actions/download-artifact@v7
240
253
  - name: Generate artifact attestation
241
- uses: actions/attest-build-provenance@v2
254
+ uses: actions/attest@v4
242
255
  with:
243
256
  subject-path: 'wheels-*/*'
257
+ - name: Install uv
258
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
259
+ uses: astral-sh/setup-uv@v7
244
260
  - name: Publish to PyPI
245
261
  if: ${{ startsWith(github.ref, 'refs/tags/') }}
246
- uses: PyO3/maturin-action@v1
247
- env:
248
- MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
249
- with:
250
- command: upload
251
- args: --non-interactive --skip-existing wheels-*/*
262
+ run: uv publish --trusted-publishing always 'wheels-*/*'
@@ -11,20 +11,14 @@ dependencies = [
11
11
  "memchr",
12
12
  ]
13
13
 
14
- [[package]]
15
- name = "autocfg"
16
- version = "1.5.0"
17
- source = "registry+https://github.com/rust-lang/crates.io-index"
18
- checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
19
-
20
14
  [[package]]
21
15
  name = "bstr"
22
- version = "1.12.1"
16
+ version = "1.12.3"
23
17
  source = "registry+https://github.com/rust-lang/crates.io-index"
24
- checksum = "63044e1ae8e69f3b5a92c736ca6269b8d12fa7efe39bf34ddb06d102cf0e2cab"
18
+ checksum = "5cee35f73844aa3014bb606320a6c1f010249dbdf43342fe54b5a4f6a8ed4b79"
25
19
  dependencies = [
26
20
  "memchr",
27
- "serde",
21
+ "serde_core",
28
22
  ]
29
23
 
30
24
  [[package]]
@@ -73,9 +67,9 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
73
67
 
74
68
  [[package]]
75
69
  name = "ignore"
76
- version = "0.4.25"
70
+ version = "0.4.26"
77
71
  source = "registry+https://github.com/rust-lang/crates.io-index"
78
- checksum = "d3d782a365a015e0f5c04902246139249abf769125006fbe7649e2ee88169b4a"
72
+ checksum = "b915661dd01db3f05050265b2477bcc6527b3792388e2749b41623cc592be67d"
79
73
  dependencies = [
80
74
  "crossbeam-deque",
81
75
  "globset",
@@ -89,53 +83,35 @@ dependencies = [
89
83
 
90
84
  [[package]]
91
85
  name = "ignore-python"
92
- version = "0.3.2"
86
+ version = "0.4.0"
93
87
  dependencies = [
94
88
  "ignore",
95
89
  "pyo3",
96
90
  ]
97
91
 
98
- [[package]]
99
- name = "indoc"
100
- version = "2.0.7"
101
- source = "registry+https://github.com/rust-lang/crates.io-index"
102
- checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
103
- dependencies = [
104
- "rustversion",
105
- ]
106
-
107
92
  [[package]]
108
93
  name = "libc"
109
- version = "0.2.180"
94
+ version = "0.2.186"
110
95
  source = "registry+https://github.com/rust-lang/crates.io-index"
111
- checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc"
96
+ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
112
97
 
113
98
  [[package]]
114
99
  name = "log"
115
- version = "0.4.29"
100
+ version = "0.4.33"
116
101
  source = "registry+https://github.com/rust-lang/crates.io-index"
117
- checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
102
+ checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
118
103
 
119
104
  [[package]]
120
105
  name = "memchr"
121
- version = "2.8.0"
106
+ version = "2.8.2"
122
107
  source = "registry+https://github.com/rust-lang/crates.io-index"
123
- checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
124
-
125
- [[package]]
126
- name = "memoffset"
127
- version = "0.9.1"
128
- source = "registry+https://github.com/rust-lang/crates.io-index"
129
- checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
130
- dependencies = [
131
- "autocfg",
132
- ]
108
+ checksum = "88904434abc2901f197fe8cc55f0445e7ded921dba5911dad2e2b39b48e663c4"
133
109
 
134
110
  [[package]]
135
111
  name = "once_cell"
136
- version = "1.21.3"
112
+ version = "1.21.4"
137
113
  source = "registry+https://github.com/rust-lang/crates.io-index"
138
- checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
114
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
139
115
 
140
116
  [[package]]
141
117
  name = "portable-atomic"
@@ -154,36 +130,32 @@ dependencies = [
154
130
 
155
131
  [[package]]
156
132
  name = "pyo3"
157
- version = "0.25.1"
133
+ version = "0.29.0"
158
134
  source = "registry+https://github.com/rust-lang/crates.io-index"
159
- checksum = "8970a78afe0628a3e3430376fc5fd76b6b45c4d43360ffd6cdd40bdde72b682a"
135
+ checksum = "cd274650b21d4bfc26a0a47587962c1edb425f69287324355cd040c3ea66071c"
160
136
  dependencies = [
161
- "indoc",
162
137
  "libc",
163
- "memoffset",
164
138
  "once_cell",
165
139
  "portable-atomic",
166
140
  "pyo3-build-config",
167
141
  "pyo3-ffi",
168
142
  "pyo3-macros",
169
- "unindent",
170
143
  ]
171
144
 
172
145
  [[package]]
173
146
  name = "pyo3-build-config"
174
- version = "0.25.1"
147
+ version = "0.29.0"
175
148
  source = "registry+https://github.com/rust-lang/crates.io-index"
176
- checksum = "458eb0c55e7ece017adeba38f2248ff3ac615e53660d7c71a238d7d2a01c7598"
149
+ checksum = "c5e2a7d2f0d013342f295c048ad19237add5154a55b1c5a254c0ec93d4109078"
177
150
  dependencies = [
178
- "once_cell",
179
151
  "target-lexicon",
180
152
  ]
181
153
 
182
154
  [[package]]
183
155
  name = "pyo3-ffi"
184
- version = "0.25.1"
156
+ version = "0.29.0"
185
157
  source = "registry+https://github.com/rust-lang/crates.io-index"
186
- checksum = "7114fe5457c61b276ab77c5055f206295b812608083644a5c5b2640c3102565c"
158
+ checksum = "ca85c467da1bbc8d866eea5deff9cf29ea5f7785054a17da36e65bda9c05845b"
187
159
  dependencies = [
188
160
  "libc",
189
161
  "pyo3-build-config",
@@ -191,9 +163,9 @@ dependencies = [
191
163
 
192
164
  [[package]]
193
165
  name = "pyo3-macros"
194
- version = "0.25.1"
166
+ version = "0.29.0"
195
167
  source = "registry+https://github.com/rust-lang/crates.io-index"
196
- checksum = "a8725c0a622b374d6cb051d11a0983786448f7785336139c3c94f5aa6bef7e50"
168
+ checksum = "9ac53762fd065daa3194dd09337a38bd793a188100fd1a9304c4ab312d901771"
197
169
  dependencies = [
198
170
  "proc-macro2",
199
171
  "pyo3-macros-backend",
@@ -203,22 +175,21 @@ dependencies = [
203
175
 
204
176
  [[package]]
205
177
  name = "pyo3-macros-backend"
206
- version = "0.25.1"
178
+ version = "0.29.0"
207
179
  source = "registry+https://github.com/rust-lang/crates.io-index"
208
- checksum = "4109984c22491085343c05b0dbc54ddc405c3cf7b4374fc533f5c3313a572ccc"
180
+ checksum = "4ca3a1557399783172dc5bf39cfca835157732532cba56b71d2292161e53b362"
209
181
  dependencies = [
210
182
  "heck",
211
183
  "proc-macro2",
212
- "pyo3-build-config",
213
184
  "quote",
214
185
  "syn",
215
186
  ]
216
187
 
217
188
  [[package]]
218
189
  name = "quote"
219
- version = "1.0.44"
190
+ version = "1.0.46"
220
191
  source = "registry+https://github.com/rust-lang/crates.io-index"
221
- checksum = "21b2ebcf727b7760c461f091f9f0f539b77b8e87f2fd88131e7f1b433b3cece4"
192
+ checksum = "dfbc457d0c7a0759a614551b11a6409e5951f6c7537be1f1b7682b9ae9230368"
222
193
  dependencies = [
223
194
  "proc-macro2",
224
195
  ]
@@ -236,15 +207,9 @@ dependencies = [
236
207
 
237
208
  [[package]]
238
209
  name = "regex-syntax"
239
- version = "0.8.9"
240
- source = "registry+https://github.com/rust-lang/crates.io-index"
241
- checksum = "a96887878f22d7bad8a3b6dc5b7440e0ada9a245242924394987b21cf2210a4c"
242
-
243
- [[package]]
244
- name = "rustversion"
245
- version = "1.0.22"
210
+ version = "0.8.11"
246
211
  source = "registry+https://github.com/rust-lang/crates.io-index"
247
- checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
212
+ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4"
248
213
 
249
214
  [[package]]
250
215
  name = "same-file"
@@ -255,15 +220,6 @@ dependencies = [
255
220
  "winapi-util",
256
221
  ]
257
222
 
258
- [[package]]
259
- name = "serde"
260
- version = "1.0.228"
261
- source = "registry+https://github.com/rust-lang/crates.io-index"
262
- checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
263
- dependencies = [
264
- "serde_core",
265
- ]
266
-
267
223
  [[package]]
268
224
  name = "serde_core"
269
225
  version = "1.0.228"
@@ -286,9 +242,9 @@ dependencies = [
286
242
 
287
243
  [[package]]
288
244
  name = "syn"
289
- version = "2.0.114"
245
+ version = "2.0.118"
290
246
  source = "registry+https://github.com/rust-lang/crates.io-index"
291
- checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a"
247
+ checksum = "1b9ae57f904213ebb649ce6895b8a66c66f0203b9319718f69a5612a065b1422"
292
248
  dependencies = [
293
249
  "proc-macro2",
294
250
  "quote",
@@ -297,21 +253,15 @@ dependencies = [
297
253
 
298
254
  [[package]]
299
255
  name = "target-lexicon"
300
- version = "0.13.4"
256
+ version = "0.13.5"
301
257
  source = "registry+https://github.com/rust-lang/crates.io-index"
302
- checksum = "b1dd07eb858a2067e2f3c7155d54e929265c264e6f37efe3ee7a8d1b5a1dd0ba"
258
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
303
259
 
304
260
  [[package]]
305
261
  name = "unicode-ident"
306
- version = "1.0.22"
307
- source = "registry+https://github.com/rust-lang/crates.io-index"
308
- checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
309
-
310
- [[package]]
311
- name = "unindent"
312
- version = "0.2.4"
262
+ version = "1.0.24"
313
263
  source = "registry+https://github.com/rust-lang/crates.io-index"
314
- checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
264
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
315
265
 
316
266
  [[package]]
317
267
  name = "walkdir"
@@ -1,7 +1,7 @@
1
1
  [package]
2
2
  name = "ignore-python"
3
- version = "0.3.2"
4
- edition = "2021"
3
+ version = "0.4.0"
4
+ edition = "2024"
5
5
  readme = "README.md"
6
6
 
7
7
  # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
@@ -10,5 +10,5 @@ name = "ignore"
10
10
  crate-type = ["cdylib"]
11
11
 
12
12
  [dependencies]
13
- pyo3 = "0.25.1"
13
+ pyo3 = "0.29.0"
14
14
  ignore-rust = { version = "0.4.25", package = "ignore" }
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 Stefano Borsatto
3
+ Copyright (c) 2026 Stefano Borsatto
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ignore-python
3
- Version: 0.3.2
3
+ Version: 0.4.0
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: Implementation :: CPython
6
6
  Classifier: Programming Language :: Python :: Implementation :: PyPy
7
7
  License-File: LICENSE.txt
8
- Summary: Rust ignore crate Python bindings
8
+ Summary: Python bindings for the Rust crate ignore
9
9
  Keywords: python,gitignore,search,rust,extension,module,filesystem,recursively-search,fd,ripgrep,ignore
10
- Requires-Python: >=3.8
10
+ Requires-Python: >=3.9
11
11
  Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
12
12
  Project-URL: documentation, https://borsattoz.github.io/ignore-python
13
13
  Project-URL: repository, https://github.com/borsattoz/ignore-python
@@ -45,7 +45,14 @@ for entry in WalkBuilder("./").hidden(False).build():
45
45
 
46
46
  Refer to the [API documentation](https://borsattoz.github.io/ignore-python) for more information.
47
47
 
48
- ## How to install (from pip)
48
+ ## How to install
49
+ ### On Arch Linux
50
+ You can install the [python-ignore package](https://archlinux.org/packages/extra/x86_64/python-ignore/) from the official repos:
51
+ ```sh
52
+ pacman -S python-ignore
53
+ ```
54
+ ### From pip
55
+ You can install the [ignore-python package](https://pypi.org/project/ignore-python/):
49
56
  ```sh
50
57
  pip install ignore-python
51
58
  # or
@@ -31,7 +31,14 @@ for entry in WalkBuilder("./").hidden(False).build():
31
31
 
32
32
  Refer to the [API documentation](https://borsattoz.github.io/ignore-python) for more information.
33
33
 
34
- ## How to install (from pip)
34
+ ## How to install
35
+ ### On Arch Linux
36
+ You can install the [python-ignore package](https://archlinux.org/packages/extra/x86_64/python-ignore/) from the official repos:
37
+ ```sh
38
+ pacman -S python-ignore
39
+ ```
40
+ ### From pip
41
+ You can install the [ignore-python package](https://pypi.org/project/ignore-python/):
35
42
  ```sh
36
43
  pip install ignore-python
37
44
  # or
@@ -3,11 +3,10 @@ from typing import Self
3
3
 
4
4
  from ignore.overrides import Override
5
5
 
6
-
7
6
  class Error(Exception):
8
- """
9
- Represents an error that can occur during operations.
10
- """
7
+ """
8
+ Represents an error that can occur during operations.
9
+ """
11
10
 
12
11
  class IOError(Exception):
13
12
  """
@@ -22,53 +21,30 @@ class IOError(Exception):
22
21
 
23
22
  def __init__(self, errno: int, strerror: str, filename: str) -> None: ...
24
23
 
25
-
26
24
  class DirEntry:
27
25
  def path(self) -> pathlib.Path: ...
28
-
29
26
  def depth(self) -> int: ...
30
27
 
31
-
32
28
  class Walk:
33
29
  def __init__(self, path: pathlib.Path) -> None: ...
34
-
35
30
  def __iter__(self) -> Self: ...
36
-
37
31
  def __next__(self) -> DirEntry: ...
38
32
 
39
-
40
33
  class WalkBuilder:
41
34
  def __init__(self, path: pathlib.Path) -> None: ...
42
-
43
35
  def hidden(self, yes: bool) -> Self: ...
44
-
45
36
  def ignore(self, yes: bool) -> Self: ...
46
-
47
37
  def parents(self, yes: bool) -> Self: ...
48
-
49
38
  def git_ignore(self, yes: bool) -> Self: ...
50
-
51
39
  def git_global(self, yes: bool) -> Self: ...
52
-
53
40
  def git_exclude(self, yes: bool) -> Self: ...
54
-
55
41
  def require_git(self, yes: bool) -> Self: ...
56
-
57
42
  def overrides(self, overrides: Override) -> Self: ...
58
-
59
43
  def follow_links(self, yes: bool) -> Self: ...
60
-
61
44
  def same_file_system(self, yes: bool) -> Self: ...
62
-
63
45
  def max_depth(self, depth: int | None) -> Self: ...
64
-
65
46
  def max_filesize(self, filesize: int | None) -> Self: ...
66
-
67
47
  def add_custom_ignore_filename(self, file_name: str) -> Self: ...
68
-
69
48
  def add(self, path: pathlib.Path) -> Self: ...
70
-
71
49
  def add_ignore(self, path: pathlib.Path) -> None: ...
72
-
73
50
  def build(self) -> Walk: ...
74
-
@@ -1,13 +1,9 @@
1
1
  import pathlib
2
2
  from typing import Self
3
3
 
4
-
5
4
  class Override: ...
6
5
 
7
-
8
6
  class OverrideBuilder:
9
7
  def __init__(self, path: pathlib.Path) -> None: ...
10
-
11
8
  def build(self) -> Override: ...
12
-
13
9
  def add(self, glob: str) -> Self: ...
@@ -0,0 +1,36 @@
1
+ [[repos]]
2
+ repo = "https://github.com/pre-commit/pre-commit-hooks"
3
+ rev = "v6.0.0"
4
+ hooks = [
5
+ { id = "end-of-file-fixer" },
6
+ { id = "trailing-whitespace" },
7
+ { id = "name-tests-test" },
8
+ { id = "check-toml" },
9
+ ]
10
+
11
+ [[repos]]
12
+ repo = "https://github.com/abravalheri/validate-pyproject"
13
+ rev = "v0.25"
14
+ hooks = [{ id = "validate-pyproject" }]
15
+
16
+ [[repos]]
17
+ repo = "https://github.com/crate-ci/typos"
18
+ rev = "v1.44.0"
19
+ hooks = [{ id = "typos" }]
20
+
21
+ [[repos]]
22
+ repo = "https://github.com/psf/black"
23
+ rev = "26.3.0"
24
+ hooks = [{ id = "black" }]
25
+
26
+ [[repos]]
27
+ repo = "local"
28
+ hooks = [
29
+ {
30
+ id = "rustfmt",
31
+ name = "rustfmt",
32
+ entry = "rustfmt",
33
+ language = "system",
34
+ files = "\\.rs$",
35
+ }
36
+ ]
@@ -4,10 +4,10 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "ignore-python"
7
- description = "Rust ignore crate Python bindings"
7
+ description = "Python bindings for the Rust crate ignore"
8
8
  readme = "README.md"
9
9
  license = {file = "LICENSE.txt"}
10
- requires-python = ">=3.8"
10
+ requires-python = ">=3.9"
11
11
  keywords = ["python", "gitignore", "search", "rust", "extension", "module", "filesystem", "recursively-search", "fd", "ripgrep", "ignore"]
12
12
  classifiers = [
13
13
  "Programming Language :: Rust",
@@ -22,3 +22,8 @@ repository = "https://github.com/borsattoz/ignore-python"
22
22
 
23
23
  [tool.maturin]
24
24
  features = ["pyo3/extension-module"]
25
+
26
+ [tool.maturin.generate-ci.github]
27
+ pytest = true
28
+ trusted-publishing = true
29
+ publishing-environment = "pypi"
@@ -26,8 +26,10 @@ fn register_child_module<'a>(
26
26
 
27
27
  struct PathBuf(std::path::PathBuf);
28
28
 
29
- impl FromPyObject<'_> for PathBuf {
30
- fn extract_bound(path: &Bound<'_, PyAny>) -> PyResult<Self> {
29
+ impl<'py> FromPyObject<'_, 'py> for PathBuf {
30
+ type Error = PyErr;
31
+
32
+ fn extract(path: Borrowed<'_, 'py, PyAny>) -> PyResult<Self> {
31
33
  let builtins = PyModule::import(path.py(), "builtins")?;
32
34
 
33
35
  let path = builtins.getattr("str")?.call((path,), None)?;
@@ -126,7 +128,7 @@ mod ignore {
126
128
  match &error.0 {
127
129
  ignore_rust::Error::WithPath { path, err } => match err.as_ref() {
128
130
  ignore_rust::Error::Io(io_error) => match io_error.kind() {
129
- io::ErrorKind::NotFound => Python::with_gil(|py| {
131
+ io::ErrorKind::NotFound => Python::attach(|py| {
130
132
  let errno = py
131
133
  .import("errno")
132
134
  .expect("`errno` module")
@@ -178,7 +180,7 @@ mod ignore {
178
180
 
179
181
  /// A directory entry.
180
182
  ///
181
- /// See https://docs.rs/ignore/0.4.25/ignore/struct.DirEntry.html for
183
+ /// See https://docs.rs/ignore/0.4.26/ignore/struct.DirEntry.html for
182
184
  /// more information.
183
185
  #[pyclass]
184
186
  struct DirEntry(ignore_rust::DirEntry);
@@ -196,7 +198,7 @@ mod ignore {
196
198
 
197
199
  /// WalkBuilder builds a recursive directory iterator for the directory given.
198
200
  ///
199
- /// See https://docs.rs/ignore/0.4.25/ignore/struct.WalkBuilder.html
201
+ /// See https://docs.rs/ignore/0.4.26/ignore/struct.WalkBuilder.html
200
202
  /// for more information.
201
203
  #[pyclass]
202
204
  struct WalkBuilder(ignore_rust::WalkBuilder);
@@ -250,11 +252,11 @@ mod ignore {
250
252
  slf
251
253
  }
252
254
 
253
- fn overrides(
254
- mut slf: PyRefMut<'_, Self>,
255
- overrides: overrides::Override,
256
- ) -> PyRefMut<'_, Self> {
257
- slf.0.overrides(overrides.0);
255
+ fn overrides<'a>(
256
+ mut slf: PyRefMut<'a, Self>,
257
+ overrides: &'a overrides::Override,
258
+ ) -> PyRefMut<'a, Self> {
259
+ slf.0.overrides(overrides.0.clone());
258
260
 
259
261
  slf
260
262
  }
@@ -316,7 +318,7 @@ mod ignore {
316
318
  /// Currently, `__next__` raises `IOError` only when a `ENOENT` error happens (e.g. broken
317
319
  /// symlinks when following them).
318
320
  ///
319
- /// See https://docs.rs/ignore/0.4.25/ignore/struct.Walk.html for more
321
+ /// See https://docs.rs/ignore/0.4.26/ignore/struct.Walk.html for more
320
322
  /// information.
321
323
  #[pyclass]
322
324
  struct Walk(ignore_rust::Walk);
@@ -344,14 +346,13 @@ mod ignore {
344
346
 
345
347
  /// Manages a set of overrides provided explicitly by the end user.
346
348
  ///
347
- /// See https://docs.rs/ignore/0.4.25/ignore/overrides/struct.Override.html for more information.
349
+ /// See https://docs.rs/ignore/0.4.26/ignore/overrides/struct.Override.html for more information.
348
350
  #[pyclass]
349
- #[derive(Clone)]
350
351
  pub struct Override(pub ignore_rust::overrides::Override);
351
352
 
352
353
  /// Builds a matcher for a set of glob overrides.
353
354
  ///
354
- /// See https://docs.rs/ignore/0.4.25/ignore/overrides/struct.OverrideBuilder.html for more information.
355
+ /// See https://docs.rs/ignore/0.4.26/ignore/overrides/struct.OverrideBuilder.html for more information.
355
356
  #[pyclass]
356
357
  pub struct OverrideBuilder(ignore_rust::overrides::OverrideBuilder);
357
358
 
@@ -6,66 +6,67 @@ from sys import platform
6
6
 
7
7
  PATH = Path("./")
8
8
 
9
+
9
10
  def test_build():
10
11
  walk = WalkBuilder(PATH).build()
11
12
  assert type(walk) == Walk
12
13
  assert len(list(walk)) >= 2
13
14
 
15
+
14
16
  def test_flags():
15
- builder = (WalkBuilder(PATH)
16
- .hidden(True)
17
- .ignore(True)
18
- .parents(True)
19
- .git_ignore(True)
20
- .git_global(True)
21
- .git_exclude(True)
22
- .require_git(True)
23
- .follow_links(True)
24
- .same_file_system(True)
25
- )
17
+ builder = (
18
+ WalkBuilder(PATH)
19
+ .hidden(True)
20
+ .ignore(True)
21
+ .parents(True)
22
+ .git_ignore(True)
23
+ .git_global(True)
24
+ .git_exclude(True)
25
+ .require_git(True)
26
+ .follow_links(True)
27
+ .same_file_system(True)
28
+ )
26
29
 
27
30
  assert type(builder) == WalkBuilder
28
31
 
32
+
29
33
  def test_max_depth():
30
- builder = (WalkBuilder(PATH)
31
- .max_depth(None)
32
- .max_depth(0)
33
- .max_depth(42)
34
- )
34
+ builder = WalkBuilder(PATH).max_depth(None).max_depth(0).max_depth(42)
35
35
 
36
36
  assert type(builder) == WalkBuilder
37
37
 
38
38
  with pytest.raises(OverflowError):
39
39
  WalkBuilder(PATH).max_depth(-1)
40
40
 
41
+
41
42
  def test_max_filesize():
42
- builder = (WalkBuilder(PATH)
43
- .max_filesize(42)
44
- )
43
+ builder = WalkBuilder(PATH).max_filesize(42)
45
44
 
46
45
  assert type(builder) == WalkBuilder
47
46
 
48
47
  with pytest.raises(OverflowError):
49
48
  WalkBuilder(PATH).max_filesize(-1)
50
49
 
50
+
51
51
  def test_add_custom_ignore_filename():
52
52
  builder = WalkBuilder(PATH).add_custom_ignore_filename("foo")
53
53
 
54
54
  assert type(builder) == WalkBuilder
55
55
 
56
+
56
57
  def test_add():
57
58
  builder = WalkBuilder(PATH).add(Path("../bar"))
58
59
 
59
60
  assert type(builder) == WalkBuilder
60
61
 
62
+
61
63
  def test_add_ignore():
62
64
  builder = WalkBuilder(PATH)
63
65
 
64
- if platform == 'win32':
66
+ if platform == "win32":
65
67
  pstr = "C:\\Windows"
66
68
  else:
67
69
  pstr = "/"
68
70
 
69
71
  with pytest.raises(ignore.Error):
70
72
  builder.add_ignore(Path(pstr))
71
-
File without changes