mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-08-29 04:26:20 +00:00
test: strengthen KG provenance coverage and avoid duplicate deprecation warnings
This commit is contained in:
@@ -137,6 +137,14 @@ class ProvenanceTracker:
|
||||
DeprecationWarning,
|
||||
stacklevel=2,
|
||||
)
|
||||
return self._revision_history_no_warn(fact_id)
|
||||
|
||||
def _revision_history_no_warn(self, fact_id: str) -> List[Dict[str, Any]]:
|
||||
"""Internal, warning-free implementation of revision_history().
|
||||
|
||||
Used by other deprecated methods (e.g. export_audit_log()) that need
|
||||
this logic without emitting a second DeprecationWarning per call.
|
||||
"""
|
||||
records = self._records.get(fact_id, [])
|
||||
if not records:
|
||||
return []
|
||||
@@ -186,7 +194,7 @@ class ProvenanceTracker:
|
||||
)
|
||||
rows = []
|
||||
for fact_id in fact_ids:
|
||||
for entry in self.revision_history(fact_id):
|
||||
for entry in self._revision_history_no_warn(fact_id):
|
||||
rows.append({"fact_id": fact_id, **entry})
|
||||
|
||||
if format == "json":
|
||||
|
||||
@@ -60,11 +60,18 @@ class TestKGModule:
|
||||
assert tracker is not None
|
||||
|
||||
# Test basic functionality
|
||||
tracker.track_entity("test_entity", source="test_source")
|
||||
# NOTE: tracker.get_lineage() was never implemented on
|
||||
# kg.ProvenanceTracker; this tested an intended unified-backend
|
||||
# migration that never happened (#744). ProvenanceTracker is now
|
||||
# deprecated in favor of semantica.provenance.ProvenanceManager.
|
||||
# Instead, verify the observable behavior of the still-supported
|
||||
# track_entity()/get_all_sources() pair.
|
||||
tracker.track_entity("test_entity", source="test_source")
|
||||
sources = tracker.get_all_sources("test_entity")
|
||||
assert len(sources) > 0
|
||||
last_entry = sources[-1]
|
||||
assert last_entry["source"] == "test_source"
|
||||
assert "recorded_at" in last_entry
|
||||
|
||||
# NOTE: test_kg_uses_unified_backend removed; it only asserted the
|
||||
# presence of _use_unified/_unified_manager attributes, which were
|
||||
@@ -402,7 +409,14 @@ class TestCrossModuleIntegration:
|
||||
"""Test provenance tracking across multiple modules."""
|
||||
|
||||
def test_kg_and_split_integration(self):
|
||||
"""Test provenance tracking between kg and split modules."""
|
||||
"""Test provenance tracking between kg and split modules.
|
||||
|
||||
NOTE: this no longer asserts kg.ProvenanceTracker uses a unified
|
||||
backend (kg_tracker.get_lineage() was never implemented; see #744).
|
||||
It instead verifies, independent of unified-backend behavior, that
|
||||
kg tracking actually produced a record via the still-supported
|
||||
track_entity()/get_all_sources() pair.
|
||||
"""
|
||||
from semantica.kg import ProvenanceTracker as KGTracker
|
||||
from semantica.split import ProvenanceTracker as SplitTracker
|
||||
from semantica.split.semantic_chunker import Chunk
|
||||
@@ -410,10 +424,13 @@ class TestCrossModuleIntegration:
|
||||
# Track with kg
|
||||
kg_tracker = KGTracker()
|
||||
kg_tracker.track_entity("entity_1", source="doc_1")
|
||||
# NOTE: kg_tracker.get_lineage() was never implemented on
|
||||
# kg.ProvenanceTracker; this tested an intended unified-backend
|
||||
# migration that never happened (#744). ProvenanceTracker is now
|
||||
# deprecated in favor of semantica.provenance.ProvenanceManager.
|
||||
|
||||
# Verify kg tracking produced a record
|
||||
kg_sources = kg_tracker.get_all_sources("entity_1")
|
||||
assert len(kg_sources) > 0
|
||||
last_kg_entry = kg_sources[-1]
|
||||
assert last_kg_entry["source"] == "doc_1"
|
||||
assert "recorded_at" in last_kg_entry
|
||||
|
||||
# Track with split
|
||||
split_tracker = SplitTracker()
|
||||
|
||||
@@ -15,16 +15,26 @@ class TestKGProvenanceBackwardCompat:
|
||||
"""Test kg.ProvenanceTracker backward compatibility."""
|
||||
|
||||
def test_existing_code_unchanged(self):
|
||||
"""Test that existing kg.ProvenanceTracker code works unchanged."""
|
||||
"""Test that existing kg.ProvenanceTracker code works unchanged.
|
||||
|
||||
NOTE: this no longer asserts on tracker.get_lineage(), which was
|
||||
never implemented on kg.ProvenanceTracker (see #744). It instead
|
||||
verifies the observable behavior of the still-supported
|
||||
track_entity()/get_all_sources() pair.
|
||||
"""
|
||||
# Existing code pattern
|
||||
tracker = KGProvenanceTracker()
|
||||
|
||||
# Track entity (existing API)
|
||||
tracker.track_entity("entity_1", source="doc_1", metadata={"confidence": 0.9})
|
||||
# NOTE: tracker.get_lineage() was never implemented on
|
||||
# kg.ProvenanceTracker; this tested an intended unified-backend
|
||||
# migration that never happened (#744). ProvenanceTracker is now
|
||||
# deprecated in favor of semantica.provenance.ProvenanceManager.
|
||||
|
||||
# Verify the entity was actually tracked
|
||||
sources = tracker.get_all_sources("entity_1")
|
||||
assert len(sources) > 0
|
||||
last_entry = sources[-1]
|
||||
assert last_entry["source"] == "doc_1"
|
||||
assert "recorded_at" in last_entry
|
||||
assert last_entry["confidence"] == 0.9
|
||||
|
||||
# NOTE: test_track_relationship_unchanged removed; it only exercised
|
||||
# tracker.track_relationship(), which was never implemented on
|
||||
|
||||
@@ -31,16 +31,25 @@ class TestEndToEndProvenance:
|
||||
assert entity_prov is not None
|
||||
assert chunk_prov is not None
|
||||
|
||||
def test_kg_to_unified_integration(self):
|
||||
"""Test kg.ProvenanceTracker uses unified backend."""
|
||||
def test_kg_tracker_records_provenance(self):
|
||||
"""Test kg.ProvenanceTracker records provenance via its supported API.
|
||||
|
||||
NOTE: this no longer asserts kg.ProvenanceTracker uses a unified
|
||||
backend (kg_tracker.get_lineage() was never implemented; see #744).
|
||||
It instead verifies the observable behavior of the still-supported
|
||||
track_entity()/get_all_sources() pair.
|
||||
"""
|
||||
kg_tracker = KGTracker()
|
||||
|
||||
# Track with kg tracker
|
||||
kg_tracker.track_entity("kg_entity_1", source="kg_doc_1")
|
||||
# NOTE: kg_tracker.get_lineage() was never implemented on
|
||||
# kg.ProvenanceTracker; this tested an intended unified-backend
|
||||
# migration that never happened (#744). ProvenanceTracker is now
|
||||
# deprecated in favor of semantica.provenance.ProvenanceManager.
|
||||
|
||||
# Verify it was tracked
|
||||
sources = kg_tracker.get_all_sources("kg_entity_1")
|
||||
assert len(sources) > 0
|
||||
last_entry = sources[-1]
|
||||
assert last_entry["source"] == "kg_doc_1"
|
||||
assert "recorded_at" in last_entry
|
||||
|
||||
def test_split_to_unified_integration(self):
|
||||
"""Test split.ProvenanceTracker uses unified backend."""
|
||||
|
||||
Reference in New Issue
Block a user