From 3cfb18be1134e40126cfabb0986705023f2bbb01 Mon Sep 17 00:00:00 2001 From: Louis Labeyrie Date: Thu, 19 Mar 2026 19:32:06 +0100 Subject: [PATCH] Narrow bare except handlers in keyword_extractor.py Replace broad `except Exception` with `except ImportError` for the yake import and `except (ValueError, TypeError)` for YAKE extraction. Add logging so failures are no longer silently swallowed. Fixes #4 --- clean-text-to-keywords/keyword_extractor.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/clean-text-to-keywords/keyword_extractor.py b/clean-text-to-keywords/keyword_extractor.py index 227a30f..cc7b975 100644 --- a/clean-text-to-keywords/keyword_extractor.py +++ b/clean-text-to-keywords/keyword_extractor.py @@ -2,8 +2,11 @@ from __future__ import annotations +import logging import math import re +logger = logging.getLogger(__name__) + from dataclasses import dataclass, field from typing import Any, Dict, Iterable, List, Mapping, Optional, Sequence, Set, Tuple @@ -199,7 +202,8 @@ class KeywordExtractor: def _extract_yake_scores(self, text: str) -> Dict[str, float]: try: import yake - except Exception: + except ImportError: + logger.warning("yake not installed, skipping relevance scoring") return {} text_token_count = len(text.split()) @@ -208,7 +212,8 @@ class KeywordExtractor: try: extractor = yake.KeywordExtractor(lan="en", n=2, dedupLim=0.9, top=top_n) phrase_scores = extractor.extract_keywords(text) - except Exception: + except (ValueError, TypeError) as e: + logger.warning("YAKE extraction failed: %s", e) return {} token_scores: Dict[str, float] = {} -- 2.43.0