polyglot-code-guard 0.4.0__tar.gz → 0.5.0__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 (18) hide show
  1. {polyglot_code_guard-0.4.0/src/polyglot_code_guard.egg-info → polyglot_code_guard-0.5.0}/PKG-INFO +10 -7
  2. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/README.md +5 -5
  3. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/pyproject.toml +5 -2
  4. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0/src/polyglot_code_guard.egg-info}/PKG-INFO +10 -7
  5. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/src/polyglot_code_guard.egg-info/SOURCES.txt +1 -0
  6. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/src/polyguard/__init__.py +1 -1
  7. polyglot_code_guard-0.5.0/src/polyguard/py.typed +0 -0
  8. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/src/polyguard/runner.py +458 -54
  9. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/tests/test_coverage_paths.py +41 -4
  10. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/tests/test_runner.py +685 -16
  11. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/LICENSE +0 -0
  12. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/setup.cfg +0 -0
  13. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/src/polyglot_code_guard.egg-info/dependency_links.txt +0 -0
  14. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/src/polyglot_code_guard.egg-info/entry_points.txt +0 -0
  15. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/src/polyglot_code_guard.egg-info/requires.txt +0 -0
  16. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/src/polyglot_code_guard.egg-info/top_level.txt +0 -0
  17. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/src/polyguard/SKILL.md +0 -0
  18. {polyglot_code_guard-0.4.0 → polyglot_code_guard-0.5.0}/src/polyguard/cli.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: polyglot-code-guard
3
- Version: 0.4.0
3
+ Version: 0.5.0
4
4
  Summary: Fail-closed, multi-language test verification for AI-generated code.
5
5
  Author: Furox-Art
6
6
  License-Expression: MIT
@@ -12,8 +12,11 @@ Classifier: Development Status :: 3 - Alpha
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: Operating System :: OS Independent
14
14
  Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
15
18
  Classifier: Topic :: Software Development :: Testing
16
- Requires-Python: >=3.10
19
+ Requires-Python: >=3.11
17
20
  Description-Content-Type: text/markdown
18
21
  License-File: LICENSE
19
22
  Requires-Dist: tomli>=2; python_version < "3.11"
@@ -73,16 +76,16 @@ Exit code is **0** for PASS and **1** for FAIL. Missing tests, missing toolchain
73
76
  | Python | \`compileall\`, then \`pytest -q\` | Pytest passed-test summary |
74
77
  | Rust | \`cargo test --all-targets\` | Cargo test-result summary |
75
78
  | Go | \`go test -json ./...\` | Passing test events in JSON stream |
76
- | JavaScript / TypeScript | Direct Vitest/Jest/Mocha/TAP CLI when declared, otherwise `node --test`; TypeScript also runs `tsc --noEmit` when configured | Recognized runner pass summary (including Vitest default/minimal, Jest, Mocha, and Node TAP formats) |
79
+ | JavaScript / TypeScript | Direct Vitest/Jest/Mocha/TAP CLI when declared, otherwise `node --test --test-reporter=junit <absolute discovered test-file paths>`; TypeScript also runs `tsc --noEmit` when configured | Node fallback: JUnit testcase records cross-checked against a pre-execution snapshot; only that explicit file list runs; missing-name records and file-path collisions fail closed; declared runners: recognized runner summary |
77
80
  | Java | Maven `clean test` or Gradle `clean test` | Parsed Surefire/Gradle JUnit XML; at least one pass, zero failures |
78
81
  | C# | dotnet test with a Polyguard TRX prefix | Parsed TRX counters; at least one pass, zero failures |
79
82
  | PHP | PHPUnit with --log-junit | Parsed JUnit XML; at least one pass, zero failures |
80
83
  | Ruby | RSpec, or Ruby's Minitest runner | RSpec/Minitest success summary |
81
84
  | Swift | `swift test --parallel` | Recognized Swift Testing/XCTest runner summary with a positive passed-test count |
82
- | C | CMake build and CTest | CTest positive test count |
83
- | C++ | CMake build and CTest | CTest positive test count |
85
+ | C | CMake build and CTest | Counts per-test `Passed` records; aggregate pass percentages do not prove execution |
86
+ | C++ | CMake build and CTest | Counts per-test `Passed` records; aggregate pass percentages do not prove execution |
84
87
 
85
- C and C++ are separate language identifiers in configuration. JavaScript and TypeScript share the same project plan; TypeScript type checking does not replace running tests. Project-defined npm `test` scripts are never treated as test-execution evidence.
88
+ C and C++ are separate language identifiers in configuration. JavaScript and TypeScript share the same project plan; TypeScript type checking does not replace running tests. The Node built-in test-runner fallback uses its JUnit reporter and requires Node.js 18.15 or later. Polyguard passes only the test-file paths found in its pre-execution snapshot, rather than allowing Node to recursively discover files in generated or pruned directories. TypeScript test files (`.ts`, `.cts`, and `.mts`) additionally require a Node release with built-in type stripping enabled. When a supported runner dependency is declared, Polyguard invokes that runner's CLI and parses its recognized success summary. Project-defined npm `test` scripts are never treated as test-execution evidence.
86
89
 
87
90
  ### Monorepos and workspaces
88
91
 
@@ -137,7 +140,7 @@ python -m pip install -e ".[test]"
137
140
  python -m pytest -q
138
141
  \`\`\`
139
142
 
140
- Integration fixtures are created in temporary directories and run through Polyguard's actual project discovery and command execution path. Missing local toolchains are skipped by local integration tests; required CI jobs install their toolchains explicitly. The CI workflow also runs runner unit tests on Linux, Windows, and macOS, plus a native SwiftPM fixture on macOS.
143
+ Integration fixtures are created in temporary directories and run through Polyguard's actual project discovery and command execution path. All required local toolchains must be installed; missing toolchains make the corresponding integration tests fail rather than skip. The repository-wide pytest hook also fails the session if any test is skipped. The native-integration CI job verifies toolchain availability and runs the complete fixture suite. The CI workflow also runs runner tests on Linux, Windows, and macOS, plus a dedicated SwiftPM fixture on macOS.
141
144
 
142
145
  ## AI coding-agent skill
143
146
 
@@ -49,16 +49,16 @@ Exit code is **0** for PASS and **1** for FAIL. Missing tests, missing toolchain
49
49
  | Python | \`compileall\`, then \`pytest -q\` | Pytest passed-test summary |
50
50
  | Rust | \`cargo test --all-targets\` | Cargo test-result summary |
51
51
  | Go | \`go test -json ./...\` | Passing test events in JSON stream |
52
- | JavaScript / TypeScript | Direct Vitest/Jest/Mocha/TAP CLI when declared, otherwise `node --test`; TypeScript also runs `tsc --noEmit` when configured | Recognized runner pass summary (including Vitest default/minimal, Jest, Mocha, and Node TAP formats) |
52
+ | JavaScript / TypeScript | Direct Vitest/Jest/Mocha/TAP CLI when declared, otherwise `node --test --test-reporter=junit <absolute discovered test-file paths>`; TypeScript also runs `tsc --noEmit` when configured | Node fallback: JUnit testcase records cross-checked against a pre-execution snapshot; only that explicit file list runs; missing-name records and file-path collisions fail closed; declared runners: recognized runner summary |
53
53
  | Java | Maven `clean test` or Gradle `clean test` | Parsed Surefire/Gradle JUnit XML; at least one pass, zero failures |
54
54
  | C# | dotnet test with a Polyguard TRX prefix | Parsed TRX counters; at least one pass, zero failures |
55
55
  | PHP | PHPUnit with --log-junit | Parsed JUnit XML; at least one pass, zero failures |
56
56
  | Ruby | RSpec, or Ruby's Minitest runner | RSpec/Minitest success summary |
57
57
  | Swift | `swift test --parallel` | Recognized Swift Testing/XCTest runner summary with a positive passed-test count |
58
- | C | CMake build and CTest | CTest positive test count |
59
- | C++ | CMake build and CTest | CTest positive test count |
58
+ | C | CMake build and CTest | Counts per-test `Passed` records; aggregate pass percentages do not prove execution |
59
+ | C++ | CMake build and CTest | Counts per-test `Passed` records; aggregate pass percentages do not prove execution |
60
60
 
61
- C and C++ are separate language identifiers in configuration. JavaScript and TypeScript share the same project plan; TypeScript type checking does not replace running tests. Project-defined npm `test` scripts are never treated as test-execution evidence.
61
+ C and C++ are separate language identifiers in configuration. JavaScript and TypeScript share the same project plan; TypeScript type checking does not replace running tests. The Node built-in test-runner fallback uses its JUnit reporter and requires Node.js 18.15 or later. Polyguard passes only the test-file paths found in its pre-execution snapshot, rather than allowing Node to recursively discover files in generated or pruned directories. TypeScript test files (`.ts`, `.cts`, and `.mts`) additionally require a Node release with built-in type stripping enabled. When a supported runner dependency is declared, Polyguard invokes that runner's CLI and parses its recognized success summary. Project-defined npm `test` scripts are never treated as test-execution evidence.
62
62
 
63
63
  ### Monorepos and workspaces
64
64
 
@@ -113,7 +113,7 @@ python -m pip install -e ".[test]"
113
113
  python -m pytest -q
114
114
  \`\`\`
115
115
 
116
- Integration fixtures are created in temporary directories and run through Polyguard's actual project discovery and command execution path. Missing local toolchains are skipped by local integration tests; required CI jobs install their toolchains explicitly. The CI workflow also runs runner unit tests on Linux, Windows, and macOS, plus a native SwiftPM fixture on macOS.
116
+ Integration fixtures are created in temporary directories and run through Polyguard's actual project discovery and command execution path. All required local toolchains must be installed; missing toolchains make the corresponding integration tests fail rather than skip. The repository-wide pytest hook also fails the session if any test is skipped. The native-integration CI job verifies toolchain availability and runs the complete fixture suite. The CI workflow also runs runner tests on Linux, Windows, and macOS, plus a dedicated SwiftPM fixture on macOS.
117
117
 
118
118
  ## AI coding-agent skill
119
119
 
@@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "polyglot-code-guard"
7
- version = "0.4.0"
7
+ version = "0.5.0"
8
8
  description = "Fail-closed, multi-language test verification for AI-generated code."
9
9
  readme = "README.md"
10
- requires-python = ">=3.10"
10
+ requires-python = ">=3.11"
11
11
  license = "MIT"
12
12
  authors = [{ name = "Furox-Art" }]
13
13
  keywords = ["testing", "code-verification", "polyglot", "ai-generated-code", "quality-gate"]
@@ -16,6 +16,9 @@ classifiers = [
16
16
  "Intended Audience :: Developers",
17
17
  "Operating System :: OS Independent",
18
18
  "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
21
+ "Programming Language :: Python :: 3.13",
19
22
  "Topic :: Software Development :: Testing",
20
23
  ]
21
24
  dependencies = ["tomli>=2; python_version < '3.11'"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: polyglot-code-guard
3
- Version: 0.4.0
3
+ Version: 0.5.0
4
4
  Summary: Fail-closed, multi-language test verification for AI-generated code.
5
5
  Author: Furox-Art
6
6
  License-Expression: MIT
@@ -12,8 +12,11 @@ Classifier: Development Status :: 3 - Alpha
12
12
  Classifier: Intended Audience :: Developers
13
13
  Classifier: Operating System :: OS Independent
14
14
  Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
15
18
  Classifier: Topic :: Software Development :: Testing
16
- Requires-Python: >=3.10
19
+ Requires-Python: >=3.11
17
20
  Description-Content-Type: text/markdown
18
21
  License-File: LICENSE
19
22
  Requires-Dist: tomli>=2; python_version < "3.11"
@@ -73,16 +76,16 @@ Exit code is **0** for PASS and **1** for FAIL. Missing tests, missing toolchain
73
76
  | Python | \`compileall\`, then \`pytest -q\` | Pytest passed-test summary |
74
77
  | Rust | \`cargo test --all-targets\` | Cargo test-result summary |
75
78
  | Go | \`go test -json ./...\` | Passing test events in JSON stream |
76
- | JavaScript / TypeScript | Direct Vitest/Jest/Mocha/TAP CLI when declared, otherwise `node --test`; TypeScript also runs `tsc --noEmit` when configured | Recognized runner pass summary (including Vitest default/minimal, Jest, Mocha, and Node TAP formats) |
79
+ | JavaScript / TypeScript | Direct Vitest/Jest/Mocha/TAP CLI when declared, otherwise `node --test --test-reporter=junit <absolute discovered test-file paths>`; TypeScript also runs `tsc --noEmit` when configured | Node fallback: JUnit testcase records cross-checked against a pre-execution snapshot; only that explicit file list runs; missing-name records and file-path collisions fail closed; declared runners: recognized runner summary |
77
80
  | Java | Maven `clean test` or Gradle `clean test` | Parsed Surefire/Gradle JUnit XML; at least one pass, zero failures |
78
81
  | C# | dotnet test with a Polyguard TRX prefix | Parsed TRX counters; at least one pass, zero failures |
79
82
  | PHP | PHPUnit with --log-junit | Parsed JUnit XML; at least one pass, zero failures |
80
83
  | Ruby | RSpec, or Ruby's Minitest runner | RSpec/Minitest success summary |
81
84
  | Swift | `swift test --parallel` | Recognized Swift Testing/XCTest runner summary with a positive passed-test count |
82
- | C | CMake build and CTest | CTest positive test count |
83
- | C++ | CMake build and CTest | CTest positive test count |
85
+ | C | CMake build and CTest | Counts per-test `Passed` records; aggregate pass percentages do not prove execution |
86
+ | C++ | CMake build and CTest | Counts per-test `Passed` records; aggregate pass percentages do not prove execution |
84
87
 
85
- C and C++ are separate language identifiers in configuration. JavaScript and TypeScript share the same project plan; TypeScript type checking does not replace running tests. Project-defined npm `test` scripts are never treated as test-execution evidence.
88
+ C and C++ are separate language identifiers in configuration. JavaScript and TypeScript share the same project plan; TypeScript type checking does not replace running tests. The Node built-in test-runner fallback uses its JUnit reporter and requires Node.js 18.15 or later. Polyguard passes only the test-file paths found in its pre-execution snapshot, rather than allowing Node to recursively discover files in generated or pruned directories. TypeScript test files (`.ts`, `.cts`, and `.mts`) additionally require a Node release with built-in type stripping enabled. When a supported runner dependency is declared, Polyguard invokes that runner's CLI and parses its recognized success summary. Project-defined npm `test` scripts are never treated as test-execution evidence.
86
89
 
87
90
  ### Monorepos and workspaces
88
91
 
@@ -137,7 +140,7 @@ python -m pip install -e ".[test]"
137
140
  python -m pytest -q
138
141
  \`\`\`
139
142
 
140
- Integration fixtures are created in temporary directories and run through Polyguard's actual project discovery and command execution path. Missing local toolchains are skipped by local integration tests; required CI jobs install their toolchains explicitly. The CI workflow also runs runner unit tests on Linux, Windows, and macOS, plus a native SwiftPM fixture on macOS.
143
+ Integration fixtures are created in temporary directories and run through Polyguard's actual project discovery and command execution path. All required local toolchains must be installed; missing toolchains make the corresponding integration tests fail rather than skip. The repository-wide pytest hook also fails the session if any test is skipped. The native-integration CI job verifies toolchain availability and runs the complete fixture suite. The CI workflow also runs runner tests on Linux, Windows, and macOS, plus a dedicated SwiftPM fixture on macOS.
141
144
 
142
145
  ## AI coding-agent skill
143
146
 
@@ -10,6 +10,7 @@ src/polyglot_code_guard.egg-info/top_level.txt
10
10
  src/polyguard/SKILL.md
11
11
  src/polyguard/__init__.py
12
12
  src/polyguard/cli.py
13
+ src/polyguard/py.typed
13
14
  src/polyguard/runner.py
14
15
  tests/test_coverage_paths.py
15
16
  tests/test_runner.py
@@ -1,3 +1,3 @@
1
1
  """Polyguard: fail-closed verification for multi-language projects."""
2
2
 
3
- __version__ = "0.4.0"
3
+ __version__ = "0.5.0"
File without changes