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.
Files changed (37) hide show
  1. {deployproof-0.2.1/src/deployproof.egg-info → deployproof-0.2.2}/PKG-INFO +4 -4
  2. {deployproof-0.2.1 → deployproof-0.2.2}/README.md +3 -3
  3. {deployproof-0.2.1 → deployproof-0.2.2}/pyproject.toml +1 -1
  4. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/__init__.py +1 -1
  5. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/cli.py +1 -1
  6. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/dependencies.py +1 -1
  7. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/reporter.py +1 -1
  8. {deployproof-0.2.1 → deployproof-0.2.2/src/deployproof.egg-info}/PKG-INFO +4 -4
  9. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_cli.py +3 -3
  10. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_mutator.py +2 -1
  11. {deployproof-0.2.1 → deployproof-0.2.2}/LICENSE +0 -0
  12. {deployproof-0.2.1 → deployproof-0.2.2}/setup.cfg +0 -0
  13. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/control_flow.py +0 -0
  14. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/diff.py +0 -0
  15. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/mocks.py +0 -0
  16. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/mutator.py +0 -0
  17. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/secrets.py +0 -0
  18. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/symlinks.py +0 -0
  19. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof/wsl.py +0 -0
  20. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof.egg-info/SOURCES.txt +0 -0
  21. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof.egg-info/dependency_links.txt +0 -0
  22. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof.egg-info/entry_points.txt +0 -0
  23. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof.egg-info/requires.txt +0 -0
  24. {deployproof-0.2.1 → deployproof-0.2.2}/src/deployproof.egg-info/top_level.txt +0 -0
  25. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_baseline_collection_error.py +0 -0
  26. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_cli_dependency_scan.py +0 -0
  27. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_control_flow.py +0 -0
  28. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_dependencies_extractor.py +0 -0
  29. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_dependencies_pypi.py +0 -0
  30. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_diff.py +0 -0
  31. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_edge_cases_validation.py +0 -0
  32. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_mocks.py +0 -0
  33. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_mutation_suites.py +0 -0
  34. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_secrets.py +0 -0
  35. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_stress_regressions.py +0 -0
  36. {deployproof-0.2.1 → deployproof-0.2.2}/tests/test_symlinks.py +0 -0
  37. {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.1
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
- [![PyPI version](https://img.shields.io/badge/pypi-v0.2.1-007ec6.svg)](https://pypi.org/project/deployproof/)
35
+ [![PyPI version](https://img.shields.io/badge/pypi-v0.2.2-007ec6.svg)](https://pypi.org/project/deployproof/)
36
36
  [![Python versions](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-3776ab.svg)](https://pypi.org/project/deployproof/)
37
37
  [![CI](https://github.com/SVSPraveen/DeployProof/actions/workflows/ci.yml/badge.svg)](https://github.com/SVSPraveen/DeployProof/actions/workflows/ci.yml)
38
38
  [![Tests](https://img.shields.io/badge/tests-94%20passed-2ea44f.svg)](https://github.com/SVSPraveen/DeployProof)
@@ -189,7 +189,7 @@ deployproof check --json
189
189
 
190
190
  ```json
191
191
  {
192
- "version": "0.2.1",
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.1):** 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).
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
- [![PyPI version](https://img.shields.io/badge/pypi-v0.2.1-007ec6.svg)](https://pypi.org/project/deployproof/)
5
+ [![PyPI version](https://img.shields.io/badge/pypi-v0.2.2-007ec6.svg)](https://pypi.org/project/deployproof/)
6
6
  [![Python versions](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-3776ab.svg)](https://pypi.org/project/deployproof/)
7
7
  [![CI](https://github.com/SVSPraveen/DeployProof/actions/workflows/ci.yml/badge.svg)](https://github.com/SVSPraveen/DeployProof/actions/workflows/ci.yml)
8
8
  [![Tests](https://img.shields.io/badge/tests-94%20passed-2ea44f.svg)](https://github.com/SVSPraveen/DeployProof)
@@ -159,7 +159,7 @@ deployproof check --json
159
159
 
160
160
  ```json
161
161
  {
162
- "version": "0.2.1",
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.1):** 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).
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.1"
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.1"
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 < LARGE_FILE_LOC_THRESHOLD:
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.1 (https://github.com/SVSPraveen/DeployProof)"},
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.1') -> str:
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.1
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
- [![PyPI version](https://img.shields.io/badge/pypi-v0.2.1-007ec6.svg)](https://pypi.org/project/deployproof/)
35
+ [![PyPI version](https://img.shields.io/badge/pypi-v0.2.2-007ec6.svg)](https://pypi.org/project/deployproof/)
36
36
  [![Python versions](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-3776ab.svg)](https://pypi.org/project/deployproof/)
37
37
  [![CI](https://github.com/SVSPraveen/DeployProof/actions/workflows/ci.yml/badge.svg)](https://github.com/SVSPraveen/DeployProof/actions/workflows/ci.yml)
38
38
  [![Tests](https://img.shields.io/badge/tests-94%20passed-2ea44f.svg)](https://github.com/SVSPraveen/DeployProof)
@@ -189,7 +189,7 @@ deployproof check --json
189
189
 
190
190
  ```json
191
191
  {
192
- "version": "0.2.1",
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.1):** 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).
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.1"
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.1" in captured.out or "deployproof 0.2.1" in captured.err
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.1"
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