deployproof 0.2.1__tar.gz → 0.2.2__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.
- {deployproof-0.2.1/src/deployproof.egg-info → deployproof-0.2.2}/PKG-INFO +4 -4
- {deployproof-0.2.1 → deployproof-0.2.2}/README.md +3 -3
- {deployproof-0.2.1 → deployproof-0.2.2}/pyproject.toml +1 -1
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/__init__.py +1 -1
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/cli.py +1 -1
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/dependencies.py +1 -1
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/reporter.py +1 -1
- {deployproof-0.2.1 → deployproof-0.2.2/src/deployproof.egg-info}/PKG-INFO +4 -4
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_cli.py +3 -3
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_mutator.py +2 -1
- {deployproof-0.2.1 → deployproof-0.2.2}/LICENSE +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/setup.cfg +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/control_flow.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/diff.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/mocks.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/mutator.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/secrets.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/symlinks.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/wsl.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof.egg-info/SOURCES.txt +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof.egg-info/dependency_links.txt +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof.egg-info/entry_points.txt +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof.egg-info/requires.txt +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof.egg-info/top_level.txt +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_baseline_collection_error.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_cli_dependency_scan.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_control_flow.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_dependencies_extractor.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_dependencies_pypi.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_diff.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_edge_cases_validation.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_mocks.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_mutation_suites.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_secrets.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_stress_regressions.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_symlinks.py +0 -0
- {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_wsl.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deployproof
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: A deterministic AI-code deployability checker that catches what coverage misses.
|
|
5
5
|
Author-email: SVS Praveen <svspraveens@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -32,7 +32,7 @@ Dynamic: license-file
|
|
|
32
32
|
|
|
33
33
|
> Deterministic pre-push verification for AI-assisted codebases: AST mutation testing, credential scanning, sandbox-escape detection, mock-usage alerts, swallowed-exception checks, and dependency hallucination defense.
|
|
34
34
|
|
|
35
|
-
[](https://pypi.org/project/deployproof/)
|
|
36
36
|
[](https://pypi.org/project/deployproof/)
|
|
37
37
|
[](https://github.com/SVSPraveen/DeployProof/actions/workflows/ci.yml)
|
|
38
38
|
[](https://github.com/SVSPraveen/DeployProof)
|
|
@@ -189,7 +189,7 @@ deployproof check --json
|
|
|
189
189
|
|
|
190
190
|
```json
|
|
191
191
|
{
|
|
192
|
-
"version": "0.2.
|
|
192
|
+
"version": "0.2.2",
|
|
193
193
|
"status": "passed",
|
|
194
194
|
"summary": {
|
|
195
195
|
"target_files_count": 1,
|
|
@@ -289,7 +289,7 @@ Fixtures cover weak test suites, zero-test orphan modules, planted OpenAI/AWS cr
|
|
|
289
289
|
|
|
290
290
|
## Status & Roadmap
|
|
291
291
|
|
|
292
|
-
- **Current (v0.2.
|
|
292
|
+
- **Current (v0.2.2):** Diff-scoped AST mutation testing (with recursive `test/`/`tests/` discovery, AST column-offset snippet reconstruction, and `SIGINT`/`SIGTERM`/`SIGBREAK` signal-safe disk restoration), baseline test-collection failure isolation with distinct exit code `2`, entropy-driven value-based secrets scanner (including unquoted .env values and prefix validation), GhostApproval symlink sandbox-escape detector, PyPI dependency hallucination / slopsquatting scanner (with import-to-distribution translation, recursive `-r` requirements scanning, and dynamic import detection via `importlib` / `__import__`), mock-introduction detector (`--strict-mocks`), control-flow / swallowed-exception scanner (`--strict-error-handling`), 11/11 launch-day stress test suite, 94 unit tests, machine-readable `--json` output, and Tier 2 CI verification via GitHub Actions (mutmut).
|
|
293
293
|
- **Next:** Multi-language mutation support and expanded ecosystem rule packs.
|
|
294
294
|
|
|
295
295
|
## Contributing
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> Deterministic pre-push verification for AI-assisted codebases: AST mutation testing, credential scanning, sandbox-escape detection, mock-usage alerts, swallowed-exception checks, and dependency hallucination defense.
|
|
4
4
|
|
|
5
|
-
[](https://pypi.org/project/deployproof/)
|
|
6
6
|
[](https://pypi.org/project/deployproof/)
|
|
7
7
|
[](https://github.com/SVSPraveen/DeployProof/actions/workflows/ci.yml)
|
|
8
8
|
[](https://github.com/SVSPraveen/DeployProof)
|
|
@@ -159,7 +159,7 @@ deployproof check --json
|
|
|
159
159
|
|
|
160
160
|
```json
|
|
161
161
|
{
|
|
162
|
-
"version": "0.2.
|
|
162
|
+
"version": "0.2.2",
|
|
163
163
|
"status": "passed",
|
|
164
164
|
"summary": {
|
|
165
165
|
"target_files_count": 1,
|
|
@@ -259,7 +259,7 @@ Fixtures cover weak test suites, zero-test orphan modules, planted OpenAI/AWS cr
|
|
|
259
259
|
|
|
260
260
|
## Status & Roadmap
|
|
261
261
|
|
|
262
|
-
- **Current (v0.2.
|
|
262
|
+
- **Current (v0.2.2):** Diff-scoped AST mutation testing (with recursive `test/`/`tests/` discovery, AST column-offset snippet reconstruction, and `SIGINT`/`SIGTERM`/`SIGBREAK` signal-safe disk restoration), baseline test-collection failure isolation with distinct exit code `2`, entropy-driven value-based secrets scanner (including unquoted .env values and prefix validation), GhostApproval symlink sandbox-escape detector, PyPI dependency hallucination / slopsquatting scanner (with import-to-distribution translation, recursive `-r` requirements scanning, and dynamic import detection via `importlib` / `__import__`), mock-introduction detector (`--strict-mocks`), control-flow / swallowed-exception scanner (`--strict-error-handling`), 11/11 launch-day stress test suite, 94 unit tests, machine-readable `--json` output, and Tier 2 CI verification via GitHub Actions (mutmut).
|
|
263
263
|
- **Next:** Multi-language mutation support and expanded ecosystem rule packs.
|
|
264
264
|
|
|
265
265
|
## Contributing
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "deployproof"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.2"
|
|
8
8
|
description = "A deterministic AI-code deployability checker that catches what coverage misses."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""DeployProof - Deterministic AI-Code Deployability Checker."""
|
|
2
|
-
__version__ = "0.2.
|
|
2
|
+
__version__ = "0.2.2"
|
|
@@ -82,7 +82,7 @@ def handle_check(args: argparse.Namespace) -> int:
|
|
|
82
82
|
for f in target_files:
|
|
83
83
|
try:
|
|
84
84
|
loc = len(f.read_text(encoding='utf-8', errors='replace').splitlines())
|
|
85
|
-
if loc
|
|
85
|
+
if loc >= LARGE_FILE_LOC_THRESHOLD:
|
|
86
86
|
try:
|
|
87
87
|
rel = f.relative_to(repo_root or cwd)
|
|
88
88
|
except ValueError:
|
|
@@ -983,7 +983,7 @@ def query_pypi_registry(
|
|
|
983
983
|
url = f"https://pypi.org/pypi/{canonical_pkg}/json"
|
|
984
984
|
req = urllib.request.Request(
|
|
985
985
|
url,
|
|
986
|
-
headers={"User-Agent": "DeployProof/0.2.
|
|
986
|
+
headers={"User-Agent": "DeployProof/0.2.2 (https://github.com/SVSPraveen/DeployProof)"},
|
|
987
987
|
)
|
|
988
988
|
|
|
989
989
|
try:
|
|
@@ -10,7 +10,7 @@ from deployproof.secrets import SecretsScanResult
|
|
|
10
10
|
from deployproof.symlinks import SymlinkScanResult
|
|
11
11
|
LARGE_FILE_LOC_THRESHOLD = 300
|
|
12
12
|
|
|
13
|
-
def format_json_report(result: MutationResult, target_files: List[Path], secrets_result: Optional[SecretsScanResult]=None, symlink_result: Optional[SymlinkScanResult]=None, dependency_result: Optional[DependencyScanSummary]=None, mock_result: Optional[MockScanSummary]=None, control_flow_result: Optional[ControlFlowScanSummary]=None, strict_mocks: bool=False, strict_error_handling: bool=False, repo_root: Optional[Path]=None, threshold: float=80.0, version: str='0.2.
|
|
13
|
+
def format_json_report(result: MutationResult, target_files: List[Path], secrets_result: Optional[SecretsScanResult]=None, symlink_result: Optional[SymlinkScanResult]=None, dependency_result: Optional[DependencyScanSummary]=None, mock_result: Optional[MockScanSummary]=None, control_flow_result: Optional[ControlFlowScanSummary]=None, strict_mocks: bool=False, strict_error_handling: bool=False, repo_root: Optional[Path]=None, threshold: float=80.0, version: str='0.2.2') -> str:
|
|
14
14
|
"""Format all scan findings and mutation results as a structured JSON string."""
|
|
15
15
|
root = (repo_root or Path.cwd()).resolve()
|
|
16
16
|
strict_mocks_triggered = bool(strict_mocks and mock_result and (mock_result.total_findings > 0))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deployproof
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: A deterministic AI-code deployability checker that catches what coverage misses.
|
|
5
5
|
Author-email: SVS Praveen <svspraveens@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -32,7 +32,7 @@ Dynamic: license-file
|
|
|
32
32
|
|
|
33
33
|
> Deterministic pre-push verification for AI-assisted codebases: AST mutation testing, credential scanning, sandbox-escape detection, mock-usage alerts, swallowed-exception checks, and dependency hallucination defense.
|
|
34
34
|
|
|
35
|
-
[](https://pypi.org/project/deployproof/)
|
|
36
36
|
[](https://pypi.org/project/deployproof/)
|
|
37
37
|
[](https://github.com/SVSPraveen/DeployProof/actions/workflows/ci.yml)
|
|
38
38
|
[](https://github.com/SVSPraveen/DeployProof)
|
|
@@ -189,7 +189,7 @@ deployproof check --json
|
|
|
189
189
|
|
|
190
190
|
```json
|
|
191
191
|
{
|
|
192
|
-
"version": "0.2.
|
|
192
|
+
"version": "0.2.2",
|
|
193
193
|
"status": "passed",
|
|
194
194
|
"summary": {
|
|
195
195
|
"target_files_count": 1,
|
|
@@ -289,7 +289,7 @@ Fixtures cover weak test suites, zero-test orphan modules, planted OpenAI/AWS cr
|
|
|
289
289
|
|
|
290
290
|
## Status & Roadmap
|
|
291
291
|
|
|
292
|
-
- **Current (v0.2.
|
|
292
|
+
- **Current (v0.2.2):** Diff-scoped AST mutation testing (with recursive `test/`/`tests/` discovery, AST column-offset snippet reconstruction, and `SIGINT`/`SIGTERM`/`SIGBREAK` signal-safe disk restoration), baseline test-collection failure isolation with distinct exit code `2`, entropy-driven value-based secrets scanner (including unquoted .env values and prefix validation), GhostApproval symlink sandbox-escape detector, PyPI dependency hallucination / slopsquatting scanner (with import-to-distribution translation, recursive `-r` requirements scanning, and dynamic import detection via `importlib` / `__import__`), mock-introduction detector (`--strict-mocks`), control-flow / swallowed-exception scanner (`--strict-error-handling`), 11/11 launch-day stress test suite, 94 unit tests, machine-readable `--json` output, and Tier 2 CI verification via GitHub Actions (mutmut).
|
|
293
293
|
- **Next:** Multi-language mutation support and expanded ecosystem rule packs.
|
|
294
294
|
|
|
295
295
|
## Contributing
|
|
@@ -9,7 +9,7 @@ from deployproof.cli import create_parser, main
|
|
|
9
9
|
|
|
10
10
|
def test_version():
|
|
11
11
|
"""Verify version string is accessible."""
|
|
12
|
-
assert __version__ == "0.2.
|
|
12
|
+
assert __version__ == "0.2.2"
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
def test_parser_version(capsys):
|
|
@@ -19,7 +19,7 @@ def test_parser_version(capsys):
|
|
|
19
19
|
parser.parse_args(["--version"])
|
|
20
20
|
assert exc_info.value.code == 0
|
|
21
21
|
captured = capsys.readouterr()
|
|
22
|
-
assert "deployproof 0.2.
|
|
22
|
+
assert "deployproof 0.2.2" in captured.out or "deployproof 0.2.2" in captured.err
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
def test_parser_help(capsys):
|
|
@@ -105,7 +105,7 @@ def test_main_check_json_output_passing(capsys):
|
|
|
105
105
|
|
|
106
106
|
data = json.loads(captured.out)
|
|
107
107
|
assert data["status"] == "passed"
|
|
108
|
-
assert data["version"] == "0.2.
|
|
108
|
+
assert data["version"] == "0.2.2"
|
|
109
109
|
assert data["summary"]["mutation_score"] == 100.0
|
|
110
110
|
assert data["summary"]["secrets_found"] == 0
|
|
111
111
|
assert data["summary"]["symlink_escapes_found"] == 0
|
|
@@ -287,7 +287,7 @@ def test_real_subprocess_os_signal_interrupt_restoration():
|
|
|
287
287
|
import sys
|
|
288
288
|
import time
|
|
289
289
|
|
|
290
|
-
with tempfile.TemporaryDirectory() as tmpdir:
|
|
290
|
+
with tempfile.TemporaryDirectory(ignore_cleanup_errors=True) as tmpdir:
|
|
291
291
|
tmp_path = Path(tmpdir).resolve()
|
|
292
292
|
src_file = tmp_path / "calc.py"
|
|
293
293
|
orig_code = (
|
|
@@ -368,6 +368,7 @@ def test_real_subprocess_os_signal_interrupt_restoration():
|
|
|
368
368
|
|
|
369
369
|
# Target source file MUST be restored to original content immediately
|
|
370
370
|
assert src_file.read_text(encoding="utf-8") == mod_code
|
|
371
|
+
time.sleep(0.2)
|
|
371
372
|
|
|
372
373
|
|
|
373
374
|
def test_restore_removes_pyc_cache_file():
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|