From 59c50e026700b2a0f74740672e164ae1886b89b5 Mon Sep 17 00:00:00 2001 From: Maciej Pienczyn Date: Tue, 13 Jan 2026 18:20:19 +0100 Subject: [PATCH] fix: Handle None values in SEO audit result extraction Bug: When page fetch fails (SSL error), result['onpage'] is None. Using dict.get('key', {}) returns None when key exists with None value. Fix: Use 'or {}' pattern to handle both missing keys and None values. Co-Authored-By: Claude Opus 4.5 --- scripts/seo_audit.py | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/scripts/seo_audit.py b/scripts/seo_audit.py index 218e80d..0686433 100644 --- a/scripts/seo_audit.py +++ b/scripts/seo_audit.py @@ -488,23 +488,23 @@ class SEOAuditor: with self.Session() as session: company_id = result['company_id'] - # Extract values from result - onpage = result.get('onpage', {}) - technical = result.get('technical', {}) - pagespeed = result.get('pagespeed', {}) - meta_tags = onpage.get('meta_tags', {}) if onpage else {} - headings = onpage.get('headings', {}) if onpage else {} - images = onpage.get('images', {}) if onpage else {} - links = onpage.get('links', {}) if onpage else {} - structured_data = onpage.get('structured_data', {}) if onpage else {} - og = onpage.get('open_graph', {}) if onpage else {} - tc = onpage.get('twitter_card', {}) if onpage else {} - robots = technical.get('robots_txt', {}) if technical else {} - sitemap = technical.get('sitemap', {}) if technical else {} - canonical = technical.get('canonical', {}) if technical else {} - indexability = technical.get('indexability', {}) if technical else {} - cwv = pagespeed.get('core_web_vitals', {}) if pagespeed else {} - ps_scores = pagespeed.get('scores', {}) if pagespeed else {} + # Extract values from result (use 'or {}' to handle None values) + onpage = result.get('onpage') or {} + technical = result.get('technical') or {} + pagespeed = result.get('pagespeed') or {} + meta_tags = onpage.get('meta_tags') or {} + headings = onpage.get('headings') or {} + images = onpage.get('images') or {} + links = onpage.get('links') or {} + structured_data = onpage.get('structured_data') or {} + og = onpage.get('open_graph') or {} + tc = onpage.get('twitter_card') or {} + robots = technical.get('robots_txt') or {} + sitemap = technical.get('sitemap') or {} + canonical = technical.get('canonical') or {} + indexability = technical.get('indexability') or {} + cwv = pagespeed.get('core_web_vitals') or {} + ps_scores = pagespeed.get('scores') or {} # Upsert query for company_website_analysis # Uses ON CONFLICT DO UPDATE for idempotent upserts