fix(logging): silence yfinance no-data ERROR-log flood + bump to 1.5.1#320
Conversation
Move the pinned dependency to the latest yfinance release. Verified the full API surface langalpha consumes — history, fast_info, info, income/cashflow statements, screener, Search, news — is unchanged against 1.5.1, so no code changes are required.
yfinance logs a normal "no price data" soft-miss at ERROR and returns empty instead of raising, so every symbol Yahoo can't serve floods the ERROR stream from the last-resort fallback provider. Pin the yfinance logger to CRITICAL so these expected fallthroughs stop polluting logs; genuine failures are still surfaced by our own data-client logger.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe logging configuration sets ChangesLogging configuration
Estimated code review effort: 1 (Trivial) | ~2 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ReviewSmall, well-scoped change (config + lockfile only). Verified the mechanics:
No blocking issues. 💡 Non-blocking: Setting the whole |
Hot Path Integration Test Results⏱️ Operation TimingsActual operation duration vs pytest total (which includes fixture setup and cold path prerequisites)
✅ Cold / Warm Session PathSession resolution with real PostgreSQL + Daytona sandbox
✅
|
| Test | Duration | Result |
|---|---|---|
| no session cached | 3ms | ✅ |
| session not initialized | 3ms | ✅ |
| sandbox none | 3ms | ✅ |
| sandbox not ready | 3ms | ✅ |
| full ready state | 12.57s | ✅ |
✅ Conditional update_workspace_activity
60-second conditional SQL UPDATE behavior
| Test | Duration | Result |
|---|---|---|
| first call writes | 98ms | ✅ |
| immediate second call skips | 98ms | ✅ |
| nonexistent workspace returns false | 94ms | ✅ |
| deleted workspace returns false | 96ms | ✅ |
Total: 17 tests, 145.02s, 100% pass
Generated by backend-integration CI
Summary
Two focused changes:
yfinancelibrary logs a normal "no price data" soft-missat ERROR level (and returns an empty result instead of raising), so every
symbol Yahoo Finance can't serve — non-US tickers, thin/unlisted symbols — produced
a steady flood of ERROR lines from the last-resort fallback provider. Our market-data
provider chain already treats an empty result as a designed soft-miss / fallthrough,
so these are not errors in our system. Pin the
yfinancelogger toCRITICALinmodule_log_levelsso the severity mismatch is corrected at the source. Genuineyfinance failures are still surfaced by our own
data_clientlogger.yfinance1.4.0 → 1.5.1.Overview
By module
config.yaml(modified) — one newmodule_log_levelsentry (yfinance: CRITICAL) plus an explanatory comment on why the level must be CRITICAL, not WARNING.uv.lock(modified) — yfinance 1.4.0 → 1.5.1.What this introduces: quieter ERROR logs — removes a high-volume third-party noise
source — with zero change to data results or routing behavior.
Diff Size
Test Coverage
Config + lockfile only — no new application code paths to audit. Verified by driving
the real code path instead (below).
Pre-Landing Review
No issues. 13-line config/dependency diff — no SQL, no LLM trust-boundary, no secrets.
Verification
configure_logging()path on 1.5.1:yfinance ERROR lines 6 → 0 for unservable symbols; empty results unchanged.
history,fast_info,info, income/cashflow statements, screenerEquityQuery/screen,Search,news)verified present + shape-stable against 1.5.1 via static and live-shape checks.
.HK) daily all return data.Test plan
Summary by CodeRabbit