From a8ad512eec3fe564d3c97b6605b644e0e022579e Mon Sep 17 00:00:00 2001 From: pselamy Date: Sun, 14 Jun 2026 19:18:31 +0000 Subject: [PATCH] fix: ruff lint and format fixes for persist assessment Co-Authored-By: Claude Opus 4.6 --- src/polymarket_insider_tracker/config.py | 4 +++- src/polymarket_insider_tracker/pipeline.py | 10 +++------ .../storage/repos.py | 4 +--- tests/test_persist_assessment.py | 21 +++++-------------- 4 files changed, 12 insertions(+), 27 deletions(-) diff --git a/src/polymarket_insider_tracker/config.py b/src/polymarket_insider_tracker/config.py index fb6d938..bbc9f48 100644 --- a/src/polymarket_insider_tracker/config.py +++ b/src/polymarket_insider_tracker/config.py @@ -165,7 +165,9 @@ class TelegramSettings(BaseSettings): class DetectorSettings(BaseSettings): """Risk-scorer / detector tuning.""" - model_config = SettingsConfigDict(env_prefix="DETECTOR_", env_file=".env", env_file_encoding="utf-8", extra="ignore") + model_config = SettingsConfigDict( + env_prefix="DETECTOR_", env_file=".env", env_file_encoding="utf-8", extra="ignore" + ) alert_threshold: float = Field( default=0.80, diff --git a/src/polymarket_insider_tracker/pipeline.py b/src/polymarket_insider_tracker/pipeline.py index 6e48802..96a32d2 100644 --- a/src/polymarket_insider_tracker/pipeline.py +++ b/src/polymarket_insider_tracker/pipeline.py @@ -537,7 +537,7 @@ class Pipeline: result.success_count + result.failure_count, ) - async def _persist_assessment(self, assessment: "RiskAssessment") -> None: + async def _persist_assessment(self, assessment: RiskAssessment) -> None: """Write the assessment row. Best-effort; never raises.""" if not self._db_manager: return @@ -574,9 +574,7 @@ class Pipeline: volume_impact=( _D(str(round(size_sig.volume_impact, 4))) if size_sig is not None else None ), - book_impact=( - _D(str(round(size_sig.book_impact, 4))) if size_sig is not None else None - ), + book_impact=(_D(str(round(size_sig.book_impact, 4))) if size_sig is not None else None), wallet_age_hours=wallet_age, should_alert=assessment.should_alert, threshold_at_eval=_D(str(round(self._settings.detector.alert_threshold, 3))), @@ -586,9 +584,7 @@ class Pipeline: repo = RiskAssessmentRepository(session) await repo.insert(dto) except Exception as e: - logger.warning( - "Failed to persist risk assessment %s: %s", assessment.assessment_id, e - ) + logger.warning("Failed to persist risk assessment %s: %s", assessment.assessment_id, e) async def run(self) -> None: """Start the pipeline and run until interrupted. diff --git a/src/polymarket_insider_tracker/storage/repos.py b/src/polymarket_insider_tracker/storage/repos.py index 65ad6d6..2c5e8df 100644 --- a/src/polymarket_insider_tracker/storage/repos.py +++ b/src/polymarket_insider_tracker/storage/repos.py @@ -585,9 +585,7 @@ class RiskAssessmentRepository: async def get_by_assessment_id(self, assessment_id: str) -> RiskAssessmentDTO | None: result = await self.session.execute( - select(RiskAssessmentModel).where( - RiskAssessmentModel.assessment_id == assessment_id - ) + select(RiskAssessmentModel).where(RiskAssessmentModel.assessment_id == assessment_id) ) model = result.scalar_one_or_none() if model is None: diff --git a/tests/test_persist_assessment.py b/tests/test_persist_assessment.py index 9fd25bc..8a7e4d7 100644 --- a/tests/test_persist_assessment.py +++ b/tests/test_persist_assessment.py @@ -24,7 +24,6 @@ from polymarket_insider_tracker.pipeline import Pipeline from polymarket_insider_tracker.storage.database import DatabaseManager from polymarket_insider_tracker.storage.models import Base, RiskAssessmentModel - # --------------------------------------------------------------------------- # Fixtures # --------------------------------------------------------------------------- @@ -63,9 +62,7 @@ async def db_manager(async_engine): manager._sync_engine = None manager._async_engine = async_engine manager._sync_session_factory = None - manager._async_session_factory = async_sessionmaker( - bind=async_engine, expire_on_commit=False - ) + manager._async_session_factory = async_sessionmaker(bind=async_engine, expire_on_commit=False) return manager @@ -139,9 +136,7 @@ class TestPersistAssessment: ): """Assessments with should_alert=False must still hit the DB; no dispatch.""" assessment = _make_assessment(sample_trade, should_alert=False, score=0.45) - pipeline = _build_pipeline( - mock_settings, db_manager=db_manager, assessment=assessment - ) + pipeline = _build_pipeline(mock_settings, db_manager=db_manager, assessment=assessment) await pipeline._score_and_alert(SignalBundle(trade_event=sample_trade)) @@ -160,21 +155,15 @@ class TestPersistAssessment: assert pipeline.stats.alerts_sent == 0 @pytest.mark.asyncio - async def test_persistence_failure_does_not_block_dispatch( - self, mock_settings, sample_trade - ): + async def test_persistence_failure_does_not_block_dispatch(self, mock_settings, sample_trade): """If repo.insert blows up, the alert pipeline still ships the alert.""" assessment = _make_assessment(sample_trade, should_alert=True, score=0.92) # db_manager whose get_async_session raises -> _persist_assessment swallows it broken_db = MagicMock() - broken_db.get_async_session = MagicMock( - side_effect=RuntimeError("DB connection failed") - ) + broken_db.get_async_session = MagicMock(side_effect=RuntimeError("DB connection failed")) - pipeline = _build_pipeline( - mock_settings, db_manager=broken_db, assessment=assessment - ) + pipeline = _build_pipeline(mock_settings, db_manager=broken_db, assessment=assessment) await pipeline._score_and_alert(SignalBundle(trade_event=sample_trade))