iris-security-sdk 0.2.18__tar.gz → 0.2.19__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.
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/PKG-INFO +1 -1
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris/__init__.py +1 -1
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris/scan.py +8 -4
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/PKG-INFO +1 -1
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/pyproject.toml +1 -1
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/tests/test_scan.py +16 -0
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/README.md +0 -0
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris/_telemetry.py +0 -0
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris/_telemetry_config.py +0 -0
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris/hitl.py +0 -0
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_sdk/__init__.py +0 -0
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_sdk/scan.py +0 -0
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/SOURCES.txt +0 -0
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/dependency_links.txt +0 -0
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/requires.txt +0 -0
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/top_level.txt +0 -0
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/setup.cfg +0 -0
- {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/tests/test_telemetry.py +0 -0
|
@@ -47,7 +47,7 @@ from iris_core.evidence.vault import EvidenceVault
|
|
|
47
47
|
from iris_core.cost.tracker import CostSummary, CostTracker, CostEntry
|
|
48
48
|
from iris_core.cost.pricing import PricingRegistry
|
|
49
49
|
|
|
50
|
-
__version__ = "0.2.
|
|
50
|
+
__version__ = "0.2.19"
|
|
51
51
|
|
|
52
52
|
AARM_ALIGNMENT = "designed-toward" # AARM R1–R9 partial; not Core conformant
|
|
53
53
|
AARM_VERSION = "1.0"
|
|
@@ -116,11 +116,15 @@ def _iter_source_files(root: Path) -> list[Path]:
|
|
|
116
116
|
return files
|
|
117
117
|
|
|
118
118
|
|
|
119
|
+
_NON_WORKLOAD_DIR_NAMES = {"tests", "test", "demo", "demos", "examples", "example", "samples", "sample"}
|
|
120
|
+
|
|
121
|
+
|
|
119
122
|
def _is_test_file(path: Path) -> bool:
|
|
120
|
-
"""Test suites routinely embed sample field names
|
|
121
|
-
|
|
122
|
-
that sample data isn't
|
|
123
|
-
|
|
123
|
+
"""Test suites and demo/example trees routinely embed sample field names
|
|
124
|
+
and fixtures (fake ssns, illustrative "ungoverned agent" code, etc.) to
|
|
125
|
+
exercise detection logic or teach a concept — that sample data isn't
|
|
126
|
+
evidence this workload itself handles it."""
|
|
127
|
+
if any(part in _NON_WORKLOAD_DIR_NAMES for part in path.parts):
|
|
124
128
|
return True
|
|
125
129
|
stem = path.stem
|
|
126
130
|
return stem.startswith("test_") or stem.endswith("_test")
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "iris-security-sdk"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.19"
|
|
8
8
|
description = "IRIS — AI Agent Governance SDK. Govern AI agents locally."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
authors = [{ name = "Gilbert Martin", email = "gilbert@iris-security.io" }]
|
|
@@ -123,3 +123,19 @@ def test_detect_workload_skips_data_category_matches_in_test_files(tmp_path: Pat
|
|
|
123
123
|
)
|
|
124
124
|
profile = detect_workload(str(tmp_path))
|
|
125
125
|
assert profile["data_categories"] == []
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def test_detect_workload_skips_data_category_matches_in_demo_files(tmp_path: Path):
|
|
129
|
+
"""Regression for the public iris-sdk repo's bundled demo/ tree: it
|
|
130
|
+
intentionally simulates an "ungoverned agent" with realistic-looking
|
|
131
|
+
field names to teach a sales demo — that's not evidence the SDK itself
|
|
132
|
+
handles real customer PII/PHI."""
|
|
133
|
+
demo_dir = tmp_path / "demo" / "customers" / "meridian_health" / "agents"
|
|
134
|
+
demo_dir.mkdir(parents=True)
|
|
135
|
+
(demo_dir / "patient_summarizer.py").write_text(
|
|
136
|
+
'def summarize_patient_record(patient_id: str, record: dict) -> str:\n'
|
|
137
|
+
' return record.get("ssn")\n',
|
|
138
|
+
encoding="utf-8",
|
|
139
|
+
)
|
|
140
|
+
profile = detect_workload(str(tmp_path))
|
|
141
|
+
assert profile["data_categories"] == []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/requires.txt
RENAMED
|
File without changes
|
{iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|