from pathlib import Path
p=Path('/opt/struktur/social-media-radar/published_at_normalizer.py')
s=p.read_text()
old=''' try:\n dt = email.utils.parsedate_to_datetime(text)\n if dt.tzinfo is None:\n dt = dt.replace(tzinfo=timezone.utc)\n return dt.astimezone(timezone.utc).isoformat()\n except (TypeError, ValueError, IndexError, OverflowError):\n pass\n\n reference = _parse_reference(observed_at)\n'''
new=''' try:\n dt = email.utils.parsedate_to_datetime(text)\n if dt.tzinfo is None:\n dt = dt.replace(tzinfo=timezone.utc)\n return dt.astimezone(timezone.utc).isoformat()\n except (TypeError, ValueError, IndexError, OverflowError):\n pass\n\n # Public Meta Ad Library uses values such as "Mar 10, 2026".\n for fmt in ("%b %d, %Y", "%B %d, %Y"):\n try:\n return datetime.strptime(text, fmt).replace(tzinfo=timezone.utc).isoformat()\n except ValueError:\n pass\n\n reference = _parse_reference(observed_at)\n'''
if old not in s: raise SystemExit('normalizer anchor missing')
p.write_text(s.replace(old,new,1))