diff options
| author | Tyler <tyler@tylerhoang.xyz> | 2026-05-16 00:51:08 -0700 |
|---|---|---|
| committer | Tyler <tyler@tylerhoang.xyz> | 2026-05-16 00:51:08 -0700 |
| commit | 775762d75bf2b6b49893f84db1f4910ef1aa1e4b (patch) | |
| tree | 8fd13acd03214605f7d879f42f282d89674f3222 /components/news.py | |
| parent | 49368331324f201307fd260d288e5c5f65ea3fcc (diff) | |
Harden script embedding, timezone parsing, and layout buffers
- overview: use json_for_script for inline payload/meta to prevent
</script> break-out from yfinance-sourced strings; raise iframe
height to cover responsive single-column collapse under 1100px
- news: treat naive ISO/strptime datetimes as UTC before converting
to local-naive, matching the int-timestamp branch from 75dbe29
- news: bump per-row iframe height to fit summary + metadata under
scrolling=False
- top_movers: drop name column in compact (sidebar) mode and tighten
grid so symbol/price/change fit a default-width Streamlit sidebar
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Diffstat (limited to 'components/news.py')
| -rw-r--r-- | components/news.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/components/news.py b/components/news.py index 2a22b25..c2263c9 100644 --- a/components/news.py +++ b/components/news.py @@ -64,7 +64,7 @@ def _normalize_dt(raw): dt = _dt.fromisoformat(norm) if dt.tzinfo is not None: return dt.astimezone().replace(tzinfo=None) - return dt + return dt.replace(tzinfo=_tz.utc).astimezone().replace(tzinfo=None) except Exception: pass @@ -77,13 +77,15 @@ def _normalize_dt(raw): "%m/%d/%Y", ): try: - return _dt.strptime(text[: len(fmt)], fmt) + naive = _dt.strptime(text[: len(fmt)], fmt) + return naive.replace(tzinfo=_tz.utc).astimezone().replace(tzinfo=None) except Exception: pass if len(text) >= 10: try: - return _dt.strptime(text[:10], "%Y-%m-%d") + naive = _dt.strptime(text[:10], "%Y-%m-%d") + return naive.replace(tzinfo=_tz.utc).astimezone().replace(tzinfo=None) except Exception: pass @@ -167,7 +169,7 @@ def render_news(ticker: str): rows_js = "const NEWS_ROWS=" + _json.dumps(rows).replace("</", "<\\/") + ";" n_rows = max(len(rows), 18) - height = 1240 + n_rows * 28 + height = 1240 + n_rows * 90 _ROOT = ( "<style>*,*::before,*::after{box-sizing:border-box}" |
