sec-report-kit 0.2.2__tar.gz → 0.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/.gitignore +10 -0
- sec_report_kit-0.2.4/CHANGELOG.md +46 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/PKG-INFO +87 -4
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/README.md +84 -1
- sec_report_kit-0.2.4/check_assets.py +63 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/pyproject.toml +3 -3
- sec_report_kit-0.2.4/requirements.txt +84 -0
- sec_report_kit-0.2.4/scripts/download_safety_db.bat +13 -0
- sec_report_kit-0.2.4/scripts/download_safety_db.py +125 -0
- sec_report_kit-0.2.4/scripts/download_safety_db.sh +13 -0
- sec_report_kit-0.2.4/scripts/install_external_clis.py +342 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/install_tools.bat +12 -3
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/install_tools.sh +2 -2
- sec_report_kit-0.2.4/scripts/render_safety_html.bat +27 -0
- sec_report_kit-0.2.4/scripts/render_safety_html.sh +36 -0
- sec_report_kit-0.2.4/scripts/run_codeql.bat +81 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_codeql.sh +7 -0
- sec_report_kit-0.2.4/scripts/run_osv_scanner.bat +80 -0
- sec_report_kit-0.2.4/scripts/run_safety.bat +60 -0
- sec_report_kit-0.2.4/scripts/run_safety.sh +64 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_tfsec.bat +13 -3
- sec_report_kit-0.2.4/scripts/run_trufflehog.bat +53 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_unit_tests_with_coverage.bat +2 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_unit_tests_with_coverage.sh +3 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/cli.py +14 -1
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/mcp/server.py +4 -1
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/parsers/__init__.py +14 -2
- sec_report_kit-0.2.4/src/sec_report_kit/parsers/safety.py +71 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/tests/test_cli.py +42 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/tests/test_mcp_server.py +23 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/tests/test_parsers.py +39 -0
- sec_report_kit-0.2.2/class_index.html +0 -341
- sec_report_kit-0.2.2/coverage_html_cb_188fc9a4.js +0 -735
- sec_report_kit-0.2.2/favicon_32_cb_c827f16f.png +0 -0
- sec_report_kit-0.2.2/function_index.html +0 -821
- sec_report_kit-0.2.2/index.html +0 -306
- sec_report_kit-0.2.2/keybd_closed_cb_900cfef5.png +0 -0
- sec_report_kit-0.2.2/scripts/install_external_clis.py +0 -214
- sec_report_kit-0.2.2/scripts/run_codeql.bat +0 -30
- sec_report_kit-0.2.2/scripts/run_osv_scanner.bat +0 -27
- sec_report_kit-0.2.2/scripts/run_trufflehog.bat +0 -27
- sec_report_kit-0.2.2/status.json +0 -1
- sec_report_kit-0.2.2/style_cb_5c747636.css +0 -389
- sec_report_kit-0.2.2/z_04615a1dd1ce4db0___init___py.html +0 -160
- sec_report_kit-0.2.2/z_04615a1dd1ce4db0_bandit_py.html +0 -132
- sec_report_kit-0.2.2/z_04615a1dd1ce4db0_checkov_py.html +0 -126
- sec_report_kit-0.2.2/z_04615a1dd1ce4db0_codeql_py.html +0 -173
- sec_report_kit-0.2.2/z_04615a1dd1ce4db0_gitleaks_py.html +0 -139
- sec_report_kit-0.2.2/z_04615a1dd1ce4db0_osv_scanner_py.html +0 -157
- sec_report_kit-0.2.2/z_04615a1dd1ce4db0_pip_audit_py.html +0 -161
- sec_report_kit-0.2.2/z_04615a1dd1ce4db0_semgrep_py.html +0 -139
- sec_report_kit-0.2.2/z_04615a1dd1ce4db0_tfsec_py.html +0 -132
- sec_report_kit-0.2.2/z_04615a1dd1ce4db0_trivy_py.html +0 -123
- sec_report_kit-0.2.2/z_04615a1dd1ce4db0_trufflehog_py.html +0 -154
- sec_report_kit-0.2.2/z_513b94261226dc0a___init___py.html +0 -98
- sec_report_kit-0.2.2/z_513b94261226dc0a_normalize_py.html +0 -113
- sec_report_kit-0.2.2/z_513b94261226dc0a_summarize_py.html +0 -121
- sec_report_kit-0.2.2/z_79d49abff220d1e3___init___py.html +0 -101
- sec_report_kit-0.2.2/z_79d49abff220d1e3___main___py.html +0 -102
- sec_report_kit-0.2.2/z_79d49abff220d1e3_cli_py.html +0 -317
- sec_report_kit-0.2.2/z_79d49abff220d1e3_models_py.html +0 -113
- sec_report_kit-0.2.2/z_b5cb2d0622dcf19f___init___py.html +0 -98
- sec_report_kit-0.2.2/z_b5cb2d0622dcf19f_html_renderer_py.html +0 -311
- sec_report_kit-0.2.2/z_dc88a0f48bfec113___init___py.html +0 -98
- sec_report_kit-0.2.2/z_dc88a0f48bfec113_server_py.html +0 -191
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/.gitattributes +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/.github/workflows/pip-audit.yml +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/.github/workflows/publish-pypi.yml +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/.github/workflows/publish-testpypi.yml +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/.github/workflows/trivy-fs-audit.yml +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/.github/workflows/unit-test-coverage-gate.yml +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/bandit-gaps-vs-sast-open-source-tools.md +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_bandit_html.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_bandit_html.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_checkov_html.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_checkov_html.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_codeql_html.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_codeql_html.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_gitleaks_html.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_gitleaks_html.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_osv_scanner_html.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_osv_scanner_html.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_pip_audit_html.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_pip_audit_html.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_semgrep_html.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_semgrep_html.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_tfsec_html.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_tfsec_html.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_trivy_html.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_trivy_html.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_trufflehog_html.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/render_trufflehog_html.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_bandit.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_bandit.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_checkov.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_checkov.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_gitleaks.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_gitleaks.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_osv_scanner.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_pip_audit.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_pip_audit.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_semgrep.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_semgrep.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_tfsec.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_trivy.bat +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_trivy.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/scripts/run_trufflehog.sh +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/__init__.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/__main__.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/mcp/__init__.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/models.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/parsers/bandit.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/parsers/checkov.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/parsers/codeql.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/parsers/gitleaks.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/parsers/osv_scanner.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/parsers/pip_audit.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/parsers/semgrep.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/parsers/tfsec.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/parsers/trivy.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/parsers/trufflehog.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/report/__init__.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/report/html_renderer.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/services/__init__.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/services/normalize.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/src/sec_report_kit/services/summarize.py +0 -0
- {sec_report_kit-0.2.2 → sec_report_kit-0.2.4}/tests/test_html_renderer.py +0 -0
|
@@ -36,6 +36,15 @@ pip-delete-this-directory.txt
|
|
|
36
36
|
|
|
37
37
|
# Unit test / coverage reports
|
|
38
38
|
htmlcov/
|
|
39
|
+
class_index.html
|
|
40
|
+
function_index.html
|
|
41
|
+
index.html
|
|
42
|
+
status.json
|
|
43
|
+
coverage_html_*.js
|
|
44
|
+
favicon_32_*.png
|
|
45
|
+
keybd_closed_*.png
|
|
46
|
+
style_*.css
|
|
47
|
+
z_*.html
|
|
39
48
|
.tox/
|
|
40
49
|
.nox/
|
|
41
50
|
.coverage
|
|
@@ -84,3 +93,4 @@ data/
|
|
|
84
93
|
logs/
|
|
85
94
|
security_reports/
|
|
86
95
|
.tools/
|
|
96
|
+
codeql-db/
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project are documented in this file.
|
|
4
|
+
|
|
5
|
+
## 0.2.4 - 2026-05-14
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
- `scripts/install_external_clis.py` now supports `--tool` for targeted installs.
|
|
9
|
+
- `scripts/install_external_clis.py` now supports `--force` to re-download tools even when already installed.
|
|
10
|
+
- `README.md` now documents external CLI installer options and usage examples.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- External CLI installer now skips already-installed tools by default.
|
|
14
|
+
- CodeQL install handling on Windows now uses staged extraction and merge to avoid directory lock errors during reinstall.
|
|
15
|
+
- `scripts/run_osv_scanner.bat` now auto-generates `requirements.txt` from installed packages when no supported lockfile is present.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
- `scripts/run_codeql.bat` now repairs incomplete local CodeQL installs and validates SARIF output existence.
|
|
19
|
+
- `scripts/run_codeql.sh` now validates SARIF output existence after analysis.
|
|
20
|
+
- `scripts/run_trufflehog.bat` now writes scanner output via temp files to avoid self-scan file locking.
|
|
21
|
+
- `scripts/run_trufflehog.bat` now writes `[]` when no findings are present.
|
|
22
|
+
|
|
23
|
+
## 0.2.3 - 2026-05-13
|
|
24
|
+
|
|
25
|
+
### Added
|
|
26
|
+
- Safety CLI parser support and HTML rendering flow.
|
|
27
|
+
- New CLI command: `srk render safety`.
|
|
28
|
+
- MCP support for `source_type="safety"`.
|
|
29
|
+
- Helper scripts for Safety scan and render:
|
|
30
|
+
- `scripts/run_safety.sh`
|
|
31
|
+
- `scripts/run_safety.bat`
|
|
32
|
+
- `scripts/render_safety_html.sh`
|
|
33
|
+
- `scripts/render_safety_html.bat`
|
|
34
|
+
- Offline Safety DB download helpers:
|
|
35
|
+
- `scripts/download_safety_db.py`
|
|
36
|
+
- `scripts/download_safety_db.sh`
|
|
37
|
+
- `scripts/download_safety_db.bat`
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
- Auto-detection now recognizes Safety JSON payloads.
|
|
41
|
+
- Tool installation scripts now install Safety CLI in the app venv.
|
|
42
|
+
- README updated with Safety usage and offline/local DB workflow guidance.
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
- Safety run scripts now avoid false success when network failures occur.
|
|
46
|
+
- JSON output validation improved for Safety execution paths.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sec-report-kit
|
|
3
|
-
Version: 0.2.
|
|
4
|
-
Summary: Generate HTML security reports from Trivy, pip-audit, Bandit, and Gitleaks JSON
|
|
3
|
+
Version: 0.2.4
|
|
4
|
+
Summary: Generate HTML security reports from Trivy, pip-audit, Safety, Bandit, and Gitleaks JSON
|
|
5
5
|
Author: Ravi Konduru
|
|
6
6
|
License: MIT
|
|
7
|
-
Keywords: cli,mcp,pip-audit,report,security,trivy
|
|
7
|
+
Keywords: cli,mcp,pip-audit,report,safety,security,trivy
|
|
8
8
|
Classifier: Development Status :: 3 - Alpha
|
|
9
9
|
Classifier: Intended Audience :: Developers
|
|
10
10
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -29,10 +29,13 @@ Description-Content-Type: text/markdown
|
|
|
29
29
|
|
|
30
30
|
Generate HTML vulnerability reports from multiple security tools (SAST, SCA, IaC, and secrets) with a CLI and MCP server.
|
|
31
31
|
|
|
32
|
+
Release history: see `CHANGELOG.md`.
|
|
33
|
+
|
|
32
34
|
Supported source types:
|
|
33
35
|
|
|
34
36
|
- `trivy`
|
|
35
37
|
- `pip-audit`
|
|
38
|
+
- `safety`
|
|
36
39
|
- `bandit`
|
|
37
40
|
- `gitleaks`
|
|
38
41
|
- `semgrep`
|
|
@@ -73,6 +76,12 @@ Render pip-audit JSON:
|
|
|
73
76
|
srk render pip-audit --input pip-audit.json --output security_reports/report-pip-audit.html --target requirements.txt
|
|
74
77
|
```
|
|
75
78
|
|
|
79
|
+
Render Safety JSON:
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
srk render safety --input security_reports/safety.json --output security_reports/report-safety.html --target requirements.txt
|
|
83
|
+
```
|
|
84
|
+
|
|
76
85
|
## Helper Scripts (bat/sh)
|
|
77
86
|
|
|
78
87
|
Cross-platform helper scripts are available in `scripts/`.
|
|
@@ -91,6 +100,31 @@ scripts\install_tools.bat
|
|
|
91
100
|
|
|
92
101
|
After cloning on a new machine, run the install script above to recreate the local `.tools/` directory and install required external CLI binaries (`codeql`, `tfsec`, `gitleaks`, `trufflehog`, `osv-scanner`) alongside Python dependencies. The `.tools/` folder is intentionally not committed to git.
|
|
93
102
|
|
|
103
|
+
Install or update external CLI binaries directly:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
python scripts/install_external_clis.py --repo-root .
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Default behavior skips tools that are already installed locally.
|
|
110
|
+
|
|
111
|
+
Force re-download/reinstall for all supported external tools:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
python scripts/install_external_clis.py --repo-root . --force
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Install only selected tool(s) with `--tool` (can be repeated or comma-separated):
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
python scripts/install_external_clis.py --repo-root . --tool osv-scanner
|
|
121
|
+
python scripts/install_external_clis.py --repo-root . --tool tfsec --tool gitleaks --force
|
|
122
|
+
python scripts/install_external_clis.py --repo-root . --tool tfsec,gitleaks
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Supported `--tool` values: `codeql`, `tfsec`, `gitleaks`, `trufflehog`, `osv-scanner`.
|
|
126
|
+
For convenience, `ocs-scanner` is accepted as an alias for `osv-scanner`.
|
|
127
|
+
|
|
94
128
|
Run all unit tests locally with coverage:
|
|
95
129
|
|
|
96
130
|
```bash
|
|
@@ -115,6 +149,39 @@ scripts\run_pip_audit.bat
|
|
|
115
149
|
scripts\run_pip_audit.bat reports requirements.txt
|
|
116
150
|
```
|
|
117
151
|
|
|
152
|
+
Run Safety CLI and write JSON output:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
# Linux/macOS (optional args: <report_dir> <requirements_file>)
|
|
156
|
+
bash scripts/run_safety.sh
|
|
157
|
+
bash scripts/run_safety.sh security_reports requirements.txt
|
|
158
|
+
|
|
159
|
+
# Windows (optional args: <report_dir> <requirements_file>)
|
|
160
|
+
scripts\run_safety.bat
|
|
161
|
+
scripts\run_safety.bat security_reports requirements.txt
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
> **Offline / local DB support**: Safety CLI requires network access by default. To enable offline scanning,
|
|
165
|
+
> download the vulnerability DB while online and cache it locally:
|
|
166
|
+
>
|
|
167
|
+
> ```bash
|
|
168
|
+
> # Linux/macOS — download once, reuse offline
|
|
169
|
+
> bash scripts/download_safety_db.sh
|
|
170
|
+
>
|
|
171
|
+
> # Windows
|
|
172
|
+
> scripts\download_safety_db.bat
|
|
173
|
+
> ```
|
|
174
|
+
>
|
|
175
|
+
> ```bash
|
|
176
|
+
> # Corporate/proxy environments with self-signed certificates
|
|
177
|
+
> bash scripts/download_safety_db.sh .tools/safety-db --no-verify-ssl
|
|
178
|
+
> scripts\download_safety_db.bat .tools\safety-db --no-verify-ssl
|
|
179
|
+
> ```
|
|
180
|
+
>
|
|
181
|
+
> The DB is saved to `.tools/safety-db/`. Both `run_safety.sh` and `run_safety.bat` automatically detect
|
|
182
|
+
> and use it on subsequent runs, skipping the network call. Re-run the download script periodically to
|
|
183
|
+
> refresh the DB with the latest vulnerabilities.
|
|
184
|
+
|
|
118
185
|
Run Bandit and write JSON output:
|
|
119
186
|
|
|
120
187
|
```bash
|
|
@@ -139,6 +206,18 @@ scripts\render_pip_audit_html.bat
|
|
|
139
206
|
scripts\render_pip_audit_html.bat reports requirements.txt
|
|
140
207
|
```
|
|
141
208
|
|
|
209
|
+
Convert Safety JSON report to HTML:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# Linux/macOS (optional args: <report_dir> <target_name>)
|
|
213
|
+
bash scripts/render_safety_html.sh
|
|
214
|
+
bash scripts/render_safety_html.sh security_reports requirements.txt
|
|
215
|
+
|
|
216
|
+
# Windows (optional args: <report_dir> <target_name>)
|
|
217
|
+
scripts\render_safety_html.bat
|
|
218
|
+
scripts\render_safety_html.bat security_reports requirements.txt
|
|
219
|
+
```
|
|
220
|
+
|
|
142
221
|
These render helpers generate the HTML file and open it automatically in your default browser.
|
|
143
222
|
|
|
144
223
|
Convert sample Trivy JSON report to HTML:
|
|
@@ -189,6 +268,7 @@ The table below reflects what is currently implemented in `scripts/`:
|
|
|
189
268
|
| --- | --- | --- | --- |
|
|
190
269
|
| Trivy | `run_trivy.(sh/bat)` | `render_trivy_html.(sh/bat)` | `security_reports/trivy-image-report-v1.0.21.json` |
|
|
191
270
|
| pip-audit | `run_pip_audit.(sh/bat)` | `render_pip_audit_html.(sh/bat)` | `reports/pip-audit.json` |
|
|
271
|
+
| Safety | `run_safety.(sh/bat)` | `render_safety_html.(sh/bat)` | `security_reports/safety.json` |
|
|
192
272
|
| Bandit | `run_bandit.(sh/bat)` | `render_bandit_html.(sh/bat)` | `security_reports/bandit.json` |
|
|
193
273
|
| Gitleaks | `run_gitleaks.(sh/bat)` | `render_gitleaks_html.(sh/bat)` | `security_reports/gitleaks.json` |
|
|
194
274
|
| Semgrep | `run_semgrep.(sh/bat)` | `render_semgrep_html.(sh/bat)` | `security_reports/semgrep.json` |
|
|
@@ -217,6 +297,7 @@ scripts\render_bandit_html.bat security_reports my-python-project
|
|
|
217
297
|
```bash
|
|
218
298
|
# Linux/macOS
|
|
219
299
|
bash scripts/run_trivy.sh security_reports alpine:latest
|
|
300
|
+
bash scripts/run_safety.sh security_reports requirements.txt
|
|
220
301
|
bash scripts/run_gitleaks.sh security_reports .
|
|
221
302
|
bash scripts/run_semgrep.sh security_reports .
|
|
222
303
|
bash scripts/run_codeql.sh security_reports codeql-db codeql/python-queries
|
|
@@ -227,6 +308,7 @@ bash scripts/run_trufflehog.sh security_reports .
|
|
|
227
308
|
|
|
228
309
|
# Windows
|
|
229
310
|
scripts\run_trivy.bat security_reports alpine:latest
|
|
311
|
+
scripts\run_safety.bat security_reports requirements.txt
|
|
230
312
|
scripts\run_gitleaks.bat security_reports .
|
|
231
313
|
scripts\run_semgrep.bat security_reports .
|
|
232
314
|
scripts\run_codeql.bat security_reports codeql-db codeql/python-queries
|
|
@@ -262,6 +344,7 @@ Manual CLI render examples:
|
|
|
262
344
|
srk render semgrep --input security_reports/semgrep.json --output security_reports/semgrep-report.html --target my-repo
|
|
263
345
|
srk render codeql --input security_reports/codeql.sarif.json --output security_reports/codeql-report.html --target my-repo
|
|
264
346
|
srk render osv-scanner --input security_reports/osv-scanner.json --output security_reports/osv-scanner-report.html --target requirements.txt
|
|
347
|
+
srk render safety --input security_reports/safety.json --output security_reports/safety-report.html --target requirements.txt
|
|
265
348
|
srk render checkov --input security_reports/checkov.json --output security_reports/checkov-report.html --target terraform
|
|
266
349
|
srk render tfsec --input security_reports/tfsec.json --output security_reports/tfsec-report.html --target terraform
|
|
267
350
|
srk render trufflehog --input security_reports/trufflehog.json --output security_reports/trufflehog-report.html --target my-repo
|
|
@@ -286,7 +369,7 @@ srk mcp serve --transport stdio
|
|
|
286
369
|
| `render_report_from_json` | Parse JSON and render an HTML report to disk |
|
|
287
370
|
| `validate_input` | Validate that a JSON file is parseable and return finding count |
|
|
288
371
|
|
|
289
|
-
All tools accept `source_type` (`"trivy"`, `"pip-audit"`, `"bandit"`, `"gitleaks"`, `"semgrep"`, `"codeql"`, `"osv-scanner"`, `"checkov"`, `"tfsec"`, `"trufflehog"`, or `"auto"`) and `input_path` (absolute path to JSON file).
|
|
372
|
+
All tools accept `source_type` (`"trivy"`, `"pip-audit"`, `"safety"`, `"bandit"`, `"gitleaks"`, `"semgrep"`, `"codeql"`, `"osv-scanner"`, `"checkov"`, `"tfsec"`, `"trufflehog"`, or `"auto"`) and `input_path` (absolute path to JSON file).
|
|
290
373
|
|
|
291
374
|
---
|
|
292
375
|
|
|
@@ -2,10 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Generate HTML vulnerability reports from multiple security tools (SAST, SCA, IaC, and secrets) with a CLI and MCP server.
|
|
4
4
|
|
|
5
|
+
Release history: see `CHANGELOG.md`.
|
|
6
|
+
|
|
5
7
|
Supported source types:
|
|
6
8
|
|
|
7
9
|
- `trivy`
|
|
8
10
|
- `pip-audit`
|
|
11
|
+
- `safety`
|
|
9
12
|
- `bandit`
|
|
10
13
|
- `gitleaks`
|
|
11
14
|
- `semgrep`
|
|
@@ -46,6 +49,12 @@ Render pip-audit JSON:
|
|
|
46
49
|
srk render pip-audit --input pip-audit.json --output security_reports/report-pip-audit.html --target requirements.txt
|
|
47
50
|
```
|
|
48
51
|
|
|
52
|
+
Render Safety JSON:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
srk render safety --input security_reports/safety.json --output security_reports/report-safety.html --target requirements.txt
|
|
56
|
+
```
|
|
57
|
+
|
|
49
58
|
## Helper Scripts (bat/sh)
|
|
50
59
|
|
|
51
60
|
Cross-platform helper scripts are available in `scripts/`.
|
|
@@ -64,6 +73,31 @@ scripts\install_tools.bat
|
|
|
64
73
|
|
|
65
74
|
After cloning on a new machine, run the install script above to recreate the local `.tools/` directory and install required external CLI binaries (`codeql`, `tfsec`, `gitleaks`, `trufflehog`, `osv-scanner`) alongside Python dependencies. The `.tools/` folder is intentionally not committed to git.
|
|
66
75
|
|
|
76
|
+
Install or update external CLI binaries directly:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
python scripts/install_external_clis.py --repo-root .
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Default behavior skips tools that are already installed locally.
|
|
83
|
+
|
|
84
|
+
Force re-download/reinstall for all supported external tools:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
python scripts/install_external_clis.py --repo-root . --force
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Install only selected tool(s) with `--tool` (can be repeated or comma-separated):
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
python scripts/install_external_clis.py --repo-root . --tool osv-scanner
|
|
94
|
+
python scripts/install_external_clis.py --repo-root . --tool tfsec --tool gitleaks --force
|
|
95
|
+
python scripts/install_external_clis.py --repo-root . --tool tfsec,gitleaks
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Supported `--tool` values: `codeql`, `tfsec`, `gitleaks`, `trufflehog`, `osv-scanner`.
|
|
99
|
+
For convenience, `ocs-scanner` is accepted as an alias for `osv-scanner`.
|
|
100
|
+
|
|
67
101
|
Run all unit tests locally with coverage:
|
|
68
102
|
|
|
69
103
|
```bash
|
|
@@ -88,6 +122,39 @@ scripts\run_pip_audit.bat
|
|
|
88
122
|
scripts\run_pip_audit.bat reports requirements.txt
|
|
89
123
|
```
|
|
90
124
|
|
|
125
|
+
Run Safety CLI and write JSON output:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Linux/macOS (optional args: <report_dir> <requirements_file>)
|
|
129
|
+
bash scripts/run_safety.sh
|
|
130
|
+
bash scripts/run_safety.sh security_reports requirements.txt
|
|
131
|
+
|
|
132
|
+
# Windows (optional args: <report_dir> <requirements_file>)
|
|
133
|
+
scripts\run_safety.bat
|
|
134
|
+
scripts\run_safety.bat security_reports requirements.txt
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
> **Offline / local DB support**: Safety CLI requires network access by default. To enable offline scanning,
|
|
138
|
+
> download the vulnerability DB while online and cache it locally:
|
|
139
|
+
>
|
|
140
|
+
> ```bash
|
|
141
|
+
> # Linux/macOS — download once, reuse offline
|
|
142
|
+
> bash scripts/download_safety_db.sh
|
|
143
|
+
>
|
|
144
|
+
> # Windows
|
|
145
|
+
> scripts\download_safety_db.bat
|
|
146
|
+
> ```
|
|
147
|
+
>
|
|
148
|
+
> ```bash
|
|
149
|
+
> # Corporate/proxy environments with self-signed certificates
|
|
150
|
+
> bash scripts/download_safety_db.sh .tools/safety-db --no-verify-ssl
|
|
151
|
+
> scripts\download_safety_db.bat .tools\safety-db --no-verify-ssl
|
|
152
|
+
> ```
|
|
153
|
+
>
|
|
154
|
+
> The DB is saved to `.tools/safety-db/`. Both `run_safety.sh` and `run_safety.bat` automatically detect
|
|
155
|
+
> and use it on subsequent runs, skipping the network call. Re-run the download script periodically to
|
|
156
|
+
> refresh the DB with the latest vulnerabilities.
|
|
157
|
+
|
|
91
158
|
Run Bandit and write JSON output:
|
|
92
159
|
|
|
93
160
|
```bash
|
|
@@ -112,6 +179,18 @@ scripts\render_pip_audit_html.bat
|
|
|
112
179
|
scripts\render_pip_audit_html.bat reports requirements.txt
|
|
113
180
|
```
|
|
114
181
|
|
|
182
|
+
Convert Safety JSON report to HTML:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
# Linux/macOS (optional args: <report_dir> <target_name>)
|
|
186
|
+
bash scripts/render_safety_html.sh
|
|
187
|
+
bash scripts/render_safety_html.sh security_reports requirements.txt
|
|
188
|
+
|
|
189
|
+
# Windows (optional args: <report_dir> <target_name>)
|
|
190
|
+
scripts\render_safety_html.bat
|
|
191
|
+
scripts\render_safety_html.bat security_reports requirements.txt
|
|
192
|
+
```
|
|
193
|
+
|
|
115
194
|
These render helpers generate the HTML file and open it automatically in your default browser.
|
|
116
195
|
|
|
117
196
|
Convert sample Trivy JSON report to HTML:
|
|
@@ -162,6 +241,7 @@ The table below reflects what is currently implemented in `scripts/`:
|
|
|
162
241
|
| --- | --- | --- | --- |
|
|
163
242
|
| Trivy | `run_trivy.(sh/bat)` | `render_trivy_html.(sh/bat)` | `security_reports/trivy-image-report-v1.0.21.json` |
|
|
164
243
|
| pip-audit | `run_pip_audit.(sh/bat)` | `render_pip_audit_html.(sh/bat)` | `reports/pip-audit.json` |
|
|
244
|
+
| Safety | `run_safety.(sh/bat)` | `render_safety_html.(sh/bat)` | `security_reports/safety.json` |
|
|
165
245
|
| Bandit | `run_bandit.(sh/bat)` | `render_bandit_html.(sh/bat)` | `security_reports/bandit.json` |
|
|
166
246
|
| Gitleaks | `run_gitleaks.(sh/bat)` | `render_gitleaks_html.(sh/bat)` | `security_reports/gitleaks.json` |
|
|
167
247
|
| Semgrep | `run_semgrep.(sh/bat)` | `render_semgrep_html.(sh/bat)` | `security_reports/semgrep.json` |
|
|
@@ -190,6 +270,7 @@ scripts\render_bandit_html.bat security_reports my-python-project
|
|
|
190
270
|
```bash
|
|
191
271
|
# Linux/macOS
|
|
192
272
|
bash scripts/run_trivy.sh security_reports alpine:latest
|
|
273
|
+
bash scripts/run_safety.sh security_reports requirements.txt
|
|
193
274
|
bash scripts/run_gitleaks.sh security_reports .
|
|
194
275
|
bash scripts/run_semgrep.sh security_reports .
|
|
195
276
|
bash scripts/run_codeql.sh security_reports codeql-db codeql/python-queries
|
|
@@ -200,6 +281,7 @@ bash scripts/run_trufflehog.sh security_reports .
|
|
|
200
281
|
|
|
201
282
|
# Windows
|
|
202
283
|
scripts\run_trivy.bat security_reports alpine:latest
|
|
284
|
+
scripts\run_safety.bat security_reports requirements.txt
|
|
203
285
|
scripts\run_gitleaks.bat security_reports .
|
|
204
286
|
scripts\run_semgrep.bat security_reports .
|
|
205
287
|
scripts\run_codeql.bat security_reports codeql-db codeql/python-queries
|
|
@@ -235,6 +317,7 @@ Manual CLI render examples:
|
|
|
235
317
|
srk render semgrep --input security_reports/semgrep.json --output security_reports/semgrep-report.html --target my-repo
|
|
236
318
|
srk render codeql --input security_reports/codeql.sarif.json --output security_reports/codeql-report.html --target my-repo
|
|
237
319
|
srk render osv-scanner --input security_reports/osv-scanner.json --output security_reports/osv-scanner-report.html --target requirements.txt
|
|
320
|
+
srk render safety --input security_reports/safety.json --output security_reports/safety-report.html --target requirements.txt
|
|
238
321
|
srk render checkov --input security_reports/checkov.json --output security_reports/checkov-report.html --target terraform
|
|
239
322
|
srk render tfsec --input security_reports/tfsec.json --output security_reports/tfsec-report.html --target terraform
|
|
240
323
|
srk render trufflehog --input security_reports/trufflehog.json --output security_reports/trufflehog-report.html --target my-repo
|
|
@@ -259,7 +342,7 @@ srk mcp serve --transport stdio
|
|
|
259
342
|
| `render_report_from_json` | Parse JSON and render an HTML report to disk |
|
|
260
343
|
| `validate_input` | Validate that a JSON file is parseable and return finding count |
|
|
261
344
|
|
|
262
|
-
All tools accept `source_type` (`"trivy"`, `"pip-audit"`, `"bandit"`, `"gitleaks"`, `"semgrep"`, `"codeql"`, `"osv-scanner"`, `"checkov"`, `"tfsec"`, `"trufflehog"`, or `"auto"`) and `input_path` (absolute path to JSON file).
|
|
345
|
+
All tools accept `source_type` (`"trivy"`, `"pip-audit"`, `"safety"`, `"bandit"`, `"gitleaks"`, `"semgrep"`, `"codeql"`, `"osv-scanner"`, `"checkov"`, `"tfsec"`, `"trufflehog"`, or `"auto"`) and `input_path` (absolute path to JSON file).
|
|
263
346
|
|
|
264
347
|
---
|
|
265
348
|
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
import os
|
|
3
|
+
import json
|
|
4
|
+
import re
|
|
5
|
+
import urllib.request
|
|
6
|
+
|
|
7
|
+
tool_matrix = {
|
|
8
|
+
"codeql": {
|
|
9
|
+
"repo": "github/codeql-action",
|
|
10
|
+
"patterns": [r"codeql-bundle-win64\.tar\.gz$", r"codeql-bundle-win64\.zip$"],
|
|
11
|
+
},
|
|
12
|
+
"tfsec": {
|
|
13
|
+
"repo": "aquasecurity/tfsec",
|
|
14
|
+
"patterns": [r"tfsec-windows-amd64(?:\.exe)?$"],
|
|
15
|
+
},
|
|
16
|
+
"gitleaks": {
|
|
17
|
+
"repo": "gitleaks/gitleaks",
|
|
18
|
+
"patterns": [r"gitleaks_.*_windows_x64\.zip$"],
|
|
19
|
+
},
|
|
20
|
+
"trufflehog": {
|
|
21
|
+
"repo": "trufflesecurity/trufflehog",
|
|
22
|
+
"patterns": [r"trufflehog_.*_windows_amd64\.tar\.gz$", r"trufflehog_.*_windows_amd64\.zip$"],
|
|
23
|
+
},
|
|
24
|
+
"osv-scanner": {
|
|
25
|
+
"repo": "google/osv-scanner",
|
|
26
|
+
"patterns": [r"osv-scanner_.*_windows_amd64(?:\.exe)?(?:\.zip)?$", r"osv-scanner-windows-amd64(?:\.exe)?$"],
|
|
27
|
+
},
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
def check_tools():
|
|
31
|
+
for tool_name, cfg in tool_matrix.items():
|
|
32
|
+
repo = cfg["repo"]
|
|
33
|
+
patterns = cfg["patterns"]
|
|
34
|
+
try:
|
|
35
|
+
req = urllib.request.Request(
|
|
36
|
+
f"https://api.github.com/repos/{repo}/releases/latest",
|
|
37
|
+
headers={"Accept": "application/vnd.github+json", "User-Agent": "python-check-script"},
|
|
38
|
+
)
|
|
39
|
+
with urllib.request.urlopen(req, timeout=30) as resp:
|
|
40
|
+
release = json.load(resp)
|
|
41
|
+
|
|
42
|
+
assets = [a["name"] for a in release.get("assets", [])]
|
|
43
|
+
match_found = False
|
|
44
|
+
for pattern in patterns:
|
|
45
|
+
regex = re.compile(pattern)
|
|
46
|
+
for asset in assets:
|
|
47
|
+
if regex.search(asset):
|
|
48
|
+
print(f"{tool_name}: PASS (Matched asset: {asset})")
|
|
49
|
+
match_found = True
|
|
50
|
+
break
|
|
51
|
+
if match_found:
|
|
52
|
+
break
|
|
53
|
+
|
|
54
|
+
if not match_found:
|
|
55
|
+
print(f"{tool_name}: FAIL (No asset matched patterns)")
|
|
56
|
+
# Print available assets for debugging if call fails
|
|
57
|
+
# print(f" Available: {assets[:3]}...")
|
|
58
|
+
|
|
59
|
+
except Exception as e:
|
|
60
|
+
print(f"{tool_name}: FAIL (Error: {e})")
|
|
61
|
+
|
|
62
|
+
if __name__ == "__main__":
|
|
63
|
+
check_tools()
|
|
@@ -4,13 +4,13 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "sec-report-kit"
|
|
7
|
-
version = "0.2.
|
|
8
|
-
description = "Generate HTML security reports from Trivy, pip-audit, Bandit, and Gitleaks JSON"
|
|
7
|
+
version = "0.2.4"
|
|
8
|
+
description = "Generate HTML security reports from Trivy, pip-audit, Safety, Bandit, and Gitleaks JSON"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
11
11
|
license = { text = "MIT" }
|
|
12
12
|
authors = [{ name = "Ravi Konduru" }]
|
|
13
|
-
keywords = ["security", "trivy", "pip-audit", "mcp", "cli", "report"]
|
|
13
|
+
keywords = ["security", "trivy", "pip-audit", "safety", "mcp", "cli", "report"]
|
|
14
14
|
classifiers = [
|
|
15
15
|
"Development Status :: 3 - Alpha",
|
|
16
16
|
"Intended Audience :: Developers",
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
annotated-doc==0.0.4
|
|
2
|
+
annotated-types==0.7.0
|
|
3
|
+
anyio==4.13.0
|
|
4
|
+
attrs==26.1.0
|
|
5
|
+
bandit==1.9.4
|
|
6
|
+
boolean.py==5.0
|
|
7
|
+
build==1.5.0
|
|
8
|
+
CacheControl==0.14.4
|
|
9
|
+
certifi==2026.4.22
|
|
10
|
+
cffi==2.0.0
|
|
11
|
+
charset-normalizer==3.4.7
|
|
12
|
+
click==8.3.3
|
|
13
|
+
colorama==0.4.6
|
|
14
|
+
coverage==7.14.0
|
|
15
|
+
cryptography==47.0.0
|
|
16
|
+
cyclonedx-python-lib==11.7.0
|
|
17
|
+
defusedxml==0.7.1
|
|
18
|
+
docutils==0.22.4
|
|
19
|
+
filelock==3.29.0
|
|
20
|
+
h11==0.16.0
|
|
21
|
+
httpcore==1.0.9
|
|
22
|
+
httpx==0.28.1
|
|
23
|
+
httpx-sse==0.4.3
|
|
24
|
+
id==1.6.1
|
|
25
|
+
idna==3.13
|
|
26
|
+
iniconfig==2.3.0
|
|
27
|
+
jaraco.classes==3.4.0
|
|
28
|
+
jaraco.context==6.1.2
|
|
29
|
+
jaraco.functools==4.4.0
|
|
30
|
+
jsonschema==4.26.0
|
|
31
|
+
jsonschema-specifications==2025.9.1
|
|
32
|
+
keyring==25.7.0
|
|
33
|
+
license-expression==30.4.4
|
|
34
|
+
markdown-it-py==4.0.0
|
|
35
|
+
mcp==1.27.0
|
|
36
|
+
mdurl==0.1.2
|
|
37
|
+
more-itertools==11.0.2
|
|
38
|
+
msgpack==1.1.2
|
|
39
|
+
nh3==0.3.5
|
|
40
|
+
packageurl-python==0.17.6
|
|
41
|
+
packaging==26.2
|
|
42
|
+
pip-api==0.0.34
|
|
43
|
+
pip-requirements-parser==32.0.1
|
|
44
|
+
pip_audit==2.10.0
|
|
45
|
+
platformdirs==4.9.6
|
|
46
|
+
pluggy==1.6.0
|
|
47
|
+
py-serializable==2.1.0
|
|
48
|
+
pycparser==3.0
|
|
49
|
+
pydantic==2.13.3
|
|
50
|
+
pydantic-settings==2.14.0
|
|
51
|
+
pydantic_core==2.46.3
|
|
52
|
+
pyfiglet==1.0.4
|
|
53
|
+
Pygments==2.20.0
|
|
54
|
+
PyJWT==2.12.1
|
|
55
|
+
pyparsing==3.3.2
|
|
56
|
+
pyproject_hooks==1.2.0
|
|
57
|
+
pytest==9.0.3
|
|
58
|
+
pytest-cov==7.1.0
|
|
59
|
+
python-dotenv==1.2.2
|
|
60
|
+
python-multipart==0.0.27
|
|
61
|
+
pywin32==311
|
|
62
|
+
pywin32-ctypes==0.2.3
|
|
63
|
+
PyYAML==6.0.3
|
|
64
|
+
readme_renderer==44.0
|
|
65
|
+
referencing==0.37.0
|
|
66
|
+
requests==2.33.1
|
|
67
|
+
requests-toolbelt==1.0.0
|
|
68
|
+
rfc3986==2.0.0
|
|
69
|
+
rich==15.0.0
|
|
70
|
+
rpds-py==0.30.0
|
|
71
|
+
-e git+https://github.com/ShanKonduru/sec-report-kit.git@b6d196bac687e07189e884e2fe25af5c8842da1d#egg=sec_report_kit
|
|
72
|
+
shellingham==1.5.4
|
|
73
|
+
sortedcontainers==2.4.0
|
|
74
|
+
sse-starlette==3.4.1
|
|
75
|
+
starlette==1.0.0
|
|
76
|
+
stevedore==5.7.0
|
|
77
|
+
tomli==2.4.1
|
|
78
|
+
tomli_w==1.2.0
|
|
79
|
+
twine==6.2.0
|
|
80
|
+
typer==0.25.1
|
|
81
|
+
typing-inspection==0.4.2
|
|
82
|
+
typing_extensions==4.15.0
|
|
83
|
+
urllib3==2.6.3
|
|
84
|
+
uvicorn==0.46.0
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
setlocal
|
|
3
|
+
|
|
4
|
+
set "PYTHON_BIN=python"
|
|
5
|
+
if exist "%~dp0..\.venv\Scripts\python.exe" set "PYTHON_BIN=%~dp0..\.venv\Scripts\python.exe"
|
|
6
|
+
|
|
7
|
+
set "OUTPUT_DIR=%~1"
|
|
8
|
+
if "%OUTPUT_DIR%"=="" set "OUTPUT_DIR=.tools\safety-db"
|
|
9
|
+
|
|
10
|
+
rem Pass remaining flags (e.g. --full, --no-verify-ssl) directly to the Python script
|
|
11
|
+
"%PYTHON_BIN%" "%~dp0download_safety_db.py" --output-dir "%OUTPUT_DIR%" %2 %3 %4
|
|
12
|
+
|
|
13
|
+
exit /b %ERRORLEVEL%
|