invarlock 0.3.7__py3-none-any.whl → 0.3.9__py3-none-any.whl
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.
- invarlock/__init__.py +3 -3
- invarlock/adapters/auto.py +2 -10
- invarlock/adapters/hf_loading.py +7 -7
- invarlock/adapters/hf_mixin.py +28 -5
- invarlock/assurance/__init__.py +15 -23
- invarlock/calibration/spectral_null.py +1 -1
- invarlock/cli/adapter_auto.py +1 -5
- invarlock/cli/app.py +57 -27
- invarlock/cli/commands/__init__.py +2 -2
- invarlock/cli/commands/calibrate.py +48 -4
- invarlock/cli/commands/{certify.py → evaluate.py} +69 -46
- invarlock/cli/commands/explain_gates.py +94 -51
- invarlock/cli/commands/export_html.py +11 -9
- invarlock/cli/commands/report.py +121 -47
- invarlock/cli/commands/run.py +274 -66
- invarlock/cli/commands/verify.py +84 -89
- invarlock/cli/determinism.py +1 -1
- invarlock/cli/provenance.py +3 -3
- invarlock/core/bootstrap.py +1 -1
- invarlock/core/retry.py +14 -14
- invarlock/core/runner.py +1 -1
- invarlock/edits/noop.py +2 -2
- invarlock/edits/quant_rtn.py +2 -2
- invarlock/eval/__init__.py +1 -1
- invarlock/eval/bench.py +11 -7
- invarlock/eval/primary_metric.py +1 -1
- invarlock/guards/spectral.py +2 -2
- invarlock/guards_ref/spectral_ref.py +1 -1
- invarlock/model_profile.py +16 -35
- invarlock/observability/health.py +38 -20
- invarlock/plugins/hf_bnb_adapter.py +32 -21
- invarlock/reporting/__init__.py +18 -4
- invarlock/reporting/html.py +7 -7
- invarlock/reporting/normalizer.py +2 -2
- invarlock/reporting/policy_utils.py +1 -1
- invarlock/reporting/primary_metric_utils.py +11 -11
- invarlock/reporting/render.py +126 -120
- invarlock/reporting/report.py +43 -37
- invarlock/reporting/{certificate.py → report_builder.py} +103 -99
- invarlock/reporting/{certificate_schema.py → report_schema.py} +22 -22
- invarlock-0.3.9.dist-info/METADATA +303 -0
- {invarlock-0.3.7.dist-info → invarlock-0.3.9.dist-info}/RECORD +46 -46
- {invarlock-0.3.7.dist-info → invarlock-0.3.9.dist-info}/WHEEL +1 -1
- invarlock-0.3.7.dist-info/METADATA +0 -602
- {invarlock-0.3.7.dist-info → invarlock-0.3.9.dist-info}/entry_points.txt +0 -0
- {invarlock-0.3.7.dist-info → invarlock-0.3.9.dist-info}/licenses/LICENSE +0 -0
- {invarlock-0.3.7.dist-info → invarlock-0.3.9.dist-info}/top_level.txt +0 -0
|
@@ -11,16 +11,16 @@ except Exception: # pragma: no cover
|
|
|
11
11
|
jsonschema = None
|
|
12
12
|
|
|
13
13
|
|
|
14
|
-
#
|
|
15
|
-
|
|
14
|
+
# Evaluation report schema version (PM-first canonical)
|
|
15
|
+
REPORT_SCHEMA_VERSION = "v1"
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
# Minimal JSON Schema describing the canonical shape of
|
|
18
|
+
# Minimal JSON Schema describing the canonical shape of an evaluation report.
|
|
19
19
|
# This focuses on structural validity; numerical thresholds are validated
|
|
20
20
|
# separately in metric-specific logic.
|
|
21
|
-
|
|
21
|
+
REPORT_JSON_SCHEMA: dict[str, Any] = {
|
|
22
22
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
23
|
-
"title": "InvarLock Evaluation
|
|
23
|
+
"title": "InvarLock Evaluation Report",
|
|
24
24
|
"type": "object",
|
|
25
25
|
"required": [
|
|
26
26
|
"schema_version",
|
|
@@ -32,7 +32,7 @@ CERTIFICATE_JSON_SCHEMA: dict[str, Any] = {
|
|
|
32
32
|
"primary_metric",
|
|
33
33
|
],
|
|
34
34
|
"properties": {
|
|
35
|
-
"schema_version": {"const":
|
|
35
|
+
"schema_version": {"const": REPORT_SCHEMA_VERSION},
|
|
36
36
|
"run_id": {"type": "string", "minLength": 4},
|
|
37
37
|
"edit_name": {"type": "string"},
|
|
38
38
|
"policy_digest": {
|
|
@@ -179,21 +179,21 @@ def _load_validation_allowlist() -> set[str]:
|
|
|
179
179
|
return set(_VALIDATION_ALLOWLIST_DEFAULT)
|
|
180
180
|
|
|
181
181
|
|
|
182
|
-
def _validate_with_jsonschema(
|
|
183
|
-
"""Validate
|
|
182
|
+
def _validate_with_jsonschema(report: dict[str, Any]) -> bool:
|
|
183
|
+
"""Validate evaluation report with JSON Schema when available."""
|
|
184
184
|
if jsonschema is None:
|
|
185
185
|
return True # Schema library unavailable; fall back to minimal checks
|
|
186
186
|
try:
|
|
187
|
-
jsonschema.validate(instance=
|
|
187
|
+
jsonschema.validate(instance=report, schema=REPORT_JSON_SCHEMA)
|
|
188
188
|
return True
|
|
189
189
|
except Exception:
|
|
190
190
|
return False
|
|
191
191
|
|
|
192
192
|
|
|
193
|
-
def
|
|
194
|
-
"""Validate
|
|
193
|
+
def validate_report(report: dict[str, Any]) -> bool:
|
|
194
|
+
"""Validate evaluation report structure and essential flags."""
|
|
195
195
|
try:
|
|
196
|
-
if
|
|
196
|
+
if report.get("schema_version") != REPORT_SCHEMA_VERSION:
|
|
197
197
|
return False
|
|
198
198
|
|
|
199
199
|
# Prefer JSON Schema structural validation; if unavailable or too strict,
|
|
@@ -202,20 +202,20 @@ def validate_certificate(certificate: dict[str, Any]) -> bool:
|
|
|
202
202
|
# disallow unknown validation keys at schema level.
|
|
203
203
|
try:
|
|
204
204
|
vkeys = _load_validation_allowlist()
|
|
205
|
-
if isinstance(
|
|
206
|
-
vspec =
|
|
205
|
+
if isinstance(REPORT_JSON_SCHEMA.get("properties"), dict):
|
|
206
|
+
vspec = REPORT_JSON_SCHEMA["properties"].get("validation")
|
|
207
207
|
if isinstance(vspec, dict):
|
|
208
208
|
vspec["properties"] = {k: {"type": "boolean"} for k in vkeys}
|
|
209
209
|
vspec["additionalProperties"] = False
|
|
210
210
|
except Exception:
|
|
211
211
|
pass
|
|
212
212
|
|
|
213
|
-
if not _validate_with_jsonschema(
|
|
213
|
+
if not _validate_with_jsonschema(report):
|
|
214
214
|
# Minimal fallback: require schema version + run_id + primary_metric
|
|
215
|
-
run_id_ok = isinstance(
|
|
216
|
-
|
|
215
|
+
run_id_ok = isinstance(report.get("run_id"), str) and bool(
|
|
216
|
+
report.get("run_id")
|
|
217
217
|
)
|
|
218
|
-
pm =
|
|
218
|
+
pm = report.get("primary_metric")
|
|
219
219
|
pm_ok = isinstance(pm, dict) and (
|
|
220
220
|
isinstance(pm.get("final"), int | float)
|
|
221
221
|
or (isinstance(pm.get("kind"), str) and bool(pm.get("kind")))
|
|
@@ -223,7 +223,7 @@ def validate_certificate(certificate: dict[str, Any]) -> bool:
|
|
|
223
223
|
if not (run_id_ok and pm_ok):
|
|
224
224
|
return False
|
|
225
225
|
|
|
226
|
-
validation =
|
|
226
|
+
validation = report.get("validation", {})
|
|
227
227
|
for flag in [
|
|
228
228
|
"preview_final_drift_acceptable",
|
|
229
229
|
"primary_metric_acceptable",
|
|
@@ -242,7 +242,7 @@ def validate_certificate(certificate: dict[str, Any]) -> bool:
|
|
|
242
242
|
|
|
243
243
|
|
|
244
244
|
__all__ = [
|
|
245
|
-
"
|
|
246
|
-
"
|
|
247
|
-
"
|
|
245
|
+
"REPORT_SCHEMA_VERSION",
|
|
246
|
+
"REPORT_JSON_SCHEMA",
|
|
247
|
+
"validate_report",
|
|
248
248
|
]
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: invarlock
|
|
3
|
+
Version: 0.3.9
|
|
4
|
+
Summary: Edit‑agnostic robustness evaluation reports for weight edits (InvarLock framework)
|
|
5
|
+
Author-email: InvarLock Team <oss@invarlock.dev>
|
|
6
|
+
Maintainer-email: InvarLock Maintainers <support@invarlock.dev>
|
|
7
|
+
License-Expression: Apache-2.0
|
|
8
|
+
Project-URL: Homepage, https://github.com/invarlock/invarlock
|
|
9
|
+
Project-URL: Repository, https://github.com/invarlock/invarlock
|
|
10
|
+
Project-URL: Documentation, https://github.com/invarlock/invarlock/tree/main/docs
|
|
11
|
+
Project-URL: Issues, https://github.com/invarlock/invarlock/issues
|
|
12
|
+
Project-URL: Changelog, https://github.com/invarlock/invarlock/blob/main/CHANGELOG.md
|
|
13
|
+
Keywords: machine-learning,deep-learning,transformers,pytorch,llm,quantization,safety,evaluation,certification
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: Intended Audience :: Science/Research
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Operating System :: OS Independent
|
|
22
|
+
Classifier: Typing :: Typed
|
|
23
|
+
Requires-Python: >=3.12
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: typer>=0.15
|
|
27
|
+
Requires-Dist: click>=8.1
|
|
28
|
+
Requires-Dist: shellingham>=1.5.0
|
|
29
|
+
Requires-Dist: pandas>=2.2
|
|
30
|
+
Requires-Dist: scikit-learn>=1.4
|
|
31
|
+
Requires-Dist: pydantic>=2.0
|
|
32
|
+
Requires-Dist: rich>=13.0
|
|
33
|
+
Requires-Dist: pyyaml>=6.0
|
|
34
|
+
Requires-Dist: markdown>=3.5
|
|
35
|
+
Requires-Dist: psutil>=5.9
|
|
36
|
+
Requires-Dist: hypothesis>=6.98
|
|
37
|
+
Requires-Dist: typing_extensions>=4.7
|
|
38
|
+
Requires-Dist: jsonschema>=4.0
|
|
39
|
+
Provides-Extra: adapters
|
|
40
|
+
Requires-Dist: torch>=2.1.0; extra == "adapters"
|
|
41
|
+
Requires-Dist: transformers>=5.0.0; extra == "adapters"
|
|
42
|
+
Provides-Extra: hf
|
|
43
|
+
Requires-Dist: torch>=2.1.0; extra == "hf"
|
|
44
|
+
Requires-Dist: transformers>=5.0.0; extra == "hf"
|
|
45
|
+
Requires-Dist: datasets>=3.0; extra == "hf"
|
|
46
|
+
Requires-Dist: numpy>=1.24; extra == "hf"
|
|
47
|
+
Requires-Dist: huggingface_hub>=1.0.0; extra == "hf"
|
|
48
|
+
Requires-Dist: aiohttp>=3.12.14; extra == "hf"
|
|
49
|
+
Requires-Dist: h2>=4.3.0; extra == "hf"
|
|
50
|
+
Requires-Dist: pillow>=11.3.0; extra == "hf"
|
|
51
|
+
Provides-Extra: guards
|
|
52
|
+
Requires-Dist: torch>=2.1.0; extra == "guards"
|
|
53
|
+
Requires-Dist: numpy>=1.24; extra == "guards"
|
|
54
|
+
Provides-Extra: edits
|
|
55
|
+
Requires-Dist: torch>=2.1.0; extra == "edits"
|
|
56
|
+
Provides-Extra: eval
|
|
57
|
+
Requires-Dist: torch>=2.1.0; extra == "eval"
|
|
58
|
+
Requires-Dist: datasets>=3.0; extra == "eval"
|
|
59
|
+
Provides-Extra: gptq
|
|
60
|
+
Requires-Dist: torch>=2.1.0; extra == "gptq"
|
|
61
|
+
Requires-Dist: auto-gptq>=0.7.0; platform_system == "Linux" and extra == "gptq"
|
|
62
|
+
Requires-Dist: triton>=2.3.0; platform_system == "Linux" and extra == "gptq"
|
|
63
|
+
Requires-Dist: transformers>=5.0.0; extra == "gptq"
|
|
64
|
+
Provides-Extra: awq
|
|
65
|
+
Requires-Dist: torch>=2.1.0; extra == "awq"
|
|
66
|
+
Requires-Dist: autoawq>=0.2.0; platform_system == "Linux" and extra == "awq"
|
|
67
|
+
Requires-Dist: transformers>=5.0.0; extra == "awq"
|
|
68
|
+
Requires-Dist: triton>=2.3.0; platform_system == "Linux" and extra == "awq"
|
|
69
|
+
Provides-Extra: gpu
|
|
70
|
+
Requires-Dist: torch>=2.1.0; extra == "gpu"
|
|
71
|
+
Requires-Dist: accelerate>=0.27; extra == "gpu"
|
|
72
|
+
Requires-Dist: bitsandbytes>=0.41; platform_system == "Linux" and extra == "gpu"
|
|
73
|
+
Provides-Extra: all
|
|
74
|
+
Requires-Dist: torch>=2.1.0; extra == "all"
|
|
75
|
+
Requires-Dist: transformers>=5.0.0; extra == "all"
|
|
76
|
+
Requires-Dist: datasets>=3.0; extra == "all"
|
|
77
|
+
Requires-Dist: numpy>=1.24; extra == "all"
|
|
78
|
+
Requires-Dist: huggingface_hub>=1.0.0; extra == "all"
|
|
79
|
+
Requires-Dist: accelerate>=0.27; extra == "all"
|
|
80
|
+
Requires-Dist: bitsandbytes>=0.41; platform_system == "Linux" and extra == "all"
|
|
81
|
+
Requires-Dist: auto-gptq>=0.7.0; platform_system == "Linux" and extra == "all"
|
|
82
|
+
Requires-Dist: autoawq>=0.2.0; platform_system == "Linux" and extra == "all"
|
|
83
|
+
Requires-Dist: triton>=2.3.0; platform_system == "Linux" and extra == "all"
|
|
84
|
+
Requires-Dist: aiohttp>=3.12.14; extra == "all"
|
|
85
|
+
Requires-Dist: h2>=4.3.0; extra == "all"
|
|
86
|
+
Requires-Dist: pillow>=11.3.0; extra == "all"
|
|
87
|
+
Provides-Extra: onnx
|
|
88
|
+
Requires-Dist: optimum>=1.17.0; extra == "onnx"
|
|
89
|
+
Requires-Dist: onnxruntime>=1.17.0; extra == "onnx"
|
|
90
|
+
Provides-Extra: dev
|
|
91
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
92
|
+
Requires-Dist: pytest-cov>=4.0; extra == "dev"
|
|
93
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
94
|
+
Requires-Dist: black>=23.0; extra == "dev"
|
|
95
|
+
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
96
|
+
Requires-Dist: hypothesis>=6.98; extra == "dev"
|
|
97
|
+
Requires-Dist: pre-commit>=3.0; extra == "dev"
|
|
98
|
+
Requires-Dist: mkdocs>=1.5; extra == "dev"
|
|
99
|
+
Requires-Dist: mkdocs-material>=9.5; extra == "dev"
|
|
100
|
+
Requires-Dist: mkdocs-mermaid2-plugin>=1.1; extra == "dev"
|
|
101
|
+
Requires-Dist: sphinx>=7.0; extra == "dev"
|
|
102
|
+
Requires-Dist: matplotlib>=3.7; extra == "dev"
|
|
103
|
+
Requires-Dist: bitsandbytes>=0.41; extra == "dev"
|
|
104
|
+
Requires-Dist: build>=0.10.0; extra == "dev"
|
|
105
|
+
Requires-Dist: twine>=4.0.0; extra == "dev"
|
|
106
|
+
Dynamic: license-file
|
|
107
|
+
|
|
108
|
+
<p align="center">
|
|
109
|
+
<picture>
|
|
110
|
+
<source
|
|
111
|
+
media="(prefers-color-scheme: dark)"
|
|
112
|
+
srcset="docs/assets/invarlock-logo-dark.svg"
|
|
113
|
+
/>
|
|
114
|
+
<img src="docs/assets/invarlock-logo.svg" alt="InvarLock" />
|
|
115
|
+
</picture>
|
|
116
|
+
</p>
|
|
117
|
+
|
|
118
|
+
<p align="center"><em>Edit‑agnostic robustness reports for weight edits</em></p>
|
|
119
|
+
|
|
120
|
+
<p align="center">
|
|
121
|
+
<a href="https://github.com/invarlock/invarlock/actions/workflows/ci.yml">
|
|
122
|
+
<img alt="CI" src="https://img.shields.io/github/actions/workflow/status/invarlock/invarlock/ci.yml?branch=main&logo=github&label=CI" />
|
|
123
|
+
</a>
|
|
124
|
+
<a href="https://pypi.org/project/invarlock/">
|
|
125
|
+
<img alt="PyPI" src="https://badge.fury.io/py/invarlock.svg" />
|
|
126
|
+
</a>
|
|
127
|
+
<a href="https://github.com/invarlock/invarlock/blob/main/docs/user-guide/quickstart.md">
|
|
128
|
+
<img alt="Docs" src="https://img.shields.io/badge/docs-quickstart-blue.svg" />
|
|
129
|
+
</a>
|
|
130
|
+
<a href="LICENSE">
|
|
131
|
+
<img alt="License: Apache-2.0" src="https://img.shields.io/badge/License-Apache_2.0-blue.svg" />
|
|
132
|
+
</a>
|
|
133
|
+
<a href="https://www.python.org/downloads/release/python-3120/">
|
|
134
|
+
<img alt="Python 3.12+" src="https://img.shields.io/badge/python-3.12+-blue.svg" />
|
|
135
|
+
</a>
|
|
136
|
+
</p>
|
|
137
|
+
|
|
138
|
+
<p align="center">
|
|
139
|
+
<strong>Catch silent quality regressions from quantization, pruning, and weight edits before they ship.</strong>
|
|
140
|
+
</p>
|
|
141
|
+
|
|
142
|
+
Quantizing, pruning, or otherwise editing a model’s weights can silently degrade quality.
|
|
143
|
+
InvarLock compares an edited **subject** checkpoint against a fixed **baseline** with paired
|
|
144
|
+
evaluation windows, enforces a guard pipeline (invariants → spectral → RMT → variance), and
|
|
145
|
+
produces a machine‑readable Evaluation Report you can gate in CI.
|
|
146
|
+
|
|
147
|
+
## Why InvarLock?
|
|
148
|
+
|
|
149
|
+
- **Quality gates for weight edits**: catch regressions before deployment.
|
|
150
|
+
- **Statistical guarantees**: paired primary metrics with confidence intervals.
|
|
151
|
+
- **Auditable evidence**: deterministic pairing metadata + policy digests in `evaluation.report.json`.
|
|
152
|
+
- **CI/CD-friendly**: stable exit codes, `--json` outputs, and portable “proof packs”.
|
|
153
|
+
- **Offline-first**: network is disabled by default; enable downloads per command.
|
|
154
|
+
|
|
155
|
+
## Who is this for?
|
|
156
|
+
|
|
157
|
+
- ML engineers shipping quantized/pruned checkpoints.
|
|
158
|
+
- MLOps teams building CI quality gates and reviewable artifacts.
|
|
159
|
+
- Researchers validating compression/edit methods with reproducible, paired eval.
|
|
160
|
+
|
|
161
|
+
## How it works
|
|
162
|
+
|
|
163
|
+
```text
|
|
164
|
+
┌───────────────────────┐ ┌────────────────────────────────────────────┐
|
|
165
|
+
│ Baseline (checkpoint) │────►│ │
|
|
166
|
+
└───────────────────────┘ │ invarlock evaluate │
|
|
167
|
+
│ ├─► Paired windows (deterministic) │
|
|
168
|
+
┌───────────────────────┐ │ ├─► GuardChain pipeline │
|
|
169
|
+
│ Subject (checkpoint) │────►│ │ └─► invariants → spectral → RMT → VE │
|
|
170
|
+
└───────────────────────┘ │ └─► Emit: evaluation.report.json │
|
|
171
|
+
│ │
|
|
172
|
+
└────────────────────────────────────────────┘
|
|
173
|
+
│
|
|
174
|
+
┌───────────────┴───────────────┐
|
|
175
|
+
▼ ▼
|
|
176
|
+
✅ PASS ❌ FAIL
|
|
177
|
+
(ship) (rollback)
|
|
178
|
+
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Quick start
|
|
182
|
+
|
|
183
|
+
Colab (CPU-friendly):
|
|
184
|
+
[](https://colab.research.google.com/github/invarlock/invarlock/blob/main/notebooks/invarlock_quickstart_cpu.ipynb)
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# HF adapter stack (torch/transformers)
|
|
188
|
+
pip install "invarlock[hf]"
|
|
189
|
+
|
|
190
|
+
# Version + report schema (when available)
|
|
191
|
+
invarlock --version
|
|
192
|
+
|
|
193
|
+
# Compare baseline vs subject (downloads require explicit network enable)
|
|
194
|
+
INVARLOCK_ALLOW_NETWORK=1 invarlock evaluate \
|
|
195
|
+
--baseline gpt2 \
|
|
196
|
+
--subject gpt2 \
|
|
197
|
+
--adapter auto \
|
|
198
|
+
--profile dev \
|
|
199
|
+
--quiet
|
|
200
|
+
|
|
201
|
+
# Validate the evaluation report
|
|
202
|
+
invarlock verify reports/eval/evaluation.report.json
|
|
203
|
+
|
|
204
|
+
# Render HTML for sharing
|
|
205
|
+
invarlock report html -i reports/eval/evaluation.report.json -o reports/eval/evaluation.html
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Example output (abridged; counts vary by profile/config):
|
|
209
|
+
|
|
210
|
+
```text
|
|
211
|
+
INVARLOCK v<version> · EVALUATE
|
|
212
|
+
Baseline: gpt2 -> Subject: gpt2 · Profile: dev
|
|
213
|
+
Status: PASS · Gates: <passed>/<total> passed
|
|
214
|
+
Primary metric ratio: <ratio>
|
|
215
|
+
Output: reports/eval/evaluation.report.json
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
## Proof packs (portable evidence bundles)
|
|
219
|
+
|
|
220
|
+
Proof packs bundle reports + verification metadata into a distributable artifact.
|
|
221
|
+
|
|
222
|
+
- Guide: <https://github.com/invarlock/invarlock/blob/main/docs/user-guide/proof-packs.md>
|
|
223
|
+
- Verify: `scripts/proof_packs/verify_pack.sh --pack <dir> --strict` (or `PACK_STRICT_MODE=1 ...`)
|
|
224
|
+
|
|
225
|
+
Note: `configs/` and `scripts/` are repo resources and are not shipped in wheels; clone the repo to use
|
|
226
|
+
presets and proof-pack helpers.
|
|
227
|
+
|
|
228
|
+
## Installation
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
# Minimal CLI (no torch/transformers)
|
|
232
|
+
pip install invarlock
|
|
233
|
+
|
|
234
|
+
# HF workflows (torch/transformers)
|
|
235
|
+
pip install "invarlock[hf]"
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
Optional extras: `invarlock[gpu]`, `invarlock[awq,gptq]`. Full setup: <https://github.com/invarlock/invarlock/blob/main/docs/user-guide/getting-started.md>.
|
|
239
|
+
|
|
240
|
+
## Documentation
|
|
241
|
+
|
|
242
|
+
- Quickstart: <https://github.com/invarlock/invarlock/blob/main/docs/user-guide/quickstart.md>
|
|
243
|
+
- Compare & evaluate (BYOE): <https://github.com/invarlock/invarlock/blob/main/docs/user-guide/compare-and-evaluate.md>
|
|
244
|
+
- Reading a report: <https://github.com/invarlock/invarlock/blob/main/docs/user-guide/reading-report.md>
|
|
245
|
+
- CLI reference: <https://github.com/invarlock/invarlock/blob/main/docs/reference/cli.md>
|
|
246
|
+
- Assurance case: <https://github.com/invarlock/invarlock/blob/main/docs/assurance/00-safety-case.md>
|
|
247
|
+
- Threat model: <https://github.com/invarlock/invarlock/blob/main/docs/security/threat-model.md>
|
|
248
|
+
|
|
249
|
+
## Community
|
|
250
|
+
|
|
251
|
+
- Questions/ideas: <https://github.com/invarlock/invarlock/discussions>
|
|
252
|
+
- Bug reports: <https://github.com/invarlock/invarlock/issues>
|
|
253
|
+
- Contact: <mailto:support@invarlock.dev>
|
|
254
|
+
|
|
255
|
+
## Citation
|
|
256
|
+
|
|
257
|
+
If you use InvarLock in scientific work, please cite it (canonical metadata is in `CITATION.cff`):
|
|
258
|
+
|
|
259
|
+
```bibtex
|
|
260
|
+
@software{invarlock,
|
|
261
|
+
title = {InvarLock: Edit-agnostic robustness evaluation reports for weight edits},
|
|
262
|
+
author = {{InvarLock Maintainers}},
|
|
263
|
+
url = {https://github.com/invarlock/invarlock},
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
## Limitations
|
|
268
|
+
|
|
269
|
+
- InvarLock evaluates an edited model relative to a baseline under a specific configuration; results are not “global” guarantees.
|
|
270
|
+
- Not a content-safety/alignment tool.
|
|
271
|
+
- Native Windows is not supported (use WSL2 or Linux).
|
|
272
|
+
|
|
273
|
+
## Support matrix
|
|
274
|
+
|
|
275
|
+
<!-- markdownlint-disable MD060 -->
|
|
276
|
+
| Platform | Status | Notes |
|
|
277
|
+
| ---------------------- | --------------- | ----------------------------------------- |
|
|
278
|
+
| Python 3.12+ | ✅ Required | |
|
|
279
|
+
| Linux | ✅ Full | Primary dev target |
|
|
280
|
+
| macOS (Intel/M-series) | ✅ Full | MPS supported (default on Apple Silicon) |
|
|
281
|
+
| Windows | ❌ Not supported | Use WSL2 or a Linux container if required |
|
|
282
|
+
| CUDA | ✅ Recommended | For larger models |
|
|
283
|
+
| CPU | ✅ Fallback | Slower but functional |
|
|
284
|
+
<!-- markdownlint-enable MD060 -->
|
|
285
|
+
|
|
286
|
+
## Project status
|
|
287
|
+
|
|
288
|
+
InvarLock is pre‑1.0. Until 1.0, minor releases may include breaking changes. See [`CHANGELOG.md`](CHANGELOG.md).
|
|
289
|
+
|
|
290
|
+
For guidance on where to ask questions, how to report bugs, and what to expect in terms of response times, see
|
|
291
|
+
[`SUPPORT.md`](SUPPORT.md).
|
|
292
|
+
|
|
293
|
+
## Contributing
|
|
294
|
+
|
|
295
|
+
- Contributing guide: <https://github.com/invarlock/invarlock/blob/main/CONTRIBUTING.md>
|
|
296
|
+
- Fast local checks (repo clone):
|
|
297
|
+
- `make dev-install`
|
|
298
|
+
- `make test`
|
|
299
|
+
- `make lint`
|
|
300
|
+
|
|
301
|
+
## License
|
|
302
|
+
|
|
303
|
+
Apache-2.0 — see `LICENSE`.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
invarlock/__init__.py,sha256=
|
|
1
|
+
invarlock/__init__.py,sha256=fP52-66oQH_Zck6U8qJFLOoUVY7G_nxXXI04n4b0g0g,1273
|
|
2
2
|
invarlock/__main__.py,sha256=ffhoKctw89j-henmQXThbHDIdlvK9fBfsy8LpjhOEXc,146
|
|
3
3
|
invarlock/config.py,sha256=7BUOl7EW258YnsgRipjOx6lmWou5jNDzimREd35ewsQ,1725
|
|
4
|
-
invarlock/model_profile.py,sha256=
|
|
4
|
+
invarlock/model_profile.py,sha256=OooTlTpsSfAOzJlMw2TsjExXShdAVyitvaKbLebzGsw,13689
|
|
5
5
|
invarlock/model_utils.py,sha256=mEl9KOF2yOJgx-6r38PbD9SNFeAScamy9K-csxtl40Q,6395
|
|
6
6
|
invarlock/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
7
7
|
invarlock/security.py,sha256=xUjbHu-bHKUfFqDyN_21Hj00NBmAcGgnAg4JCjb0JOE,4861
|
|
@@ -11,75 +11,75 @@ invarlock/_data/runtime/profiles/ci_cpu.yaml,sha256=FE5vxeemAFWW7oRxPvp_8hIcCO8q
|
|
|
11
11
|
invarlock/_data/runtime/profiles/release.yaml,sha256=xF0Qb0OTm904U6L3wK674JMTcDPegYvpKgwUB9pfq_w,482
|
|
12
12
|
invarlock/adapters/__init__.py,sha256=wZBhjYAnD7a0ZV36EDwje6D0FGG45CIfJ41WYqUPGg0,3296
|
|
13
13
|
invarlock/adapters/_capabilities.py,sha256=FmzUR5BHsxWe92Z9W1As-G5_5wG1PvqF2sUpjZ2_CdY,1483
|
|
14
|
-
invarlock/adapters/auto.py,sha256=
|
|
14
|
+
invarlock/adapters/auto.py,sha256=7PUDCnWhW6Pi7nppIbpMTzUkaczhkBFJ7xb17eDZThs,7411
|
|
15
15
|
invarlock/adapters/base.py,sha256=szSh1bECeDSDGQSr5oIWhs5RlI587gE4gzdt5cnOJ1s,16100
|
|
16
16
|
invarlock/adapters/base_types.py,sha256=3IuHt63_RjGZqoTOdkMpfGPiZTGqcvXXDq1KU-8QemQ,1612
|
|
17
17
|
invarlock/adapters/capabilities.py,sha256=wcSUkWm0_bVMHo3CEhGxplldG8M5nrB3Uhij8cwutzY,15373
|
|
18
18
|
invarlock/adapters/hf_causal.py,sha256=N9-L-Px4dzjAP4EsnJI_od1GMBqDVJ5JReyV4MyNtjs,15139
|
|
19
19
|
invarlock/adapters/hf_causal_onnx.py,sha256=eMqLPs0aIb7v4KjY0krdgfImVRTPht1D_k9LCulXw6w,4451
|
|
20
|
-
invarlock/adapters/hf_loading.py,sha256=
|
|
21
|
-
invarlock/adapters/hf_mixin.py,sha256=
|
|
20
|
+
invarlock/adapters/hf_loading.py,sha256=iiztMDIVKi60AdlHRp9TaCOi-IRsni0p1dCeryzARsA,2694
|
|
21
|
+
invarlock/adapters/hf_mixin.py,sha256=uDRM5tPR6GhVh-fLql8sIUaBVFWl4Y4vvB0d6ms_3SY,24014
|
|
22
22
|
invarlock/adapters/hf_mlm.py,sha256=iCyiy-0aYO43d2eTM8brKeJGBhZsMkjhzGhj580oh4s,35221
|
|
23
23
|
invarlock/adapters/hf_seq2seq.py,sha256=_5jmTB0sMpXs5N1_rNJ7vpntkpj4k68Ca7tM-Iy8HPw,4796
|
|
24
24
|
invarlock/adapters/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
25
|
-
invarlock/assurance/__init__.py,sha256=
|
|
25
|
+
invarlock/assurance/__init__.py,sha256=TTvJGsysPfonfJGIW2qdl3D0_yjslpzyFR0nb70ot_Q,1192
|
|
26
26
|
invarlock/calibration/__init__.py,sha256=M5lbkNQtLBuQjQJGeRzHovkpYI87fEWIm7a0b23jSp4,110
|
|
27
|
-
invarlock/calibration/spectral_null.py,sha256=
|
|
27
|
+
invarlock/calibration/spectral_null.py,sha256=h8kmV75FICkpQPtlSmFjCsdrSPAx1Nr4i_0m9N283jU,9599
|
|
28
28
|
invarlock/calibration/variance_ve.py,sha256=QkHO2vxht-n56LNqWbHYYY106Ge5PbxzHfGV1QktnN8,4487
|
|
29
29
|
invarlock/cli/__init__.py,sha256=mRjYDVmNykhxJxfQBxJMzhFfmNhmvP6OWI-vJL-ehUA,196
|
|
30
30
|
invarlock/cli/__main__.py,sha256=spgMrx0eJQSEf4rcd0_mB2B8rHOc3iWlTFO3P_qEvoM,175
|
|
31
31
|
invarlock/cli/_evidence.py,sha256=38QMfFlPUT_qIRAZmpDROkwSIpHGiNKRWDyXfZ9xI_U,769
|
|
32
32
|
invarlock/cli/_json.py,sha256=AKrRNFza76tH3GBVHO8gSA3klUVQ9XpDo_aYh8l-7j8,2367
|
|
33
|
-
invarlock/cli/adapter_auto.py,sha256=
|
|
34
|
-
invarlock/cli/app.py,sha256=
|
|
33
|
+
invarlock/cli/adapter_auto.py,sha256=uazFcSck4f_S2fSlV-utJsuCdoCQpBPBl8KRPXkC3_k,5448
|
|
34
|
+
invarlock/cli/app.py,sha256=nWn3Ptgwa27LrwLqkbqxmoc9F2TuGIP_XyGouoalx3U,12453
|
|
35
35
|
invarlock/cli/config.py,sha256=DNCsepPCY_l0JTPUqI9QRa-cLIl8n4H2xzolXjtL7q8,14205
|
|
36
36
|
invarlock/cli/constants.py,sha256=RuXxG82pukfBnEuJB2CVF5dyu4lEi-l8eAxkR314yuk,2107
|
|
37
|
-
invarlock/cli/determinism.py,sha256=
|
|
37
|
+
invarlock/cli/determinism.py,sha256=kf7WD8bB11WWzpzdGu3j55JfPSfCK3gYYCSNVVf8jyU,8352
|
|
38
38
|
invarlock/cli/device.py,sha256=5X0j2yiZbSKX9-SlDaAbSeHCoWhfEQ74YWPTb8WRk8k,3165
|
|
39
39
|
invarlock/cli/doctor_helpers.py,sha256=3QkE4P6lrb2YQA-OC5m6K6CQEoe7PSRiSuQDYEvmRsY,2503
|
|
40
40
|
invarlock/cli/errors.py,sha256=IzFikxe5gthlZ27wrRYUiM_SJsd2Sa5onUUhjm8e2kA,189
|
|
41
41
|
invarlock/cli/output.py,sha256=lNEQ189iyV-EEsdTY4rmFcKKjq0lJuIP-gzsEIFL7BA,4883
|
|
42
42
|
invarlock/cli/overhead_utils.py,sha256=Ygvl192UDTroAbVAd7v35jgigmmfVxNkCIGYlWfh6Co,2124
|
|
43
|
-
invarlock/cli/provenance.py,sha256=
|
|
43
|
+
invarlock/cli/provenance.py,sha256=ksoAVOhMnSrPYCh0osLDEbgxKOCS1DjoXuBuZmV6m5k,1948
|
|
44
44
|
invarlock/cli/utils.py,sha256=R6IN21lGfko2lGUgspmkZyjA6Nl_dVRaP8F8nRtN5yw,1393
|
|
45
|
-
invarlock/cli/commands/__init__.py,sha256=
|
|
46
|
-
invarlock/cli/commands/calibrate.py,sha256=
|
|
47
|
-
invarlock/cli/commands/certify.py,sha256=ET56hmCkn61XpZ3hrHIrS4CG6dmjDvlkSEzgSxm8YdA,35625
|
|
45
|
+
invarlock/cli/commands/__init__.py,sha256=Nvjvw9Jo0Wq3BHBpEGZBTUnj25920hw9jZ0qm1jm6yw,715
|
|
46
|
+
invarlock/cli/commands/calibrate.py,sha256=IFWIvkwMFmXl8c0V6mY0AQ4gS9Jkl7MP96W2DFMEbMU,22663
|
|
48
47
|
invarlock/cli/commands/doctor.py,sha256=F-q5CJ2qRgCDqbaZYBRApPUy7V6E_jkgSCqZgkxlOqA,56879
|
|
49
|
-
invarlock/cli/commands/
|
|
50
|
-
invarlock/cli/commands/
|
|
48
|
+
invarlock/cli/commands/evaluate.py,sha256=eCnT9m4LzYCf5lmZd8hCvn-8CgdtXwx7CJvyMRaYRbg,36799
|
|
49
|
+
invarlock/cli/commands/explain_gates.py,sha256=wbIgCStvdu6EXy5us8QeI-6Nq6nMQRbbF3eynFDAnXc,10977
|
|
50
|
+
invarlock/cli/commands/export_html.py,sha256=v5UCbFcRrJvRFC5ek-LhZbaBTZtkmaQikg2QHZR73RA,3142
|
|
51
51
|
invarlock/cli/commands/plugins.py,sha256=VTJKTMjFO4Dh4dqcY4qlkwhsWJixyHSNk8tWBcYGyfA,53620
|
|
52
|
-
invarlock/cli/commands/report.py,sha256=
|
|
53
|
-
invarlock/cli/commands/run.py,sha256=
|
|
54
|
-
invarlock/cli/commands/verify.py,sha256=
|
|
52
|
+
invarlock/cli/commands/report.py,sha256=eL1AaV0sK8rUNlstlew_UQhDv_J6sunEblsDuk3qItA,21404
|
|
53
|
+
invarlock/cli/commands/run.py,sha256=7D2s8WM5o02n9oVsNpaVpdeBKXY812jXkNS4MZwColQ,236332
|
|
54
|
+
invarlock/cli/commands/verify.py,sha256=o8WtTaw2JZFNXb3fREhlC0eLutujDaGzqDSIXwIrtl8,51481
|
|
55
55
|
invarlock/core/__init__.py,sha256=4wb83Xv7NE5M1FgvaFUviiNtVSTVATiPH3gqavNmp2w,1490
|
|
56
56
|
invarlock/core/abi.py,sha256=gmU1F7LDd2HTcF4kcznn8vgG4zj9UCHSqhBk9jyu05k,484
|
|
57
57
|
invarlock/core/api.py,sha256=RTFswFBuUH38gary5X7qmccOD7vAYLtSN0ie8Y6p1ck,8480
|
|
58
58
|
invarlock/core/auto_tuning.py,sha256=Gj0AhpThoDYnzr9DyuXM9iCuieMKR4xv43tC7ZcjHzs,18543
|
|
59
|
-
invarlock/core/bootstrap.py,sha256=
|
|
59
|
+
invarlock/core/bootstrap.py,sha256=c4bd8GFUiL53oI7t2QVM46Ah7Tl1LbtbyQGb5VzXuWQ,10647
|
|
60
60
|
invarlock/core/checkpoint.py,sha256=a78L-mZd3j2kC1az2eTScRxTHjrULuYs-UPfWUcDgqM,6933
|
|
61
61
|
invarlock/core/contracts.py,sha256=ESK3-ErieGEf8e84wiphlCjahdr87zoKyTSskq6o23E,2468
|
|
62
62
|
invarlock/core/error_utils.py,sha256=T23-p5ONQ-SeVuMR4Ts0cWyupsSa-0DAgsejRTfxeCg,1782
|
|
63
63
|
invarlock/core/events.py,sha256=8XBAi-9A7ys7QJQwqlz8PVlfxF0TM_TvLqjcPtDwZm4,9428
|
|
64
64
|
invarlock/core/exceptions.py,sha256=b4OszJ0Fd0Ezy8s99AzprS7lAkqdZYGXaSj9fYaln4E,2077
|
|
65
65
|
invarlock/core/registry.py,sha256=hQrAqVEyDOCF88KHn80a5oMMS73_i4KTjL3Wwo08YkI,18910
|
|
66
|
-
invarlock/core/retry.py,sha256=
|
|
67
|
-
invarlock/core/runner.py,sha256=
|
|
66
|
+
invarlock/core/retry.py,sha256=gdMZRouhyjwgbSGEpwGBIqrrtRO8-jPcN50ebIwOPR0,4441
|
|
67
|
+
invarlock/core/runner.py,sha256=y0FLefuosmEFwpAmEy_Wa2mkcPUJRxPDr9J1MdPzmbM,107587
|
|
68
68
|
invarlock/core/types.py,sha256=nVLMP4yqlxwhE1moQU7FWVeGJqTuud-cvTZiutdBGKk,3585
|
|
69
69
|
invarlock/edits/__init__.py,sha256=5CJTX6oJTLj79Vmks2_8mXRGFQH0oyKaZOrBLTlRtV0,277
|
|
70
70
|
invarlock/edits/_edit_utils.py,sha256=VGl32JAt7XsovxJbX1YvW9DJvtG-K2EKu-TjBFTQmDY,6329
|
|
71
71
|
invarlock/edits/_external_utils.py,sha256=Ltaua-eNooDagPSb20wxK-QXXpHjFJaymbDIjI3ZoWY,7625
|
|
72
|
-
invarlock/edits/noop.py,sha256=
|
|
72
|
+
invarlock/edits/noop.py,sha256=RpqiZy5jZaxZ_O-aSz3FlOzo_isszZ2NDiHNNDpGBDk,1302
|
|
73
73
|
invarlock/edits/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
74
|
-
invarlock/edits/quant_rtn.py,sha256
|
|
74
|
+
invarlock/edits/quant_rtn.py,sha256=-ENk7VnJi3uSptlBmVg4jVDwwfMtWhhp0ginpc9ShQw,31663
|
|
75
75
|
invarlock/edits/registry.py,sha256=MmUfJhhvc3WxB03wQkPxFMS6nkT7YcXFPQqhbksfOUc,4523
|
|
76
|
-
invarlock/eval/__init__.py,sha256=
|
|
77
|
-
invarlock/eval/bench.py,sha256=
|
|
76
|
+
invarlock/eval/__init__.py,sha256=SDz0f1t00ZBgT5xMXblRxbW0j0ai75EimJ78ZOwgegs,756
|
|
77
|
+
invarlock/eval/bench.py,sha256=dt7-UEv5Znk_mg1JSMxIo2vLOsdPPr6EW_Sg8_OdZUk,56032
|
|
78
78
|
invarlock/eval/bench_regression.py,sha256=GDphmdcH7NI8P_afSkQAPMChEgW15J0gqTZ4Kj3kxgw,456
|
|
79
79
|
invarlock/eval/bootstrap.py,sha256=CNn7W_MY716Wa_wn6cYRmbTYB9lT2X0yLOAIHCRw29k,1766
|
|
80
80
|
invarlock/eval/data.py,sha256=WcnH9nMaEpWqsGLnVfSFIps1a_16aVw0qtpQtm0-G2c,68326
|
|
81
81
|
invarlock/eval/metrics.py,sha256=PHfsIZQpCDesj7oL_vAIDdB3nH-10qVRl6kvfRU8-u4,80789
|
|
82
|
-
invarlock/eval/primary_metric.py,sha256=
|
|
82
|
+
invarlock/eval/primary_metric.py,sha256=DxD2tTahPEInMolynMkJR2PsM915-prncmr3c08en2w,29563
|
|
83
83
|
invarlock/eval/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
84
84
|
invarlock/eval/tail_stats.py,sha256=ueScFzPvBnBC4jVW5EElnB0c3LPK3cAITcOUdyPCsEk,7114
|
|
85
85
|
invarlock/eval/probes/__init__.py,sha256=KocOJmEWrD90c2HbDW3wDsdsibRyidskpI4rNNfLbZ0,593
|
|
@@ -101,47 +101,47 @@ invarlock/guards/invariants.py,sha256=pnzjB1_2e0yD7jjySLIm_McDail_HTWpbAsGuYD2I4
|
|
|
101
101
|
invarlock/guards/policies.py,sha256=ggY0zZ3i39OAeFZJSG1FjwnR3-wjWntKLLvumBvG8pc,25933
|
|
102
102
|
invarlock/guards/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
103
103
|
invarlock/guards/rmt.py,sha256=aRMtRR7LfrjR-ZkeL_AsGb61bbBadYHhQx424WIRFVs,99878
|
|
104
|
-
invarlock/guards/spectral.py,sha256=
|
|
104
|
+
invarlock/guards/spectral.py,sha256=lJbj4X_rSB6gcZ89yohdr2795Hlw5E5LXiRRFXjRKUw,69601
|
|
105
105
|
invarlock/guards/tier_config.py,sha256=6JzS1TOlhUVX2NdUodWhb4VOA_AnAFVOXvwY9aiopbA,10796
|
|
106
106
|
invarlock/guards/variance.py,sha256=iNursnzCHbc2fd3icZ3cYG-dk4WFYqn6CKxKcKn2MJI,136385
|
|
107
107
|
invarlock/guards_ref/__init__.py,sha256=jLnyFqdqQaheG1qQMlU4Gx7R118rkkQHPqFVF3_1ih0,366
|
|
108
108
|
invarlock/guards_ref/rmt_ref.py,sha256=IfwN-l9cLExUQJhZmr-1uJv7qRSoYrGg2w2caCG53hs,1399
|
|
109
|
-
invarlock/guards_ref/spectral_ref.py,sha256=
|
|
109
|
+
invarlock/guards_ref/spectral_ref.py,sha256=UE-jHz77jmj9Qw0ScYrsLxGme5yvUh5BVDw4uy9a_l4,4384
|
|
110
110
|
invarlock/guards_ref/variance_ref.py,sha256=BmTQL5nfxReJK5SqnuUi1SOcQftK7IUNwlcxqdtGPEU,2264
|
|
111
111
|
invarlock/observability/__init__.py,sha256=_fCH1H51M0PYOvpuNq9sVQLTiDAtdQMvtnhVt-z-VPk,345
|
|
112
112
|
invarlock/observability/alerting.py,sha256=y_mReOy5KHbHhglQIoChzTl-4BZz9aaGDreLGFzhl8M,17887
|
|
113
113
|
invarlock/observability/core.py,sha256=lMsXCp5HZj3YIdfrkxRYQWpu1ib6pm8TkPab_1aKjHM,19050
|
|
114
114
|
invarlock/observability/exporters.py,sha256=bNpuN7ulQ3KQSySozJZvNHythMw2ciF54aQzZ9t2hKE,18712
|
|
115
|
-
invarlock/observability/health.py,sha256=
|
|
115
|
+
invarlock/observability/health.py,sha256=xP60MMz-uX8UDPd7l0CE5hBymKdVhnazUYMWqpxOPWc,22253
|
|
116
116
|
invarlock/observability/metrics.py,sha256=RhEz4B5zvRHAgFHukyZHGhDJDSxR3szYwk7TTFzIZTQ,19016
|
|
117
117
|
invarlock/observability/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
118
118
|
invarlock/observability/utils.py,sha256=1AC3ZEzbrDzTOvSIFxAtWlITy1BHEPZ032HKKzqK_10,16492
|
|
119
119
|
invarlock/plugins/__init__.py,sha256=aZqkpuTT0K3y0SX4702k3YpHnM3kng9fz0qO3XE43hY,260
|
|
120
120
|
invarlock/plugins/hello_guard.py,sha256=-peYJaZd52bbdw6y8cBxEd3CbtFWualDs8nX60CeXhI,896
|
|
121
121
|
invarlock/plugins/hf_awq_adapter.py,sha256=UGwzcqJyuqrYHWZ4F-vn-9LNfEDyolOgVDBi0jN35xc,3770
|
|
122
|
-
invarlock/plugins/hf_bnb_adapter.py,sha256=
|
|
122
|
+
invarlock/plugins/hf_bnb_adapter.py,sha256=sJXOIX-gIZwgIW7fYqohY7DqsZMI2fnU0ALkhm0T5nM,6715
|
|
123
123
|
invarlock/plugins/hf_gptq_adapter.py,sha256=ysugAcnjLqF5sqpijSNiim1xUpRmoIgBrG053X3S2hE,3743
|
|
124
124
|
invarlock/plugins/py.typed,sha256=LCPmZeE_vANVVJDNvuq9A07i7jg9Nxrq6f10UeuNfZc,37
|
|
125
|
-
invarlock/reporting/__init__.py,sha256=
|
|
126
|
-
invarlock/reporting/certificate.py,sha256=bE7uCWJ5foZeblq_DgMoQ9wjW_tjEC7XXBvUOAy2fLA,159511
|
|
127
|
-
invarlock/reporting/certificate_schema.py,sha256=wCBjLsWu-y1hqedQYgAmdNeSh7FkcpuGCFHGK46Wlgk,8982
|
|
125
|
+
invarlock/reporting/__init__.py,sha256=gLawo1x41oHX3jNQVC0XwnZ4iFcwez6MwdYN9SLoxnQ,534
|
|
128
126
|
invarlock/reporting/dataset_hashing.py,sha256=igDq9iMB8sqed5CEWT2fXtx9z5QAxIZ9bbs5RndDDC4,9228
|
|
129
127
|
invarlock/reporting/guards_analysis.py,sha256=Q3DhV806McbV4NVxbD-Lcw334epcQ1-zTEUF3aT8JGc,44356
|
|
130
|
-
invarlock/reporting/html.py,sha256
|
|
131
|
-
invarlock/reporting/normalizer.py,sha256=
|
|
132
|
-
invarlock/reporting/policy_utils.py,sha256=
|
|
133
|
-
invarlock/reporting/primary_metric_utils.py,sha256=
|
|
134
|
-
invarlock/reporting/render.py,sha256=
|
|
135
|
-
invarlock/reporting/report.py,sha256=
|
|
128
|
+
invarlock/reporting/html.py,sha256=UrDIXsiKEFQpxACY3637OiVyL01CkPV2bAwJ_c0cEl4,3286
|
|
129
|
+
invarlock/reporting/normalizer.py,sha256=_t7ugqmIfBqz0HSH_NgKtwByHkQI-7CyL7-CMN9ya44,8482
|
|
130
|
+
invarlock/reporting/policy_utils.py,sha256=yjUOtClY0iMreVo_r1srHFvPgb1QyQ9X6x2cQStVWEM,22937
|
|
131
|
+
invarlock/reporting/primary_metric_utils.py,sha256=Ing2LKIvgpqQQLAuB0x80J3qMd1rBJV2UrePWHZeHCo,14912
|
|
132
|
+
invarlock/reporting/render.py,sha256=zliYsn79a0s-DkaKsAdcjKBLyPTdPfS-DHGb2b3fYOs,75618
|
|
133
|
+
invarlock/reporting/report.py,sha256=2w-REyyvbeuOm6l4BIEqVf0lT1ldPWZD7N378_DDR5I,33871
|
|
134
|
+
invarlock/reporting/report_builder.py,sha256=7USKoyPTGOSObdFc24Z2iPVu6r7k6nm9hBw7rZe54Io,159978
|
|
135
|
+
invarlock/reporting/report_schema.py,sha256=yvxSbbppdhQchQCBmMcVQTszUBERQg7rrZ-4obnzafc,8902
|
|
136
136
|
invarlock/reporting/report_types.py,sha256=NcA6PkI8JJA-FbPAGT-q_QcDkRcz57ayEKHyFbqe-Rk,9211
|
|
137
137
|
invarlock/reporting/telemetry.py,sha256=1A4ZgsmT7BzaEMiG56OzCwc0dX6MKVh8TPOwyXNGSb8,2705
|
|
138
138
|
invarlock/reporting/utils.py,sha256=1aLYgSUR4XvgmhDvU9YK9ICd7W5sjft1qdsZC9JJSRY,5540
|
|
139
139
|
invarlock/reporting/validate.py,sha256=aFcac5iaaNOLMYEf6g5xoF4-a-J5E430utFLnfu6fKc,21782
|
|
140
140
|
invarlock/utils/__init__.py,sha256=DR2pBrgddLH2PW-6ninOE8CM7DNvlvgyYsCkckozbPU,4276
|
|
141
141
|
invarlock/utils/digest.py,sha256=sfnqGFRiRf7l950MjSIrWO1XbUfXlcEfNLeWFbBUr8I,1290
|
|
142
|
-
invarlock-0.3.
|
|
143
|
-
invarlock-0.3.
|
|
144
|
-
invarlock-0.3.
|
|
145
|
-
invarlock-0.3.
|
|
146
|
-
invarlock-0.3.
|
|
147
|
-
invarlock-0.3.
|
|
142
|
+
invarlock-0.3.9.dist-info/licenses/LICENSE,sha256=uFddaXYY02nEFdPpS7bam_bnm0st41BibzD0jHULPXw,10413
|
|
143
|
+
invarlock-0.3.9.dist-info/METADATA,sha256=8dJtXFFBg3tIKnIcVkIc0wsLqR-uhXAfH82MnJLoxDI,13901
|
|
144
|
+
invarlock-0.3.9.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
145
|
+
invarlock-0.3.9.dist-info/entry_points.txt,sha256=7zdvDjsIPqOGEhfQFn596IrodvkhYrkybFgQ2ywPHYQ,780
|
|
146
|
+
invarlock-0.3.9.dist-info/top_level.txt,sha256=GXfftc_YDHHcQC2vQgYbZ5cTO82YuWY3HusHMT3DuKs,10
|
|
147
|
+
invarlock-0.3.9.dist-info/RECORD,,
|