/app/app/workers/recompute.py.before-sl001-20260910-105051:349:def recompute_security(db: Session, security_id: str, peer_metric_values: dict | None = None, /app/app/workers/recompute.py.before-sl001-20260910-105051:680:@celery_app.task(name="app.workers.recompute.recompute_security_task") /app/app/workers/recompute.py.before-sl001-20260910-105051:681:def recompute_security_task(security_id: str) -> None: /app/app/workers/recompute.py.before-sl001-20260910-105051:684: This task previously called `recompute_security(db, security_id)` with no peer universe, and /app/app/workers/recompute.py.before-sl001-20260910-105051:705: recompute_security( /app/app/workers/recompute.py.before-sl001:349:def recompute_security(db: Session, security_id: str, peer_metric_values: dict | None = None, /app/app/workers/recompute.py.before-sl001:680:@celery_app.task(name="app.workers.recompute.recompute_security_task") /app/app/workers/recompute.py.before-sl001:681:def recompute_security_task(security_id: str) -> None: /app/app/workers/recompute.py.before-sl001:684: This task previously called `recompute_security(db, security_id)` with no peer universe, and /app/app/workers/recompute.py.before-sl001:705: recompute_security( /app/app/workers/peer_groups.py:5:referred to as "not yet implemented" — `recompute_security()`'s docstring even names this exact /app/app/workers/peer_groups.py:116: """The `peer_metric_values` dict `recompute_security()` takes, for one security. /app/app/workers/peer_groups.py:168: `recompute_security()` is what writes `metrics` rows. On a cold database — or after a schema /app/app/workers/peer_groups.py:176: `recompute_security()` into a metrics phase and a scoring phase so the universe can be built /app/app/workers/peer_groups.py:181: Recomputing securities one at a time via `recompute_security_task` also works and now gets /app/app/workers/peer_groups.py:186: from app.workers.recompute import recompute_security /app/app/workers/peer_groups.py:204: recompute_security( /app/app/workers/recompute.py:363:def recompute_security(db: Session, security_id: str, peer_metric_values: dict | None = None, /app/app/workers/recompute.py:694:@celery_app.task(name="app.workers.recompute.recompute_security_task") /app/app/workers/recompute.py:695:def recompute_security_task(security_id: str) -> None: /app/app/workers/recompute.py:698: This task previously called `recompute_security(db, security_id)` with no peer universe, and /app/app/workers/recompute.py:719: recompute_security( /app/app/workers/recompute.py.before-sl001-exact:349:def recompute_security(db: Session, security_id: str, peer_metric_values: dict | None = None, /app/app/workers/recompute.py.before-sl001-exact:680:@celery_app.task(name="app.workers.recompute.recompute_security_task") /app/app/workers/recompute.py.before-sl001-exact:681:def recompute_security_task(security_id: str) -> None: /app/app/workers/recompute.py.before-sl001-exact:684: This task previously called `recompute_security(db, security_id)` with no peer universe, and /app/app/workers/recompute.py.before-sl001-exact:705: recompute_security( /app/app/workers/ingest.py.before-sl004-20260910-181036:11:AUDIT_PROVIDER_RESILIENCE.md's finding). `ingest_security()` now optionally accepts a /app/app/workers/ingest.py.before-sl004-20260910-181036:356:def ingest_security(db: Session, adapter: ProviderAdapter, ticker: str, /app/app/workers/ingest.py.before-sl004-20260910-181036:579: name="app.workers.ingest.ingest_security_task", /app/app/workers/ingest.py.before-sl004-20260910-181036:587:def ingest_security_task(self, ticker: str, provider_name: str) -> str: /app/app/workers/ingest.py.before-sl004-20260910-181036:599: # a no-op -- ingest_security() below then runs exactly the single-source path it always has. /app/app/workers/ingest.py.before-sl004-20260910-181036:605: security_id = ingest_security( /app/app/workers/ingest.py.before-sl004-20260910-181036:619: from app.workers.recompute import recompute_security_task /app/app/workers/ingest.py.before-sl004-20260910-181036:620: recompute_security_task.delay(security_id) /app/app/workers/ingest.py.before-sl004-20260910-181036:632: ingest_security_task.delay(ticker, provider_name or settings.PROVIDER_PRIMARY) /app/app/workers/ingest.py:11:AUDIT_PROVIDER_RESILIENCE.md's finding). `ingest_security()` now optionally accepts a /app/app/workers/ingest.py:357:def ingest_security(db: Session, adapter: ProviderAdapter, ticker: str, /app/app/workers/ingest.py:612: name="app.workers.ingest.ingest_security_task", /app/app/workers/ingest.py:620:def ingest_security_task(self, ticker: str, provider_name: str) -> str: /app/app/workers/ingest.py:632: # a no-op -- ingest_security() below then runs exactly the single-source path it always has. /app/app/workers/ingest.py:638: security_id = ingest_security( /app/app/workers/ingest.py:652: from app.workers.recompute import recompute_security_task /app/app/workers/ingest.py:653: recompute_security_task.delay(security_id) /app/app/workers/ingest.py:665: ingest_security_task.delay(ticker, provider_name or settings.PROVIDER_PRIMARY) /app/app/workers/ingest.py.before-sl004-20260910-180740:11:AUDIT_PROVIDER_RESILIENCE.md's finding). `ingest_security()` now optionally accepts a /app/app/workers/ingest.py.before-sl004-20260910-180740:356:def ingest_security(db: Session, adapter: ProviderAdapter, ticker: str, /app/app/workers/ingest.py.before-sl004-20260910-180740:579: name="app.workers.ingest.ingest_security_task", /app/app/workers/ingest.py.before-sl004-20260910-180740:587:def ingest_security_task(self, ticker: str, provider_name: str) -> str: /app/app/workers/ingest.py.before-sl004-20260910-180740:599: # a no-op -- ingest_security() below then runs exactly the single-source path it always has. /app/app/workers/ingest.py.before-sl004-20260910-180740:605: security_id = ingest_security( /app/app/workers/ingest.py.before-sl004-20260910-180740:619: from app.workers.recompute import recompute_security_task /app/app/workers/ingest.py.before-sl004-20260910-180740:620: recompute_security_task.delay(security_id) /app/app/workers/ingest.py.before-sl004-20260910-180740:632: ingest_security_task.delay(ticker, provider_name or settings.PROVIDER_PRIMARY) /app/app/workers/recompute.py.before-sl001-20260910-143627:349:def recompute_security(db: Session, security_id: str, peer_metric_values: dict | None = None, /app/app/workers/recompute.py.before-sl001-20260910-143627:680:@celery_app.task(name="app.workers.recompute.recompute_security_task") /app/app/workers/recompute.py.before-sl001-20260910-143627:681:def recompute_security_task(security_id: str) -> None: /app/app/workers/recompute.py.before-sl001-20260910-143627:684: This task previously called `recompute_security(db, security_id)` with no peer universe, and /app/app/workers/recompute.py.before-sl001-20260910-143627:705: recompute_security( /app/app/workers/recompute.py.before-sl001-ast:349:def recompute_security(db: Session, security_id: str, peer_metric_values: dict | None = None, /app/app/workers/recompute.py.before-sl001-ast:680:@celery_app.task(name="app.workers.recompute.recompute_security_task") /app/app/workers/recompute.py.before-sl001-ast:681:def recompute_security_task(security_id: str) -> None: /app/app/workers/recompute.py.before-sl001-ast:684: This task previously called `recompute_security(db, security_id)` with no peer universe, and /app/app/workers/recompute.py.before-sl001-ast:705: recompute_security(