pysentry-rs 0.3.1__tar.gz → 0.3.3__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 (65) hide show
  1. pysentry_rs-0.3.3/.pre-commit-hooks.yaml +10 -0
  2. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/Cargo.lock +9 -9
  3. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/Cargo.toml +3 -3
  4. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/PKG-INFO +96 -20
  5. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/README.md +95 -19
  6. pysentry_rs-0.3.3/benchmarks/results/0.3.1.md +141 -0
  7. pysentry_rs-0.3.3/benchmarks/results/0.3.2.md +141 -0
  8. pysentry_rs-0.3.3/benchmarks/results/latest.md +141 -0
  9. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/cli.rs +383 -7
  10. pysentry_rs-0.3.3/src/config.rs +584 -0
  11. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/lib.rs +5 -0
  12. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/main.rs +39 -5
  13. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/parsers/pyproject.rs +367 -11
  14. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/python.rs +20 -0
  15. pysentry_rs-0.3.1/benchmarks/results/latest.md +0 -141
  16. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/.github/FUNDING.yml +0 -0
  17. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/.github/dependabot.yml +0 -0
  18. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/.github/workflows/benchmark.yml +0 -0
  19. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/.github/workflows/ci.yml +0 -0
  20. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/.github/workflows/release.yml +0 -0
  21. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/.gitignore +0 -0
  22. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/.pre-commit-config.yaml +0 -0
  23. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/LICENSE +0 -0
  24. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/.gitignore +0 -0
  25. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/.python-version +0 -0
  26. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/README.md +0 -0
  27. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/main.py +0 -0
  28. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/pyproject.toml +0 -0
  29. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/results/0.2.3.md +0 -0
  30. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/src/benchmark_runner.py +0 -0
  31. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/src/performance_monitor.py +0 -0
  32. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/src/report_generator.py +0 -0
  33. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/src/tool_wrapper.py +0 -0
  34. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/test_data/large_requirements.txt +0 -0
  35. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/test_data/small_requirements.txt +0 -0
  36. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/benchmarks/uv.lock +0 -0
  37. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/fixtures/requirements-tests/requirements-dev.txt +0 -0
  38. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/fixtures/requirements-tests/requirements.txt +0 -0
  39. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/fixtures/requirements-tests-vulnerable/requirements.txt +0 -0
  40. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/pyproject.toml +0 -0
  41. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/python/pysentry/__init__.py +0 -0
  42. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/cache/audit.rs +0 -0
  43. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/cache/mod.rs +0 -0
  44. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/cache/storage.rs +0 -0
  45. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/dependency/mod.rs +0 -0
  46. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/dependency/resolvers/mod.rs +0 -0
  47. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/dependency/resolvers/pip_tools.rs +0 -0
  48. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/dependency/resolvers/uv.rs +0 -0
  49. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/dependency/scanner.rs +0 -0
  50. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/error.rs +0 -0
  51. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/output/mod.rs +0 -0
  52. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/output/report.rs +0 -0
  53. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/output/sarif.rs +0 -0
  54. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/parsers/lock.rs +0 -0
  55. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/parsers/mod.rs +0 -0
  56. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/parsers/poetry_lock.rs +0 -0
  57. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/parsers/requirements.rs +0 -0
  58. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/providers/mod.rs +0 -0
  59. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/providers/osv.rs +0 -0
  60. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/providers/pypa.rs +0 -0
  61. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/providers/pypi.rs +0 -0
  62. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/types.rs +0 -0
  63. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/vulnerability/database.rs +0 -0
  64. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/vulnerability/matcher.rs +0 -0
  65. {pysentry_rs-0.3.1 → pysentry_rs-0.3.3}/src/vulnerability/mod.rs +0 -0
@@ -0,0 +1,10 @@
1
+ - id: pysentry
2
+ name: pysentry
3
+ description: "Fast security vulnerability scanner for Python dependencies"
4
+ entry: pysentry
5
+ language: python
6
+ always_run: true
7
+ additional_dependencies:
8
+ ["pysentry-rs==0.3.3", "uv==0.8.9", "pip-tools==7.5.0"]
9
+ minimum_pre_commit_version: "2.9.2"
10
+ types: [python]
@@ -93,9 +93,9 @@ dependencies = [
93
93
 
94
94
  [[package]]
95
95
  name = "anyhow"
96
- version = "1.0.98"
96
+ version = "1.0.99"
97
97
  source = "registry+https://github.com/rust-lang/crates.io-index"
98
- checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
98
+ checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100"
99
99
 
100
100
  [[package]]
101
101
  name = "arbitrary"
@@ -209,9 +209,9 @@ dependencies = [
209
209
 
210
210
  [[package]]
211
211
  name = "clap"
212
- version = "4.5.43"
212
+ version = "4.5.45"
213
213
  source = "registry+https://github.com/rust-lang/crates.io-index"
214
- checksum = "50fd97c9dc2399518aa331917ac6f274280ec5eb34e555dd291899745c48ec6f"
214
+ checksum = "1fc0e74a703892159f5ae7d3aac52c8e6c392f5ae5f359c70b5881d60aaac318"
215
215
  dependencies = [
216
216
  "clap_builder",
217
217
  "clap_derive",
@@ -219,9 +219,9 @@ dependencies = [
219
219
 
220
220
  [[package]]
221
221
  name = "clap_builder"
222
- version = "4.5.43"
222
+ version = "4.5.44"
223
223
  source = "registry+https://github.com/rust-lang/crates.io-index"
224
- checksum = "c35b5830294e1fa0462034af85cc95225a4cb07092c088c55bda3147cfcd8f65"
224
+ checksum = "b3e7f4214277f3c7aa526a59dd3fbe306a370daee1f8b7b8c987069cd8e888a8"
225
225
  dependencies = [
226
226
  "anstream",
227
227
  "anstyle",
@@ -231,9 +231,9 @@ dependencies = [
231
231
 
232
232
  [[package]]
233
233
  name = "clap_derive"
234
- version = "4.5.41"
234
+ version = "4.5.45"
235
235
  source = "registry+https://github.com/rust-lang/crates.io-index"
236
- checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491"
236
+ checksum = "14cb31bb0a7d536caef2639baa7fad459e15c3144efefa6dbd1c84562c4739f6"
237
237
  dependencies = [
238
238
  "heck",
239
239
  "proc-macro2",
@@ -1121,7 +1121,7 @@ dependencies = [
1121
1121
 
1122
1122
  [[package]]
1123
1123
  name = "pysentry"
1124
- version = "0.3.1"
1124
+ version = "0.3.3"
1125
1125
  dependencies = [
1126
1126
  "anyhow",
1127
1127
  "async-trait",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "pysentry"
3
- version = "0.3.1"
3
+ version = "0.3.3"
4
4
  edition = "2021"
5
5
  rust-version = "1.79"
6
6
  description = "Security vulnerability auditing for Python packages"
@@ -22,10 +22,10 @@ path = "src/main.rs"
22
22
  python = ["pyo3"]
23
23
 
24
24
  [dependencies]
25
- anyhow = "1.0.98"
25
+ anyhow = "1.0.99"
26
26
  async-trait = "0.1.88"
27
27
  chrono = { version = "0.4.41", features = ["serde"] }
28
- clap = { version = "4.5.43", features = ["derive"] }
28
+ clap = { version = "4.5.45", features = ["derive"] }
29
29
  dirs = "6.0.0"
30
30
  fs-err = "3.1.1"
31
31
  futures = "0.3.31"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pysentry-rs
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Classifier: Development Status :: 4 - Beta
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
@@ -287,29 +287,105 @@ pysentry --clear-resolution-cache --sources pypa,osv --format sarif
287
287
  pysentry --no-resolution-cache --format json --output security-report.json
288
288
  ```
289
289
 
290
+ ## Pre-commit Integration
291
+
292
+ PySentry integrates seamlessly with [pre-commit](https://pre-commit.com/) to automatically scan for vulnerabilities before commits.
293
+
294
+ ### Setup
295
+
296
+ Add PySentry to your `.pre-commit-config.yaml`:
297
+
298
+ ```yaml
299
+ repos:
300
+ - repo: https://github.com/nyudenkov/pysentry
301
+ hooks:
302
+ - id: pysentry # default pysentry settings
303
+ ```
304
+
305
+ ### Advanced Configuration
306
+
307
+ ```yaml
308
+ repos:
309
+ - repo: https://github.com/nyudenkov/pysentry
310
+ hooks:
311
+ - id: pysentry
312
+ args: ["--sources", "pypa,osv", "--fail-on", "high"]
313
+ ```
314
+
315
+ ### Installation Requirements
316
+
317
+ Pre-commit will automatically install PySentry, uv and pip-tools via PyPI.
318
+
290
319
  ## Configuration
291
320
 
321
+ PySentry supports TOML-based configuration files for persistent settings management. Configuration files follow a hierarchical discovery pattern:
322
+
323
+ 1. **Project-level**: `.pysentry.toml` in current or parent directories
324
+ 2. **User-level**: `~/.config/pysentry/config.toml` (Linux/macOS)
325
+ 3. **System-level**: `/etc/pysentry/config.toml` (Unix systems)
326
+
327
+ ### Configuration File Example
328
+
329
+ ```toml
330
+ version = 1
331
+
332
+ [defaults]
333
+ format = "json"
334
+ severity = "medium"
335
+ fail_on = "high"
336
+ scope = "all"
337
+ direct_only = false
338
+
339
+ [sources]
340
+ enabled = ["pypa", "osv"]
341
+
342
+ [resolver]
343
+ type = "uv"
344
+ fallback = "pip-tools"
345
+
346
+ [cache]
347
+ enabled = true
348
+ resolution_ttl = 48
349
+ vulnerability_ttl = 72
350
+
351
+ [output]
352
+ quiet = false
353
+ verbose = false
354
+ color = "auto"
355
+
356
+ [ignore]
357
+ ids = ["CVE-2023-12345", "GHSA-xxxx-yyyy-zzzz"]
358
+ ```
359
+
360
+ ### Environment Variables
361
+
362
+ | Variable | Description | Example |
363
+ | -------------------- | ------------------------------- | -------------------------------------- |
364
+ | `PYSENTRY_CONFIG` | Override config file path | `PYSENTRY_CONFIG=/path/to/config.toml` |
365
+ | `PYSENTRY_NO_CONFIG` | Disable all config file loading | `PYSENTRY_NO_CONFIG=1` |
366
+
292
367
  ### Command Line Options
293
368
 
294
- | Option | Description | Default |
295
- | -------------------------- | ------------------------------------------------------- | ----------------- |
296
- | `--format` | Output format: `human`, `json`, `sarif`, `markdown` | `human` |
297
- | `--severity` | Minimum severity: `low`, `medium`, `high`, `critical` | `low` |
298
- | `--fail-on` | Fail (exit non-zero) on vulnerabilities ≥ severity | `medium` |
299
- | `--sources` | Vulnerability sources: `pypa`, `pypi`, `osv` (multiple) | `pypa` |
300
- | `--all-extras` | Include all dependencies (main + dev + optional) | `false` |
301
- | `--direct-only` | Check only direct dependencies | `false` |
302
- | `--ignore` | Vulnerability IDs to ignore (repeatable) | `[]` |
303
- | `--output` | Output file path | `stdout` |
304
- | `--no-cache` | Disable all caching | `false` |
305
- | `--cache-dir` | Custom cache directory | Platform-specific |
306
- | `--resolution-cache-ttl` | Resolution cache TTL in hours | `24` |
307
- | `--no-resolution-cache` | Disable resolution caching only | `false` |
308
- | `--clear-resolution-cache` | Clear resolution cache on startup | `false` |
309
- | `--verbose` | Enable verbose output | `false` |
310
- | `--quiet` | Suppress non-error output | `false` |
311
- | `--resolver` | Dependency resolver: `auto`, `uv`, `pip-tools` | `auto` |
312
- | `--requirements` | Additional requirements files (repeatable) | `[]` |
369
+ | Option | Description | Default |
370
+ | -------------------------- | --------------------------------------------------------- | ----------------- |
371
+ | `--format` | Output format: `human`, `json`, `sarif`, `markdown` | `human` |
372
+ | `--severity` | Minimum severity: `low`, `medium`, `high`, `critical` | `low` |
373
+ | `--fail-on` | Fail (exit non-zero) on vulnerabilities ≥ severity | `medium` |
374
+ | `--sources` | Vulnerability sources: `pypa`, `pypi`, `osv` (multiple) | `pypa` |
375
+ | `--all-extras` | Include all dependencies (main + dev + optional) | `false` |
376
+ | `--direct-only` | Check only direct dependencies | `false` |
377
+ | `--detailed` | Show full vulnerability descriptions instead of truncated | `false` |
378
+ | `--ignore` | Vulnerability IDs to ignore (repeatable) | `[]` |
379
+ | `--output` | Output file path | `stdout` |
380
+ | `--no-cache` | Disable all caching | `false` |
381
+ | `--cache-dir` | Custom cache directory | Platform-specific |
382
+ | `--resolution-cache-ttl` | Resolution cache TTL in hours | `24` |
383
+ | `--no-resolution-cache` | Disable resolution caching only | `false` |
384
+ | `--clear-resolution-cache` | Clear resolution cache on startup | `false` |
385
+ | `--verbose` | Enable verbose output | `false` |
386
+ | `--quiet` | Suppress non-error output | `false` |
387
+ | `--resolver` | Dependency resolver: `auto`, `uv`, `pip-tools` | `auto` |
388
+ | `--requirements` | Additional requirements files (repeatable) | `[]` |
313
389
 
314
390
  ### Cache Management
315
391
 
@@ -261,29 +261,105 @@ pysentry --clear-resolution-cache --sources pypa,osv --format sarif
261
261
  pysentry --no-resolution-cache --format json --output security-report.json
262
262
  ```
263
263
 
264
+ ## Pre-commit Integration
265
+
266
+ PySentry integrates seamlessly with [pre-commit](https://pre-commit.com/) to automatically scan for vulnerabilities before commits.
267
+
268
+ ### Setup
269
+
270
+ Add PySentry to your `.pre-commit-config.yaml`:
271
+
272
+ ```yaml
273
+ repos:
274
+ - repo: https://github.com/nyudenkov/pysentry
275
+ hooks:
276
+ - id: pysentry # default pysentry settings
277
+ ```
278
+
279
+ ### Advanced Configuration
280
+
281
+ ```yaml
282
+ repos:
283
+ - repo: https://github.com/nyudenkov/pysentry
284
+ hooks:
285
+ - id: pysentry
286
+ args: ["--sources", "pypa,osv", "--fail-on", "high"]
287
+ ```
288
+
289
+ ### Installation Requirements
290
+
291
+ Pre-commit will automatically install PySentry, uv and pip-tools via PyPI.
292
+
264
293
  ## Configuration
265
294
 
295
+ PySentry supports TOML-based configuration files for persistent settings management. Configuration files follow a hierarchical discovery pattern:
296
+
297
+ 1. **Project-level**: `.pysentry.toml` in current or parent directories
298
+ 2. **User-level**: `~/.config/pysentry/config.toml` (Linux/macOS)
299
+ 3. **System-level**: `/etc/pysentry/config.toml` (Unix systems)
300
+
301
+ ### Configuration File Example
302
+
303
+ ```toml
304
+ version = 1
305
+
306
+ [defaults]
307
+ format = "json"
308
+ severity = "medium"
309
+ fail_on = "high"
310
+ scope = "all"
311
+ direct_only = false
312
+
313
+ [sources]
314
+ enabled = ["pypa", "osv"]
315
+
316
+ [resolver]
317
+ type = "uv"
318
+ fallback = "pip-tools"
319
+
320
+ [cache]
321
+ enabled = true
322
+ resolution_ttl = 48
323
+ vulnerability_ttl = 72
324
+
325
+ [output]
326
+ quiet = false
327
+ verbose = false
328
+ color = "auto"
329
+
330
+ [ignore]
331
+ ids = ["CVE-2023-12345", "GHSA-xxxx-yyyy-zzzz"]
332
+ ```
333
+
334
+ ### Environment Variables
335
+
336
+ | Variable | Description | Example |
337
+ | -------------------- | ------------------------------- | -------------------------------------- |
338
+ | `PYSENTRY_CONFIG` | Override config file path | `PYSENTRY_CONFIG=/path/to/config.toml` |
339
+ | `PYSENTRY_NO_CONFIG` | Disable all config file loading | `PYSENTRY_NO_CONFIG=1` |
340
+
266
341
  ### Command Line Options
267
342
 
268
- | Option | Description | Default |
269
- | -------------------------- | ------------------------------------------------------- | ----------------- |
270
- | `--format` | Output format: `human`, `json`, `sarif`, `markdown` | `human` |
271
- | `--severity` | Minimum severity: `low`, `medium`, `high`, `critical` | `low` |
272
- | `--fail-on` | Fail (exit non-zero) on vulnerabilities ≥ severity | `medium` |
273
- | `--sources` | Vulnerability sources: `pypa`, `pypi`, `osv` (multiple) | `pypa` |
274
- | `--all-extras` | Include all dependencies (main + dev + optional) | `false` |
275
- | `--direct-only` | Check only direct dependencies | `false` |
276
- | `--ignore` | Vulnerability IDs to ignore (repeatable) | `[]` |
277
- | `--output` | Output file path | `stdout` |
278
- | `--no-cache` | Disable all caching | `false` |
279
- | `--cache-dir` | Custom cache directory | Platform-specific |
280
- | `--resolution-cache-ttl` | Resolution cache TTL in hours | `24` |
281
- | `--no-resolution-cache` | Disable resolution caching only | `false` |
282
- | `--clear-resolution-cache` | Clear resolution cache on startup | `false` |
283
- | `--verbose` | Enable verbose output | `false` |
284
- | `--quiet` | Suppress non-error output | `false` |
285
- | `--resolver` | Dependency resolver: `auto`, `uv`, `pip-tools` | `auto` |
286
- | `--requirements` | Additional requirements files (repeatable) | `[]` |
343
+ | Option | Description | Default |
344
+ | -------------------------- | --------------------------------------------------------- | ----------------- |
345
+ | `--format` | Output format: `human`, `json`, `sarif`, `markdown` | `human` |
346
+ | `--severity` | Minimum severity: `low`, `medium`, `high`, `critical` | `low` |
347
+ | `--fail-on` | Fail (exit non-zero) on vulnerabilities ≥ severity | `medium` |
348
+ | `--sources` | Vulnerability sources: `pypa`, `pypi`, `osv` (multiple) | `pypa` |
349
+ | `--all-extras` | Include all dependencies (main + dev + optional) | `false` |
350
+ | `--direct-only` | Check only direct dependencies | `false` |
351
+ | `--detailed` | Show full vulnerability descriptions instead of truncated | `false` |
352
+ | `--ignore` | Vulnerability IDs to ignore (repeatable) | `[]` |
353
+ | `--output` | Output file path | `stdout` |
354
+ | `--no-cache` | Disable all caching | `false` |
355
+ | `--cache-dir` | Custom cache directory | Platform-specific |
356
+ | `--resolution-cache-ttl` | Resolution cache TTL in hours | `24` |
357
+ | `--no-resolution-cache` | Disable resolution caching only | `false` |
358
+ | `--clear-resolution-cache` | Clear resolution cache on startup | `false` |
359
+ | `--verbose` | Enable verbose output | `false` |
360
+ | `--quiet` | Suppress non-error output | `false` |
361
+ | `--resolver` | Dependency resolver: `auto`, `uv`, `pip-tools` | `auto` |
362
+ | `--requirements` | Additional requirements files (repeatable) | `[]` |
287
363
 
288
364
  ### Cache Management
289
365
 
@@ -0,0 +1,141 @@
1
+ # PySentry - pip-audit Benchmark Report
2
+
3
+ **Generated:** 2025-08-12 18:55:26
4
+ **Duration:** 1m 54.40s
5
+ **Total Tests:** 20
6
+
7
+ ## Executive Summary
8
+
9
+ **Overall Success Rate:** 100.0% (20/20 successful runs)
10
+
11
+ ### Small_Requirements Dataset - Cold Cache
12
+ - **Fastest:** pysentry-pypi (0.213s) - 42.00x faster than slowest
13
+ - **Memory Efficient:** pysentry-osv (10.02 MB) - 10.69x less memory than highest
14
+
15
+ ### Small_Requirements Dataset - Hot Cache
16
+ - **Fastest:** pysentry-pypi (0.223s) - 35.50x faster than slowest
17
+ - **Memory Efficient:** pysentry-osv (10.18 MB) - 9.89x less memory than highest
18
+
19
+ ### Large_Requirements Dataset - Cold Cache
20
+ - **Fastest:** pysentry-pypi (0.679s) - 28.20x faster than slowest
21
+ - **Memory Efficient:** pysentry-osv (10.27 MB) - 10.21x less memory than highest
22
+
23
+ ### Large_Requirements Dataset - Hot Cache
24
+ - **Fastest:** pysentry-pypi (0.692s) - 23.06x faster than slowest
25
+ - **Memory Efficient:** pysentry-pypi (9.86 MB) - 9.55x less memory than highest
26
+
27
+ ## Test Environment
28
+
29
+ - **Platform:** Linux-6.11.0-1018-azure-x86_64-with-glibc2.39
30
+ - **Python Version:** 3.11.13
31
+ - **CPU Cores:** 4
32
+ - **Total Memory:** 15.62 GB
33
+ - **Available Memory:** 14.60 GB
34
+
35
+ ## Performance Comparison
36
+
37
+ ### Small_Requirements Dataset - Cold Cache
38
+
39
+ #### Execution Time Comparison
40
+
41
+ | Tool Configuration | Execution Time | Relative Performance |
42
+ |---------------------|---------------------|---------------------|
43
+ | 🥇 pysentry-pypi | 0.213s | 1.00x |
44
+ | 🥈 pysentry-pypa | 1.004s | 4.71x |
45
+ | pysentry-osv | 1.006s | 4.72x |
46
+ | pysentry-all-sources | 1.013s | 4.75x |
47
+ | pip-audit-default | 8.951s | 42.00x |
48
+
49
+ #### Memory Usage Comparison
50
+
51
+ | Tool Configuration | Peak Memory | Relative Performance |
52
+ |---------------------|---------------------|---------------------|
53
+ | 🥇 pysentry-osv | 10.02 MB | 1.00x |
54
+ | 🥈 pysentry-pypi | 11.68 MB | 1.17x |
55
+ | pip-audit-default | 45.42 MB | 4.53x |
56
+ | pysentry-pypa | 52.72 MB | 5.26x |
57
+ | pysentry-all-sources | 107.07 MB | 10.69x |
58
+
59
+ ### Small_Requirements Dataset - Hot Cache
60
+
61
+ #### Execution Time Comparison
62
+
63
+ | Tool Configuration | Execution Time | Relative Performance |
64
+ |---------------------|---------------------|---------------------|
65
+ | 🥇 pysentry-pypi | 0.223s | 1.00x |
66
+ | 🥈 pysentry-pypa | 0.723s | 3.24x |
67
+ | pysentry-osv | 0.969s | 4.34x |
68
+ | pysentry-all-sources | 1.037s | 4.65x |
69
+ | pip-audit-default | 7.922s | 35.50x |
70
+
71
+ #### Memory Usage Comparison
72
+
73
+ | Tool Configuration | Peak Memory | Relative Performance |
74
+ |---------------------|---------------------|---------------------|
75
+ | 🥇 pysentry-osv | 10.18 MB | 1.00x |
76
+ | 🥈 pysentry-pypi | 10.59 MB | 1.04x |
77
+ | pip-audit-default | 44.28 MB | 4.35x |
78
+ | pysentry-pypa | 73.74 MB | 7.24x |
79
+ | pysentry-all-sources | 100.68 MB | 9.89x |
80
+
81
+ ### Large_Requirements Dataset - Cold Cache
82
+
83
+ #### Execution Time Comparison
84
+
85
+ | Tool Configuration | Execution Time | Relative Performance |
86
+ |---------------------|---------------------|---------------------|
87
+ | 🥇 pysentry-pypi | 0.679s | 1.00x |
88
+ | 🥈 pysentry-pypa | 1.142s | 1.68x |
89
+ | pysentry-osv | 3.365s | 4.95x |
90
+ | pysentry-all-sources | 3.649s | 5.37x |
91
+ | pip-audit-default | 19.161s | 28.20x |
92
+
93
+ #### Memory Usage Comparison
94
+
95
+ | Tool Configuration | Peak Memory | Relative Performance |
96
+ |---------------------|---------------------|---------------------|
97
+ | 🥇 pysentry-osv | 10.27 MB | 1.00x |
98
+ | 🥈 pysentry-pypi | 10.36 MB | 1.01x |
99
+ | pip-audit-default | 47.43 MB | 4.62x |
100
+ | pysentry-pypa | 70.21 MB | 6.84x |
101
+ | pysentry-all-sources | 104.85 MB | 10.21x |
102
+
103
+ ### Large_Requirements Dataset - Hot Cache
104
+
105
+ #### Execution Time Comparison
106
+
107
+ | Tool Configuration | Execution Time | Relative Performance |
108
+ |---------------------|---------------------|---------------------|
109
+ | 🥇 pysentry-pypi | 0.692s | 1.00x |
110
+ | 🥈 pysentry-pypa | 1.119s | 1.62x |
111
+ | pysentry-osv | 2.963s | 4.28x |
112
+ | pysentry-all-sources | 4.382s | 6.33x |
113
+ | pip-audit-default | 15.954s | 23.06x |
114
+
115
+ #### Memory Usage Comparison
116
+
117
+ | Tool Configuration | Peak Memory | Relative Performance |
118
+ |---------------------|---------------------|---------------------|
119
+ | 🥇 pysentry-pypi | 9.86 MB | 1.00x |
120
+ | 🥈 pysentry-osv | 10.14 MB | 1.03x |
121
+ | pip-audit-default | 47.00 MB | 4.77x |
122
+ | pysentry-pypa | 73.75 MB | 7.48x |
123
+ | pysentry-all-sources | 94.11 MB | 9.55x |
124
+
125
+ ## Detailed Analysis
126
+
127
+ ### Pysentry Performance
128
+
129
+ - **Execution Time:** Avg: 1.511s, Min: 0.213s, Max: 4.382s
130
+
131
+ - **Memory Usage:** Avg: 47.51 MB, Min: 9.86 MB, Max: 107.07 MB
132
+
133
+ - **Success Rate:** 100.0% (16/16)
134
+
135
+ ### Pip-Audit Performance
136
+
137
+ - **Execution Time:** Avg: 12.997s, Min: 7.922s, Max: 19.161s
138
+
139
+ - **Memory Usage:** Avg: 46.03 MB, Min: 44.28 MB, Max: 47.43 MB
140
+
141
+ - **Success Rate:** 100.0% (4/4)
@@ -0,0 +1,141 @@
1
+ # PySentry - pip-audit Benchmark Report
2
+
3
+ **Generated:** 2025-08-13 12:12:39
4
+ **Duration:** 1m 46.86s
5
+ **Total Tests:** 20
6
+
7
+ ## Executive Summary
8
+
9
+ **Overall Success Rate:** 100.0% (20/20 successful runs)
10
+
11
+ ### Small_Requirements Dataset - Cold Cache
12
+ - **Fastest:** pysentry-pypi (0.179s) - 46.37x faster than slowest
13
+ - **Memory Efficient:** pysentry-pypi (8.52 MB) - 12.47x less memory than highest
14
+
15
+ ### Small_Requirements Dataset - Hot Cache
16
+ - **Fastest:** pysentry-pypi (0.163s) - 48.14x faster than slowest
17
+ - **Memory Efficient:** pysentry-pypi (8.43 MB) - 11.45x less memory than highest
18
+
19
+ ### Large_Requirements Dataset - Cold Cache
20
+ - **Fastest:** pysentry-pypi (0.642s) - 26.63x faster than slowest
21
+ - **Memory Efficient:** pysentry-osv (10.42 MB) - 9.72x less memory than highest
22
+
23
+ ### Large_Requirements Dataset - Hot Cache
24
+ - **Fastest:** pysentry-pypi (0.594s) - 25.42x faster than slowest
25
+ - **Memory Efficient:** pysentry-pypi (8.40 MB) - 12.41x less memory than highest
26
+
27
+ ## Test Environment
28
+
29
+ - **Platform:** Linux-6.11.0-1018-azure-x86_64-with-glibc2.39
30
+ - **Python Version:** 3.11.13
31
+ - **CPU Cores:** 4
32
+ - **Total Memory:** 15.62 GB
33
+ - **Available Memory:** 14.74 GB
34
+
35
+ ## Performance Comparison
36
+
37
+ ### Small_Requirements Dataset - Cold Cache
38
+
39
+ #### Execution Time Comparison
40
+
41
+ | Tool Configuration | Execution Time | Relative Performance |
42
+ |---------------------|---------------------|---------------------|
43
+ | 🥇 pysentry-pypi | 0.179s | 1.00x |
44
+ | 🥈 pysentry-all-sources | 1.024s | 5.71x |
45
+ | pysentry-osv | 1.051s | 5.86x |
46
+ | pysentry-pypa | 1.063s | 5.93x |
47
+ | pip-audit-default | 8.310s | 46.37x |
48
+
49
+ #### Memory Usage Comparison
50
+
51
+ | Tool Configuration | Peak Memory | Relative Performance |
52
+ |---------------------|---------------------|---------------------|
53
+ | 🥇 pysentry-pypi | 8.52 MB | 1.00x |
54
+ | 🥈 pysentry-osv | 10.50 MB | 1.23x |
55
+ | pip-audit-default | 45.38 MB | 5.32x |
56
+ | pysentry-pypa | 65.20 MB | 7.65x |
57
+ | pysentry-all-sources | 106.33 MB | 12.47x |
58
+
59
+ ### Small_Requirements Dataset - Hot Cache
60
+
61
+ #### Execution Time Comparison
62
+
63
+ | Tool Configuration | Execution Time | Relative Performance |
64
+ |---------------------|---------------------|---------------------|
65
+ | 🥇 pysentry-pypi | 0.163s | 1.00x |
66
+ | 🥈 pysentry-pypa | 0.651s | 3.99x |
67
+ | pysentry-osv | 0.811s | 4.98x |
68
+ | pysentry-all-sources | 0.980s | 6.01x |
69
+ | pip-audit-default | 7.849s | 48.14x |
70
+
71
+ #### Memory Usage Comparison
72
+
73
+ | Tool Configuration | Peak Memory | Relative Performance |
74
+ |---------------------|---------------------|---------------------|
75
+ | 🥇 pysentry-pypi | 8.43 MB | 1.00x |
76
+ | 🥈 pysentry-osv | 10.28 MB | 1.22x |
77
+ | pip-audit-default | 44.97 MB | 5.33x |
78
+ | pysentry-pypa | 67.79 MB | 8.04x |
79
+ | pysentry-all-sources | 96.55 MB | 11.45x |
80
+
81
+ ### Large_Requirements Dataset - Cold Cache
82
+
83
+ #### Execution Time Comparison
84
+
85
+ | Tool Configuration | Execution Time | Relative Performance |
86
+ |---------------------|---------------------|---------------------|
87
+ | 🥇 pysentry-pypi | 0.642s | 1.00x |
88
+ | 🥈 pysentry-pypa | 1.071s | 1.67x |
89
+ | pysentry-all-sources | 3.248s | 5.06x |
90
+ | pysentry-osv | 3.644s | 5.67x |
91
+ | pip-audit-default | 17.106s | 26.63x |
92
+
93
+ #### Memory Usage Comparison
94
+
95
+ | Tool Configuration | Peak Memory | Relative Performance |
96
+ |---------------------|---------------------|---------------------|
97
+ | 🥇 pysentry-osv | 10.42 MB | 1.00x |
98
+ | 🥈 pysentry-pypi | 13.56 MB | 1.30x |
99
+ | pip-audit-default | 47.45 MB | 4.55x |
100
+ | pysentry-pypa | 64.17 MB | 6.16x |
101
+ | pysentry-all-sources | 101.29 MB | 9.72x |
102
+
103
+ ### Large_Requirements Dataset - Hot Cache
104
+
105
+ #### Execution Time Comparison
106
+
107
+ | Tool Configuration | Execution Time | Relative Performance |
108
+ |---------------------|---------------------|---------------------|
109
+ | 🥇 pysentry-pypi | 0.594s | 1.00x |
110
+ | 🥈 pysentry-pypa | 1.133s | 1.91x |
111
+ | pysentry-all-sources | 3.124s | 5.26x |
112
+ | pysentry-osv | 3.124s | 5.26x |
113
+ | pip-audit-default | 15.104s | 25.42x |
114
+
115
+ #### Memory Usage Comparison
116
+
117
+ | Tool Configuration | Peak Memory | Relative Performance |
118
+ |---------------------|---------------------|---------------------|
119
+ | 🥇 pysentry-pypi | 8.40 MB | 1.00x |
120
+ | 🥈 pysentry-osv | 10.40 MB | 1.24x |
121
+ | pip-audit-default | 47.29 MB | 5.63x |
122
+ | pysentry-pypa | 72.68 MB | 8.65x |
123
+ | pysentry-all-sources | 104.25 MB | 12.41x |
124
+
125
+ ## Detailed Analysis
126
+
127
+ ### Pysentry Performance
128
+
129
+ - **Execution Time:** Avg: 1.406s, Min: 0.163s, Max: 3.644s
130
+
131
+ - **Memory Usage:** Avg: 47.42 MB, Min: 8.40 MB, Max: 106.33 MB
132
+
133
+ - **Success Rate:** 100.0% (16/16)
134
+
135
+ ### Pip-Audit Performance
136
+
137
+ - **Execution Time:** Avg: 12.092s, Min: 7.849s, Max: 17.106s
138
+
139
+ - **Memory Usage:** Avg: 46.27 MB, Min: 44.97 MB, Max: 47.45 MB
140
+
141
+ - **Success Rate:** 100.0% (4/4)