pysentry-rs 0.3.10__tar.gz → 0.3.12__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.

Potentially problematic release.


This version of pysentry-rs might be problematic. Click here for more details.

Files changed (80) hide show
  1. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/.github/workflows/ci.yml +10 -1
  2. pysentry_rs-0.3.12/.github/workflows/dev-release-test.yml +213 -0
  3. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/.github/workflows/release.yml +20 -64
  4. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/Cargo.lock +65 -17
  5. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/Cargo.toml +6 -5
  6. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/PKG-INFO +75 -22
  7. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/README.md +74 -21
  8. pysentry_rs-0.3.12/benchmarks/results/0.3.10.md +141 -0
  9. pysentry_rs-0.3.12/benchmarks/results/0.3.11.md +141 -0
  10. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/cli.rs +67 -20
  11. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/config.rs +163 -1
  12. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/error.rs +7 -0
  13. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/lib.rs +7 -1
  14. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/main.rs +4 -2
  15. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/parsers/requirements.rs +258 -1
  16. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/providers/mod.rs +5 -6
  17. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/providers/osv.rs +167 -65
  18. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/providers/pypa.rs +89 -26
  19. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/providers/pypi.rs +62 -6
  20. pysentry_rs-0.3.12/src/providers/retry.rs +86 -0
  21. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/python.rs +11 -3
  22. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/vulnerability/database.rs +1 -1
  23. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/vulnerability/matcher.rs +126 -7
  24. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/.github/FUNDING.yml +0 -0
  25. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/.github/dependabot.yml +0 -0
  26. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/.github/workflows/benchmark.yml +0 -0
  27. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/.gitignore +0 -0
  28. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/.pre-commit-config.yaml +0 -0
  29. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/.pre-commit-hooks.yaml +0 -0
  30. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/LICENSE +0 -0
  31. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/.gitignore +0 -0
  32. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/.python-version +0 -0
  33. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/README.md +0 -0
  34. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/main.py +0 -0
  35. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/pyproject.toml +0 -0
  36. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/results/0.2.3.md +0 -0
  37. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/results/0.3.1.md +0 -0
  38. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/results/0.3.2.md +0 -0
  39. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/results/0.3.3.md +0 -0
  40. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/results/0.3.4.md +0 -0
  41. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/results/0.3.5.md +0 -0
  42. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/results/0.3.6.md +0 -0
  43. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/results/0.3.7.md +0 -0
  44. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/results/latest.md +0 -0
  45. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/src/benchmark_runner.py +0 -0
  46. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/src/performance_monitor.py +0 -0
  47. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/src/report_generator.py +0 -0
  48. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/src/tool_wrapper.py +0 -0
  49. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/test_data/large_requirements.txt +0 -0
  50. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/test_data/small_requirements.txt +0 -0
  51. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/test_data/uv.lock +0 -0
  52. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/benchmarks/uv.lock +0 -0
  53. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/fixtures/pipfile-tests/Pipfile +0 -0
  54. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/fixtures/pipfile-tests/Pipfile.lock +0 -0
  55. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/fixtures/pipfile-vulnerable-tests/Pipfile +0 -0
  56. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/fixtures/requirements-tests/requirements-dev.txt +0 -0
  57. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/fixtures/requirements-tests/requirements.txt +0 -0
  58. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/fixtures/requirements-tests-vulnerable/requirements.txt +0 -0
  59. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/pyproject.toml +0 -0
  60. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/python/pysentry/__init__.py +0 -0
  61. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/cache/audit.rs +0 -0
  62. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/cache/mod.rs +0 -0
  63. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/cache/storage.rs +0 -0
  64. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/dependency/mod.rs +0 -0
  65. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/dependency/resolvers/mod.rs +0 -0
  66. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/dependency/resolvers/pip_tools.rs +0 -0
  67. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/dependency/resolvers/uv.rs +0 -0
  68. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/dependency/scanner.rs +0 -0
  69. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/output/mod.rs +0 -0
  70. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/output/report.rs +0 -0
  71. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/output/sarif.rs +0 -0
  72. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/parsers/lock.rs +0 -0
  73. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/parsers/mod.rs +0 -0
  74. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/parsers/pipfile.rs +0 -0
  75. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/parsers/pipfile_lock.rs +0 -0
  76. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/parsers/poetry_lock.rs +0 -0
  77. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/parsers/pylock.rs +0 -0
  78. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/parsers/pyproject.rs +0 -0
  79. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/types.rs +0 -0
  80. {pysentry_rs-0.3.10 → pysentry_rs-0.3.12}/src/vulnerability/mod.rs +0 -0
@@ -12,6 +12,7 @@ on:
12
12
  - ".github/FUNDING.yml"
13
13
  - ".pre-commit-hooks.yaml"
14
14
  pull_request:
15
+ types: [opened, synchronize, reopened, ready_for_review]
15
16
  branches: [main]
16
17
  paths-ignore:
17
18
  - "**.md"
@@ -30,6 +31,7 @@ jobs:
30
31
  fmt:
31
32
  name: Format Check
32
33
  runs-on: ubuntu-latest
34
+ if: github.event.pull_request.draft == false || github.event_name != 'pull_request'
33
35
  steps:
34
36
  - uses: actions/checkout@v4
35
37
  - name: Install Rust
@@ -42,6 +44,7 @@ jobs:
42
44
  clippy:
43
45
  name: Clippy
44
46
  runs-on: ${{ matrix.os }}
47
+ if: github.event.pull_request.draft == false || github.event_name != 'pull_request'
45
48
  strategy:
46
49
  matrix:
47
50
  os: [ubuntu-latest, macos-latest, windows-latest]
@@ -83,6 +86,7 @@ jobs:
83
86
  check:
84
87
  name: Check
85
88
  runs-on: ${{ matrix.os }}
89
+ if: github.event.pull_request.draft == false || github.event_name != 'pull_request'
86
90
  strategy:
87
91
  matrix:
88
92
  os: [ubuntu-latest, macos-latest, windows-latest]
@@ -122,6 +126,7 @@ jobs:
122
126
  build:
123
127
  name: Build
124
128
  runs-on: ${{ matrix.os }}
129
+ if: github.event.pull_request.draft == false || github.event_name != 'pull_request'
125
130
  strategy:
126
131
  matrix:
127
132
  os: [ubuntu-latest, macos-latest, windows-latest]
@@ -160,6 +165,7 @@ jobs:
160
165
  test-debug:
161
166
  name: Test (Debug)
162
167
  runs-on: ${{ matrix.os }}
168
+ if: github.event.pull_request.draft == false || github.event_name != 'pull_request'
163
169
  strategy:
164
170
  matrix:
165
171
  os: [ubuntu-latest, macos-latest, windows-latest]
@@ -199,6 +205,7 @@ jobs:
199
205
  test-release:
200
206
  name: Test (Release)
201
207
  runs-on: ${{ matrix.os }}
208
+ if: github.event.pull_request.draft == false || github.event_name != 'pull_request'
202
209
  strategy:
203
210
  matrix:
204
211
  os: [ubuntu-latest, macos-latest, windows-latest]
@@ -238,10 +245,11 @@ jobs:
238
245
  python-bindings:
239
246
  name: Python Bindings
240
247
  runs-on: ${{ matrix.os }}
248
+ if: github.event.pull_request.draft == false || github.event_name != 'pull_request'
241
249
  strategy:
242
250
  matrix:
243
251
  os: [ubuntu-latest, macos-latest, windows-latest]
244
- python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
252
+ python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
245
253
 
246
254
  steps:
247
255
  - uses: actions/checkout@v4
@@ -283,6 +291,7 @@ jobs:
283
291
  security-audit:
284
292
  name: Security Audit
285
293
  runs-on: ubuntu-latest
294
+ if: github.event.pull_request.draft == false || github.event_name != 'pull_request'
286
295
  steps:
287
296
  - uses: actions/checkout@v4
288
297
  - uses: dtolnay/rust-toolchain@stable
@@ -0,0 +1,213 @@
1
+ name: Dev Release Test
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ env:
7
+ CARGO_TERM_COLOR: always
8
+ RUST_BACKTRACE: 1
9
+
10
+ jobs:
11
+ test-build-binaries:
12
+ name: Test Build Binaries
13
+ strategy:
14
+ fail-fast: false
15
+ matrix:
16
+ include:
17
+ - target: x86_64-unknown-linux-gnu
18
+ os: ubuntu-latest
19
+ name: linux-x64
20
+ artifact_name: pysentry
21
+ - target: x86_64-unknown-linux-musl
22
+ os: ubuntu-latest
23
+ name: linux-x64-musl
24
+ artifact_name: pysentry
25
+ - target: aarch64-unknown-linux-gnu
26
+ os: ubuntu-latest
27
+ name: linux-arm64
28
+ artifact_name: pysentry
29
+ - target: x86_64-apple-darwin
30
+ os: macos-latest
31
+ name: macos-x64
32
+ artifact_name: pysentry
33
+ - target: aarch64-apple-darwin
34
+ os: macos-latest
35
+ name: macos-arm64
36
+ artifact_name: pysentry
37
+ - target: x86_64-pc-windows-msvc
38
+ os: windows-latest
39
+ name: windows-x64
40
+ artifact_name: pysentry.exe
41
+
42
+ runs-on: ${{ matrix.os }}
43
+ steps:
44
+ - uses: actions/checkout@v4
45
+
46
+ - name: Install Rust
47
+ uses: dtolnay/rust-toolchain@stable
48
+ with:
49
+ targets: ${{ matrix.target }}
50
+
51
+ - name: Install cross
52
+ if: matrix.target != 'x86_64-unknown-linux-gnu'
53
+ run: cargo install cross
54
+
55
+ - name: Build binary (native)
56
+ if: matrix.target == 'x86_64-unknown-linux-gnu'
57
+ run: cargo build --release --target ${{ matrix.target }} --bin pysentry
58
+
59
+ - name: Build binary (cross-compile)
60
+ if: matrix.target != 'x86_64-unknown-linux-gnu'
61
+ run: cross build --release --target ${{ matrix.target }} --bin pysentry
62
+
63
+ - name: Package binary (Unix)
64
+ if: matrix.os != 'windows-latest'
65
+ run: |
66
+ name=pysentry-${{ matrix.name }}
67
+ mkdir $name
68
+ cp target/${{ matrix.target }}/release/${{ matrix.artifact_name }} $name/
69
+ cp README.md $name/
70
+ cp LICENSE $name/
71
+ tar -czf $name.tar.gz $name
72
+ echo "ASSET=$name.tar.gz" >> $GITHUB_ENV
73
+
74
+ - name: Package binary (Windows)
75
+ if: matrix.os == 'windows-latest'
76
+ run: |
77
+ $name = "pysentry-${{ matrix.name }}"
78
+ mkdir $name
79
+ cp target/${{ matrix.target }}/release/${{ matrix.artifact_name }} $name/
80
+ cp README.md $name/
81
+ cp LICENSE $name/
82
+ Compress-Archive -Path $name -DestinationPath "$name.zip"
83
+ echo "ASSET=$name.zip" | Out-File -FilePath $env:GITHUB_ENV -Append
84
+
85
+ - name: Upload binary artifact
86
+ uses: actions/upload-artifact@v4
87
+ with:
88
+ name: binary-${{ matrix.name }}
89
+ path: ${{ env.ASSET }}
90
+ retention-days: 7
91
+
92
+ test-build-python-wheels:
93
+ name: Test Build Python Wheels
94
+ runs-on: ${{ matrix.osarch.os }}
95
+ strategy:
96
+ fail-fast: false
97
+ matrix:
98
+ osarch:
99
+ - os: ubuntu-latest
100
+ target: x86_64-unknown-linux-gnu
101
+ - os: ubuntu-latest
102
+ target: aarch64-unknown-linux-gnu
103
+ - os: windows-latest
104
+ target: x86_64-pc-windows-msvc
105
+ - os: macos-latest
106
+ target: x86_64-apple-darwin
107
+ - os: macos-latest
108
+ target: aarch64-apple-darwin
109
+ python: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
110
+ steps:
111
+ - uses: actions/checkout@v4
112
+
113
+ - name: Install system dependencies (Ubuntu)
114
+ if: startsWith(matrix.osarch.os, 'ubuntu')
115
+ run: sudo apt-get update && sudo apt-get install -y libssl-dev pkg-config
116
+
117
+ - name: Set up Python
118
+ uses: actions/setup-python@v5
119
+ with:
120
+ python-version: ${{ matrix.python }}
121
+ allow-prereleases: true
122
+
123
+ - name: Install Rust
124
+ uses: dtolnay/rust-toolchain@stable
125
+
126
+ - name: Set manylinux version
127
+ id: manylinux
128
+ if: startsWith(matrix.osarch.os, 'ubuntu')
129
+ run: |
130
+ if [[ "${{ matrix.osarch.target }}" == "aarch64-unknown-linux-gnu" ]]; then
131
+ echo "version=2_28" >> $GITHUB_OUTPUT
132
+ else
133
+ echo "version=auto" >> $GITHUB_OUTPUT
134
+ fi
135
+
136
+ - name: Build wheels
137
+ uses: PyO3/maturin-action@v1.49.4
138
+ with:
139
+ command: build
140
+ args: --release --features python --out dist -i ${{ matrix.python }}
141
+ sccache: "true"
142
+ manylinux: ${{ steps.manylinux.outputs.version || 'auto' }}
143
+ target: ${{ matrix.osarch.target }}
144
+
145
+ - name: Upload wheels
146
+ uses: actions/upload-artifact@v4
147
+ with:
148
+ name: wheels-${{ matrix.osarch.os }}-${{ matrix.osarch.target }}-${{ matrix.python }}
149
+ path: dist/*.whl
150
+ retention-days: 7
151
+
152
+ test-build-sdist:
153
+ name: Test Build Source Distribution
154
+ runs-on: ubuntu-latest
155
+ steps:
156
+ - uses: actions/checkout@v4
157
+
158
+ - name: Set up Python
159
+ uses: actions/setup-python@v5
160
+ with:
161
+ python-version: "3.12"
162
+
163
+ - name: Install Rust
164
+ uses: dtolnay/rust-toolchain@stable
165
+
166
+ - name: Build sdist
167
+ uses: PyO3/maturin-action@v1.49.3
168
+ with:
169
+ command: sdist
170
+ args: --out dist
171
+
172
+ - name: Upload sdist
173
+ uses: actions/upload-artifact@v4
174
+ with:
175
+ name: sdist
176
+ path: dist/*.tar.gz
177
+ retention-days: 7
178
+
179
+ test-release-summary:
180
+ name: Release Test Summary
181
+ runs-on: ubuntu-latest
182
+ needs: [test-build-binaries, test-build-python-wheels, test-build-sdist]
183
+ if: always()
184
+ steps:
185
+ - name: Check build results
186
+ run: |
187
+ echo "## Build Results" >> $GITHUB_STEP_SUMMARY
188
+ echo "" >> $GITHUB_STEP_SUMMARY
189
+
190
+ if [ "${{ needs.test-build-binaries.result }}" == "success" ]; then
191
+ echo "✅ Binary builds: SUCCESS" >> $GITHUB_STEP_SUMMARY
192
+ else
193
+ echo "❌ Binary builds: FAILED" >> $GITHUB_STEP_SUMMARY
194
+ fi
195
+
196
+ if [ "${{ needs.test-build-python-wheels.result }}" == "success" ]; then
197
+ echo "✅ Python wheel builds: SUCCESS" >> $GITHUB_STEP_SUMMARY
198
+ else
199
+ echo "❌ Python wheel builds: FAILED" >> $GITHUB_STEP_SUMMARY
200
+ fi
201
+
202
+ if [ "${{ needs.test-build-sdist.result }}" == "success" ]; then
203
+ echo "✅ Source distribution build: SUCCESS" >> $GITHUB_STEP_SUMMARY
204
+ else
205
+ echo "❌ Source distribution build: FAILED" >> $GITHUB_STEP_SUMMARY
206
+ fi
207
+
208
+ echo "" >> $GITHUB_STEP_SUMMARY
209
+ echo "All artifacts are available in the workflow run for 7 days." >> $GITHUB_STEP_SUMMARY
210
+
211
+ - name: Fail if any build failed
212
+ if: needs.test-build-binaries.result != 'success' || needs.test-build-python-wheels.result != 'success' || needs.test-build-sdist.result != 'success'
213
+ run: exit 1
@@ -136,80 +136,26 @@ jobs:
136
136
 
137
137
  build-python-wheels:
138
138
  name: Build Python Wheels
139
- runs-on: ${{ matrix.os }}
139
+ runs-on: ${{ matrix.osarch.os }}
140
140
  strategy:
141
- fail-fast: false
142
141
  matrix:
143
- include:
144
- # x86_64 Linux
142
+ osarch:
145
143
  - os: ubuntu-latest
146
144
  target: x86_64-unknown-linux-gnu
147
- python: "3.9"
148
145
  - os: ubuntu-latest
149
- target: x86_64-unknown-linux-gnu
150
- python: "3.10"
151
- - os: ubuntu-latest
152
- target: x86_64-unknown-linux-gnu
153
- python: "3.11"
154
- - os: ubuntu-latest
155
- target: x86_64-unknown-linux-gnu
156
- python: "3.12"
157
- - os: ubuntu-latest
158
- target: x86_64-unknown-linux-gnu
159
- python: "3.13"
160
- # macOS
161
- - os: macos-latest
162
- target: x86_64-apple-darwin
163
- python: "3.9"
164
- - os: macos-latest
165
- target: x86_64-apple-darwin
166
- python: "3.10"
167
- - os: macos-latest
168
- target: x86_64-apple-darwin
169
- python: "3.11"
170
- - os: macos-latest
171
- target: x86_64-apple-darwin
172
- python: "3.12"
146
+ target: aarch64-unknown-linux-gnu
147
+ - os: windows-latest
148
+ target: x86_64-pc-windows-msvc
173
149
  - os: macos-latest
174
150
  target: x86_64-apple-darwin
175
- python: "3.13"
176
151
  - os: macos-latest
177
152
  target: aarch64-apple-darwin
178
- python: "3.9"
179
- - os: macos-latest
180
- target: aarch64-apple-darwin
181
- python: "3.10"
182
- - os: macos-latest
183
- target: aarch64-apple-darwin
184
- python: "3.11"
185
- - os: macos-latest
186
- target: aarch64-apple-darwin
187
- python: "3.12"
188
- - os: macos-latest
189
- target: aarch64-apple-darwin
190
- python: "3.13"
191
- # Windows
192
- - os: windows-latest
193
- target: x86_64-pc-windows-msvc
194
- python: "3.9"
195
- - os: windows-latest
196
- target: x86_64-pc-windows-msvc
197
- python: "3.10"
198
- - os: windows-latest
199
- target: x86_64-pc-windows-msvc
200
- python: "3.11"
201
- - os: windows-latest
202
- target: x86_64-pc-windows-msvc
203
- python: "3.12"
204
- - os: windows-latest
205
- target: x86_64-pc-windows-msvc
206
- python: "3.13"
207
-
153
+ python: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
208
154
  steps:
209
155
  - uses: actions/checkout@v4
210
156
 
211
157
  - name: Install system dependencies (Ubuntu)
212
- if: startsWith(matrix.os, 'ubuntu')
158
+ if: startsWith(matrix.osarch.os, 'ubuntu')
213
159
  run: sudo apt-get update && sudo apt-get install -y libssl-dev pkg-config
214
160
 
215
161
  - name: Set up Python
@@ -220,19 +166,29 @@ jobs:
220
166
  - name: Install Rust
221
167
  uses: dtolnay/rust-toolchain@stable
222
168
 
169
+ - name: Set manylinux version
170
+ id: manylinux
171
+ if: startsWith(matrix.osarch.os, 'ubuntu')
172
+ run: |
173
+ if [[ "${{ matrix.osarch.target }}" == "aarch64-unknown-linux-gnu" ]]; then
174
+ echo "version=2_28" >> $GITHUB_OUTPUT
175
+ else
176
+ echo "version=auto" >> $GITHUB_OUTPUT
177
+ fi
178
+
223
179
  - name: Build wheels
224
180
  uses: PyO3/maturin-action@v1.49.4
225
181
  with:
226
182
  command: build
227
183
  args: --release --features python --out dist -i ${{ matrix.python }}
228
184
  sccache: "true"
229
- manylinux: auto
230
- target: ${{ matrix.target }}
185
+ manylinux: ${{ steps.manylinux.outputs.version || 'auto' }}
186
+ target: ${{ matrix.osarch.target }}
231
187
 
232
188
  - name: Upload wheels
233
189
  uses: actions/upload-artifact@v4
234
190
  with:
235
- name: wheels-${{ matrix.os }}-${{ matrix.target }}-${{ matrix.python }}
191
+ name: wheels-${{ matrix.osarch.os }}-${{ matrix.osarch.target }}-${{ matrix.python }}
236
192
  path: dist/*.whl
237
193
 
238
194
  build-sdist:
@@ -246,6 +246,19 @@ version = "1.0.4"
246
246
  source = "registry+https://github.com/rust-lang/crates.io-index"
247
247
  checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75"
248
248
 
249
+ [[package]]
250
+ name = "console"
251
+ version = "0.16.1"
252
+ source = "registry+https://github.com/rust-lang/crates.io-index"
253
+ checksum = "b430743a6eb14e9764d4260d4c0d8123087d504eeb9c48f2b2a5e810dd369df4"
254
+ dependencies = [
255
+ "encode_unicode",
256
+ "libc",
257
+ "once_cell",
258
+ "unicode-width",
259
+ "windows-sys 0.61.1",
260
+ ]
261
+
249
262
  [[package]]
250
263
  name = "core-foundation"
251
264
  version = "0.10.1"
@@ -343,6 +356,12 @@ dependencies = [
343
356
  "syn",
344
357
  ]
345
358
 
359
+ [[package]]
360
+ name = "encode_unicode"
361
+ version = "1.0.0"
362
+ source = "registry+https://github.com/rust-lang/crates.io-index"
363
+ checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0"
364
+
346
365
  [[package]]
347
366
  name = "equivalent"
348
367
  version = "1.0.2"
@@ -785,6 +804,19 @@ dependencies = [
785
804
  "hashbrown",
786
805
  ]
787
806
 
807
+ [[package]]
808
+ name = "indicatif"
809
+ version = "0.18.0"
810
+ source = "registry+https://github.com/rust-lang/crates.io-index"
811
+ checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd"
812
+ dependencies = [
813
+ "console",
814
+ "portable-atomic",
815
+ "unicode-width",
816
+ "unit-prefix",
817
+ "web-time",
818
+ ]
819
+
788
820
  [[package]]
789
821
  name = "indoc"
790
822
  version = "2.0.6"
@@ -1122,7 +1154,7 @@ dependencies = [
1122
1154
 
1123
1155
  [[package]]
1124
1156
  name = "pysentry"
1125
- version = "0.3.10"
1157
+ version = "0.3.12"
1126
1158
  dependencies = [
1127
1159
  "anyhow",
1128
1160
  "async-trait",
@@ -1131,6 +1163,7 @@ dependencies = [
1131
1163
  "dirs",
1132
1164
  "fs-err",
1133
1165
  "futures",
1166
+ "indicatif",
1134
1167
  "owo-colors",
1135
1168
  "pep440_rs",
1136
1169
  "pyo3",
@@ -1262,9 +1295,9 @@ dependencies = [
1262
1295
 
1263
1296
  [[package]]
1264
1297
  name = "regex"
1265
- version = "1.11.2"
1298
+ version = "1.11.3"
1266
1299
  source = "registry+https://github.com/rust-lang/crates.io-index"
1267
- checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912"
1300
+ checksum = "8b5288124840bee7b386bc413c487869b360b2b4ec421ea56425128692f2a82c"
1268
1301
  dependencies = [
1269
1302
  "aho-corasick",
1270
1303
  "memchr",
@@ -1274,9 +1307,9 @@ dependencies = [
1274
1307
 
1275
1308
  [[package]]
1276
1309
  name = "regex-automata"
1277
- version = "0.4.9"
1310
+ version = "0.4.11"
1278
1311
  source = "registry+https://github.com/rust-lang/crates.io-index"
1279
- checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
1312
+ checksum = "833eb9ce86d40ef33cb1306d8accf7bc8ec2bfea4355cbdebb3df68b40925cad"
1280
1313
  dependencies = [
1281
1314
  "aho-corasick",
1282
1315
  "memchr",
@@ -1462,9 +1495,9 @@ dependencies = [
1462
1495
 
1463
1496
  [[package]]
1464
1497
  name = "serde"
1465
- version = "1.0.226"
1498
+ version = "1.0.228"
1466
1499
  source = "registry+https://github.com/rust-lang/crates.io-index"
1467
- checksum = "0dca6411025b24b60bfa7ec1fe1f8e710ac09782dca409ee8237ba74b51295fd"
1500
+ checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
1468
1501
  dependencies = [
1469
1502
  "serde_core",
1470
1503
  "serde_derive",
@@ -1472,18 +1505,18 @@ dependencies = [
1472
1505
 
1473
1506
  [[package]]
1474
1507
  name = "serde_core"
1475
- version = "1.0.226"
1508
+ version = "1.0.228"
1476
1509
  source = "registry+https://github.com/rust-lang/crates.io-index"
1477
- checksum = "ba2ba63999edb9dac981fb34b3e5c0d111a69b0924e253ed29d83f7c99e966a4"
1510
+ checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
1478
1511
  dependencies = [
1479
1512
  "serde_derive",
1480
1513
  ]
1481
1514
 
1482
1515
  [[package]]
1483
1516
  name = "serde_derive"
1484
- version = "1.0.226"
1517
+ version = "1.0.228"
1485
1518
  source = "registry+https://github.com/rust-lang/crates.io-index"
1486
- checksum = "8db53ae22f34573731bafa1db20f04027b2d25e02d8205921b569171699cdb33"
1519
+ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
1487
1520
  dependencies = [
1488
1521
  "proc-macro2",
1489
1522
  "quote",
@@ -1680,18 +1713,18 @@ dependencies = [
1680
1713
 
1681
1714
  [[package]]
1682
1715
  name = "thiserror"
1683
- version = "2.0.16"
1716
+ version = "2.0.17"
1684
1717
  source = "registry+https://github.com/rust-lang/crates.io-index"
1685
- checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0"
1718
+ checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8"
1686
1719
  dependencies = [
1687
1720
  "thiserror-impl",
1688
1721
  ]
1689
1722
 
1690
1723
  [[package]]
1691
1724
  name = "thiserror-impl"
1692
- version = "2.0.16"
1725
+ version = "2.0.17"
1693
1726
  source = "registry+https://github.com/rust-lang/crates.io-index"
1694
- checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960"
1727
+ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913"
1695
1728
  dependencies = [
1696
1729
  "proc-macro2",
1697
1730
  "quote",
@@ -1960,6 +1993,12 @@ version = "0.2.4"
1960
1993
  source = "registry+https://github.com/rust-lang/crates.io-index"
1961
1994
  checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
1962
1995
 
1996
+ [[package]]
1997
+ name = "unit-prefix"
1998
+ version = "0.5.1"
1999
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2000
+ checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817"
2001
+
1963
2002
  [[package]]
1964
2003
  name = "unsafe-libyaml"
1965
2004
  version = "0.2.11"
@@ -2233,6 +2272,15 @@ dependencies = [
2233
2272
  "windows-targets 0.53.3",
2234
2273
  ]
2235
2274
 
2275
+ [[package]]
2276
+ name = "windows-sys"
2277
+ version = "0.61.1"
2278
+ source = "registry+https://github.com/rust-lang/crates.io-index"
2279
+ checksum = "6f109e41dd4a3c848907eb83d5a42ea98b3769495597450cf6d153507b166f0f"
2280
+ dependencies = [
2281
+ "windows-link 0.2.0",
2282
+ ]
2283
+
2236
2284
  [[package]]
2237
2285
  name = "windows-targets"
2238
2286
  version = "0.52.6"
@@ -2489,9 +2537,9 @@ dependencies = [
2489
2537
 
2490
2538
  [[package]]
2491
2539
  name = "zip"
2492
- version = "4.6.1"
2540
+ version = "5.1.1"
2493
2541
  source = "registry+https://github.com/rust-lang/crates.io-index"
2494
- checksum = "caa8cd6af31c3b31c6631b8f483848b91589021b28fffe50adada48d4f4d2ed1"
2542
+ checksum = "2f852905151ac8d4d06fdca66520a661c09730a74c6d4e2b0f27b436b382e532"
2495
2543
  dependencies = [
2496
2544
  "arbitrary",
2497
2545
  "crc32fast",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "pysentry"
3
- version = "0.3.10"
3
+ version = "0.3.12"
4
4
  edition = "2021"
5
5
  rust-version = "1.79"
6
6
  description = "Security vulnerability auditing for Python packages"
@@ -29,20 +29,21 @@ clap = { version = "4.5.48", features = ["derive"] }
29
29
  dirs = "6.0.0"
30
30
  fs-err = "3.1.2"
31
31
  futures = "0.3.31"
32
+ indicatif = "0.18.0"
32
33
  owo-colors = "4.2.2"
33
34
  pep440_rs = "0.7.3"
34
35
  pyo3 = { version = "0.26.0", features = ["extension-module"], optional = true }
35
- regex = "1.11.2"
36
+ regex = "1.11.3"
36
37
  reqwest = { version = "0.12.23", features = ["json", "stream", "rustls-tls-native-roots"], default-features = false }
37
38
  rustc-hash = "2.1.1"
38
- serde = { version = "1.0.226", features = ["derive"] }
39
+ serde = { version = "1.0.228", features = ["derive"] }
39
40
  serde_json = "1.0.145"
40
41
  serde_yaml = "0.9.34"
41
42
  sha2 = "0.10.9"
42
43
  tempfile = "3.23.0"
43
- thiserror = "2.0.16"
44
+ thiserror = "2.0.17"
44
45
  tokio = { version = "1.47.1", features = ["fs", "io-util", "rt-multi-thread", "macros", "process"] }
45
46
  toml = "0.9.7"
46
47
  tracing = "0.1.41"
47
48
  tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
48
- zip = { version = "4.5.0", default-features = false, features = ["deflate"] }
49
+ zip = { version = "5.1.1", default-features = false, features = ["deflate"] }