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.
Files changed (18) hide show
  1. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/PKG-INFO +1 -1
  2. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris/__init__.py +1 -1
  3. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris/scan.py +8 -4
  4. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/PKG-INFO +1 -1
  5. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/pyproject.toml +1 -1
  6. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/tests/test_scan.py +16 -0
  7. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/README.md +0 -0
  8. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris/_telemetry.py +0 -0
  9. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris/_telemetry_config.py +0 -0
  10. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris/hitl.py +0 -0
  11. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_sdk/__init__.py +0 -0
  12. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_sdk/scan.py +0 -0
  13. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/SOURCES.txt +0 -0
  14. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/dependency_links.txt +0 -0
  15. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/requires.txt +0 -0
  16. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/iris_security_sdk.egg-info/top_level.txt +0 -0
  17. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/setup.cfg +0 -0
  18. {iris_security_sdk-0.2.18 → iris_security_sdk-0.2.19}/tests/test_telemetry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-security-sdk
3
- Version: 0.2.18
3
+ Version: 0.2.19
4
4
  Summary: IRIS — AI Agent Governance SDK. Govern AI agents locally.
5
5
  Author-email: Gilbert Martin <gilbert@iris-security.io>
6
6
  License: Apache-2.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.18"
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/fixtures (fake ssns,
121
- demo passport.yaml content, etc.) to exercise detection logic itself —
122
- that sample data isn't evidence the workload actually handles it."""
123
- if any(part in {"tests", "test"} for part in path.parts):
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")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: iris-security-sdk
3
- Version: 0.2.18
3
+ Version: 0.2.19
4
4
  Summary: IRIS — AI Agent Governance SDK. Govern AI agents locally.
5
5
  Author-email: Gilbert Martin <gilbert@iris-security.io>
6
6
  License: Apache-2.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "iris-security-sdk"
7
- version = "0.2.18"
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"] == []