fix: all imports updated to cortex.xxx namespace — 405 tests green
Some checks failed
Tests / test (push) Failing after 5s
Some checks failed
Tests / test (push) Failing after 5s
- Fixed bare 'from governance.' imports in source + tests - Fixed bare 'from intelligence.' imports in tests - Fixed mock.patch targets to use full cortex.xxx paths - All 405 tests passing
This commit is contained in:
parent
fd7d75c0ed
commit
c5e5ce9dc0
12 changed files with 41 additions and 41 deletions
|
|
@ -45,20 +45,20 @@ def _build_context(args: argparse.Namespace) -> dict:
|
|||
|
||||
|
||||
def _get_engine():
|
||||
from governance.policy import PolicyEngine
|
||||
from cortex.governance.policy import PolicyEngine
|
||||
return PolicyEngine(policies_dir=DEFAULT_POLICIES_DIR)
|
||||
|
||||
|
||||
def _get_scorer():
|
||||
from governance.risk_scorer import RiskScorer
|
||||
from cortex.governance.risk_scorer import RiskScorer
|
||||
return RiskScorer()
|
||||
|
||||
|
||||
def _get_enforcer():
|
||||
from governance.enforcer import Enforcer
|
||||
from governance.policy import PolicyEngine
|
||||
from governance.risk_scorer import RiskScorer
|
||||
from governance.evidence import EvidenceCollector, ControlMapping
|
||||
from cortex.governance.enforcer import Enforcer
|
||||
from cortex.governance.policy import PolicyEngine
|
||||
from cortex.governance.risk_scorer import RiskScorer
|
||||
from cortex.governance.evidence import EvidenceCollector, ControlMapping
|
||||
|
||||
return Enforcer(
|
||||
policy_engine=PolicyEngine(policies_dir=DEFAULT_POLICIES_DIR),
|
||||
|
|
@ -150,8 +150,8 @@ def cmd_status(args: argparse.Namespace) -> None:
|
|||
|
||||
def cmd_report(args: argparse.Namespace) -> None:
|
||||
"""Generate compliance report (placeholder — needs live evidence)."""
|
||||
from governance.evidence import EvidenceCollector, ControlMapping
|
||||
from governance.report_generator import ReportGenerator
|
||||
from cortex.governance.evidence import EvidenceCollector, ControlMapping
|
||||
from cortex.governance.report_generator import ReportGenerator
|
||||
|
||||
collector = EvidenceCollector(
|
||||
control_mapping=ControlMapping(DEFAULT_CONTROLS_MAPPING)
|
||||
|
|
|
|||
|
|
@ -10,9 +10,9 @@ import logging
|
|||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
from governance.evidence import EvidenceCollector
|
||||
from governance.policy import PolicyEngine
|
||||
from governance.risk_scorer import RiskResult, RiskScorer
|
||||
from cortex.governance.evidence import EvidenceCollector
|
||||
from cortex.governance.policy import PolicyEngine
|
||||
from cortex.governance.risk_scorer import RiskResult, RiskScorer
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ from dataclasses import dataclass
|
|||
from datetime import datetime, timezone
|
||||
from typing import Any
|
||||
|
||||
from governance.evidence import EvidenceCollector, EvidenceRecord
|
||||
from cortex.governance.evidence import EvidenceCollector, EvidenceRecord
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,10 @@ import pytest
|
|||
|
||||
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core"))
|
||||
|
||||
from governance.enforcer import Enforcer, Decision
|
||||
from governance.policy import PolicyEngine
|
||||
from governance.risk_scorer import RiskScorer
|
||||
from governance.evidence import EvidenceCollector, ControlMapping
|
||||
from cortex.governance.enforcer import Enforcer, Decision
|
||||
from cortex.governance.policy import PolicyEngine
|
||||
from cortex.governance.risk_scorer import RiskScorer
|
||||
from cortex.governance.evidence import EvidenceCollector, ControlMapping
|
||||
|
||||
|
||||
def _make_enforcer(tmp_path, rules=None):
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import pytest
|
|||
|
||||
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core"))
|
||||
|
||||
from governance.evidence import EvidenceCollector, EvidenceRecord, ControlMapping
|
||||
from cortex.governance.evidence import EvidenceCollector, EvidenceRecord, ControlMapping
|
||||
|
||||
|
||||
class TestControlMapping:
|
||||
|
|
|
|||
|
|
@ -6,8 +6,8 @@ from pathlib import Path
|
|||
|
||||
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core"))
|
||||
|
||||
from governance.evidence import EvidenceCollector, ControlMapping
|
||||
from governance.report_generator import ReportGenerator
|
||||
from cortex.governance.evidence import EvidenceCollector, ControlMapping
|
||||
from cortex.governance.report_generator import ReportGenerator
|
||||
|
||||
|
||||
class TestReportGenerator:
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ from pathlib import Path
|
|||
|
||||
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core"))
|
||||
|
||||
from governance.risk_scorer import RiskScorer, RiskResult, _classify_level
|
||||
from cortex.governance.risk_scorer import RiskScorer, RiskResult, _classify_level
|
||||
|
||||
|
||||
class TestClassifyLevel:
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ from unittest.mock import patch, MagicMock
|
|||
|
||||
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core" / "intelligence"))
|
||||
|
||||
import knowledge_cleanup as kc
|
||||
import cortex.intelligence.knowledge_cleanup as kc
|
||||
|
||||
|
||||
class TestBackup:
|
||||
|
|
@ -107,28 +107,28 @@ class TestScoreRelationships:
|
|||
|
||||
|
||||
class TestClassifyUnknowns:
|
||||
@patch("knowledge_cleanup.ollama_generate")
|
||||
@patch("cortex.intelligence.knowledge_cleanup.ollama_generate")
|
||||
def test_no_unknowns(self, mock_ollama):
|
||||
entities = {"albert": {"type": "person"}}
|
||||
result = kc.classify_unknowns(entities, dry_run=False)
|
||||
mock_ollama.assert_not_called()
|
||||
assert result == entities
|
||||
|
||||
@patch("knowledge_cleanup.ollama_generate")
|
||||
@patch("cortex.intelligence.knowledge_cleanup.ollama_generate")
|
||||
def test_classifies_unknowns(self, mock_ollama):
|
||||
mock_ollama.return_value = '{"1": "person"}'
|
||||
entities = {"albert": {"type": "unknown"}}
|
||||
result = kc.classify_unknowns(entities, dry_run=False)
|
||||
assert result["albert"]["type"] == "person"
|
||||
|
||||
@patch("knowledge_cleanup.ollama_generate")
|
||||
@patch("cortex.intelligence.knowledge_cleanup.ollama_generate")
|
||||
def test_dry_run_no_change(self, mock_ollama):
|
||||
mock_ollama.return_value = '{"1": "person"}'
|
||||
entities = {"albert": {"type": "unknown"}}
|
||||
result = kc.classify_unknowns(entities, dry_run=True)
|
||||
assert result["albert"]["type"] == "unknown"
|
||||
|
||||
@patch("knowledge_cleanup.ollama_generate")
|
||||
@patch("cortex.intelligence.knowledge_cleanup.ollama_generate")
|
||||
def test_handles_llm_failure(self, mock_ollama):
|
||||
mock_ollama.side_effect = Exception("timeout")
|
||||
entities = {"albert": {"type": "unknown"}}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ from unittest.mock import patch
|
|||
|
||||
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core"))
|
||||
|
||||
from knowledge_extractor import importance_heuristic, parse_since
|
||||
from cortex.knowledge_extractor import importance_heuristic, parse_since
|
||||
|
||||
|
||||
class TestImportanceHeuristic:
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ from unittest.mock import patch, MagicMock
|
|||
|
||||
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core" / "intelligence"))
|
||||
|
||||
from llm_extractor import (
|
||||
from cortex.intelligence.llm_extractor import (
|
||||
_parse_json_response,
|
||||
_normalize_entities,
|
||||
extract_entities_llm,
|
||||
|
|
@ -83,26 +83,26 @@ class TestNormalizeEntities:
|
|||
|
||||
|
||||
class TestExtractEntitiesLlm:
|
||||
@patch("llm_extractor._call_ollama")
|
||||
@patch("cortex.intelligence.llm_extractor._call_ollama")
|
||||
def test_empty_text(self, mock_ollama):
|
||||
assert extract_entities_llm("") == {}
|
||||
assert extract_entities_llm("short") == {}
|
||||
mock_ollama.assert_not_called()
|
||||
|
||||
@patch("llm_extractor._call_ollama")
|
||||
@patch("cortex.intelligence.llm_extractor._call_ollama")
|
||||
def test_ollama_unavailable(self, mock_ollama):
|
||||
mock_ollama.return_value = None
|
||||
result = extract_entities_llm("This is a test about Albert and Mondo Gate AG")
|
||||
assert result is None # signals fallback
|
||||
|
||||
@patch("llm_extractor._call_ollama")
|
||||
@patch("cortex.intelligence.llm_extractor._call_ollama")
|
||||
def test_successful_extraction(self, mock_ollama):
|
||||
mock_ollama.return_value = '{"albert": {"type": "person", "context": "mentioned"}}'
|
||||
result = extract_entities_llm("Albert discussed the project with the team members today")
|
||||
assert "albert" in result
|
||||
assert result["albert"]["type"] == "person"
|
||||
|
||||
@patch("llm_extractor._call_ollama")
|
||||
@patch("cortex.intelligence.llm_extractor._call_ollama")
|
||||
def test_truncates_long_text(self, mock_ollama):
|
||||
mock_ollama.return_value = "{}"
|
||||
extract_entities_llm("x" * 3000)
|
||||
|
|
@ -112,19 +112,19 @@ class TestExtractEntitiesLlm:
|
|||
|
||||
|
||||
class TestExtractEntitiesLlmBatch:
|
||||
@patch("llm_extractor._call_ollama")
|
||||
@patch("cortex.intelligence.llm_extractor._call_ollama")
|
||||
def test_empty_list(self, mock_ollama):
|
||||
assert extract_entities_llm_batch([]) == {}
|
||||
mock_ollama.assert_not_called()
|
||||
|
||||
@patch("llm_extractor._call_ollama")
|
||||
@patch("cortex.intelligence.llm_extractor._call_ollama")
|
||||
def test_filters_short_texts(self, mock_ollama):
|
||||
mock_ollama.return_value = "{}"
|
||||
result = extract_entities_llm_batch(["hi", "yo", ""])
|
||||
assert result == {}
|
||||
mock_ollama.assert_not_called()
|
||||
|
||||
@patch("llm_extractor._call_ollama")
|
||||
@patch("cortex.intelligence.llm_extractor._call_ollama")
|
||||
def test_batch_extraction(self, mock_ollama):
|
||||
mock_ollama.return_value = '{"python": {"type": "technology", "context": "language"}}'
|
||||
result = extract_entities_llm_batch(["Python is a great programming language for data science"])
|
||||
|
|
@ -132,7 +132,7 @@ class TestExtractEntitiesLlmBatch:
|
|||
|
||||
|
||||
class TestIsAvailable:
|
||||
@patch("llm_extractor.urllib.request.urlopen")
|
||||
@patch("cortex.intelligence.llm_extractor.urllib.request.urlopen")
|
||||
def test_available(self, mock_urlopen):
|
||||
mock_resp = MagicMock()
|
||||
mock_resp.status = 200
|
||||
|
|
@ -141,7 +141,7 @@ class TestIsAvailable:
|
|||
mock_urlopen.return_value = mock_resp
|
||||
assert is_available() is True
|
||||
|
||||
@patch("llm_extractor.urllib.request.urlopen")
|
||||
@patch("cortex.intelligence.llm_extractor.urllib.request.urlopen")
|
||||
def test_unavailable(self, mock_urlopen):
|
||||
mock_urlopen.side_effect = Exception("connection refused")
|
||||
assert is_available() is False
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ from unittest.mock import patch, MagicMock
|
|||
|
||||
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core" / "intelligence"))
|
||||
|
||||
import loop as darkplex_loop
|
||||
import cortex.intelligence.loop as darkplex_loop
|
||||
|
||||
|
||||
class TestImportance:
|
||||
|
|
@ -101,19 +101,19 @@ class TestLoopState:
|
|||
|
||||
|
||||
class TestCheckNewEvents:
|
||||
@patch("loop.subprocess.run")
|
||||
@patch("cortex.intelligence.loop.subprocess.run")
|
||||
def test_returns_pending(self, mock_run):
|
||||
mock_run.return_value = MagicMock(
|
||||
returncode=0, stdout=json.dumps({"num_pending": 42})
|
||||
)
|
||||
assert darkplex_loop.check_new_events() == 42
|
||||
|
||||
@patch("loop.subprocess.run")
|
||||
@patch("cortex.intelligence.loop.subprocess.run")
|
||||
def test_returns_negative_on_failure(self, mock_run):
|
||||
mock_run.return_value = MagicMock(returncode=1, stdout="")
|
||||
assert darkplex_loop.check_new_events() == -1
|
||||
|
||||
@patch("loop.subprocess.run")
|
||||
@patch("cortex.intelligence.loop.subprocess.run")
|
||||
def test_handles_exception(self, mock_run):
|
||||
mock_run.side_effect = Exception("nats not found")
|
||||
assert darkplex_loop.check_new_events() == -1
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ import pytest
|
|||
|
||||
sys.path.insert(0, str(Path.home() / "repos" / "darkplex-core" / "intelligence"))
|
||||
|
||||
from temporal import TemporalEntry, TemporalQuery, TemporalContext
|
||||
from cortex.intelligence.temporal import TemporalEntry, TemporalQuery, TemporalContext
|
||||
|
||||
|
||||
class TestTemporalEntry:
|
||||
|
|
|
|||
Loading…
Reference in a new issue