pycheck-neuron 1.0.2__tar.gz → 1.0.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.
- {pycheck_neuron-1.0.2/pycheck_neuron.egg-info → pycheck_neuron-1.0.3}/PKG-INFO +9 -8
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/README.md +294 -293
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck/__init__.py +1 -1
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck/audit.py +153 -153
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck/rules.py +96 -2
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck/server.py +201 -201
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3/pycheck_neuron.egg-info}/PKG-INFO +9 -8
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pyproject.toml +66 -66
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/tests/test_audit.py +49 -49
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/tests/test_cli.py +85 -85
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/tests/test_rules.py +30 -1
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/LICENSE +0 -0
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck/__main__.py +0 -0
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck/analyzer.py +0 -0
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck/cli.py +0 -0
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck/flow.py +0 -0
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck_neuron.egg-info/SOURCES.txt +0 -0
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck_neuron.egg-info/dependency_links.txt +0 -0
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck_neuron.egg-info/entry_points.txt +0 -0
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck_neuron.egg-info/requires.txt +0 -0
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/pycheck_neuron.egg-info/top_level.txt +0 -0
- {pycheck_neuron-1.0.2 → pycheck_neuron-1.0.3}/setup.cfg +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pycheck-neuron
|
|
3
|
-
Version: 1.0.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 1.0.3
|
|
4
|
+
Summary: 33-rule static AST analyzer catching temporal lookahead bias, causal confusion, and uncertainty bugs in Python ML code. Zero dependencies.
|
|
5
5
|
Author: NEURON Team
|
|
6
6
|
Author-email: Fayo Ibrahim <fayo@neuron-lab.org>
|
|
7
7
|
License-Expression: MIT
|
|
@@ -38,7 +38,7 @@ Dynamic: license-file
|
|
|
38
38
|
|
|
39
39
|
# PyCheck — ML Safety Analyzer
|
|
40
40
|
|
|
41
|
-
**
|
|
41
|
+
**33 rules. Zero dependencies. Catches the bugs that cost millions.**
|
|
42
42
|
|
|
43
43
|
PyCheck is a static AST analyzer that detects **temporal lookahead bias**, **causal confusion**, and **unguarded uncertainty** in Python ML and trading scripts — before you run a single line of code.
|
|
44
44
|
|
|
@@ -68,7 +68,7 @@ PyCheck catches all three before execution:
|
|
|
68
68
|
=================================================================
|
|
69
69
|
PyCheck — NEURON ML Safety Analyzer
|
|
70
70
|
Scanning: strategy.py
|
|
71
|
-
Rules:
|
|
71
|
+
Rules: 33 active + Data Flow & Provenance Engine
|
|
72
72
|
=================================================================
|
|
73
73
|
|
|
74
74
|
ERROR[T001]: .shift(-1) accesses data 1 rows INTO THE FUTURE
|
|
@@ -100,7 +100,7 @@ PyCheck catches all three before execution:
|
|
|
100
100
|
|
|
101
101
|
## What It Catches
|
|
102
102
|
|
|
103
|
-
### Temporal Leak Rules (
|
|
103
|
+
### Temporal Leak Rules (18 rules — `T001`–`T018`)
|
|
104
104
|
|
|
105
105
|
| Rule | What It Catches | Severity |
|
|
106
106
|
|------|----------------|----------|
|
|
@@ -121,6 +121,7 @@ PyCheck catches all three before execution:
|
|
|
121
121
|
| `T015` | Negative `.shift()` inside `groupby().transform()` | **Error** |
|
|
122
122
|
| `T016` | `pd.merge_asof()` with `direction='nearest'` or `'forward'` | **Error** |
|
|
123
123
|
| `T017` | Target laundering & un-split target encoding (`regime_success_rate`) | **Error** |
|
|
124
|
+
| `T018` | In-sample target encoding (`groupby().transform('mean')`, `TargetEncoder(cv=None)`) | **Error** |
|
|
124
125
|
|
|
125
126
|
### Causal Confusion Rules (7 rules — `C001`–`C007`)
|
|
126
127
|
|
|
@@ -188,7 +189,7 @@ pycheck script.py # Errors + warnings (default)
|
|
|
188
189
|
pycheck script.py --info # Include info-level diagnostics
|
|
189
190
|
pycheck script.py --quiet # Errors only
|
|
190
191
|
pycheck script.py --json # JSON output — pipe into CI/CD
|
|
191
|
-
pycheck --list # List all
|
|
192
|
+
pycheck --list # List all 33 rules
|
|
192
193
|
pycheck --help
|
|
193
194
|
```
|
|
194
195
|
|
|
@@ -284,9 +285,9 @@ The `pycheck-vscode` extension gives you **real-time red/yellow squiggles** as y
|
|
|
284
285
|
|
|
285
286
|
---
|
|
286
287
|
|
|
287
|
-
##
|
|
288
|
+
## Automated CI/CD Gatekeeping & Invariant Verification
|
|
288
289
|
|
|
289
|
-
For
|
|
290
|
+
For quant teams, machine learning desks, and algorithmic trading funds, **PyCheck** provides continuous compliance and automated gatekeeping:
|
|
290
291
|
|
|
291
292
|
* **Automated PR / MR Gatekeeping**: GitHub App & GitLab integration that automatically blocks pull requests containing temporal leaks, lookahead joins, or cross-fold contamination before they reach production.
|
|
292
293
|
* **Proof-of-Causality Audit Certificates**: Cryptographically verifiable backtest audit reports (PDF & JSON) certifying that quantitative strategies and feature pipelines are provably free of temporal lookahead bias for LP allocators and risk committees.
|