python3-rouge-score: drop the six dependency

Patch rouge-score to use the builtins and itertools.zip_longest instead
of the six.moves aliases and the dict methods instead of six.iteritems
and six.iterkeys. The six.ensure_str call sites are all passed str
already.

Built for intel-corei7-64.

AI-Generated: Uses Claude Code (Claude Opus 5)
Signed-off-by: Markus Volk <f_l_k@t-online.de>
Signed-off-by: Khem Raj <khem.raj@oss.qualcomm.com>
This commit is contained in:
Markus Volk
2026-09-21 16:21:42 -07:00
committed by Khem Raj
parent 3fe3ccdd9f
commit e4fafc9797
2 changed files with 173 additions and 1 deletions
@@ -0,0 +1,172 @@
From a383dde2c5c37efb7c55e0a0a9a1a8c7fe56d543 Mon Sep 17 00:00:00 2001
From: Markus Volk <f_l_k@t-online.de>
Date: Mon, 21 Sep 2026 13:24:12 +0200
Subject: [PATCH] drop the six dependency
six is a Python 2 compatibility shim and rouge-score does not need it on
Python 3: map, range and zip are builtins, zip_longest comes from
itertools, six.iteritems and six.iterkeys are the dict methods, and the
six.ensure_str call sites are all passed str already.
Upstream-Status: Pending
AI-Generated: Uses Claude Code (Claude Opus 5)
---
rouge_score/io.py | 6 ++----
rouge_score/rouge_scorer.py | 9 +++------
rouge_score/scoring.py | 6 ++----
rouge_score/scoring_test.py | 2 --
rouge_score/tokenize.py | 5 ++---
setup.py | 1 -
6 files changed, 9 insertions(+), 20 deletions(-)
diff --git a/rouge_score/io.py b/rouge_score/io.py
index ffd96ef..334b8bb 100644
--- a/rouge_score/io.py
+++ b/rouge_score/io.py
@@ -19,11 +19,9 @@ from __future__ import division
from __future__ import print_function
import glob
+from itertools import zip_longest
from absl import logging
-import six
-from six.moves import zip
-from six.moves import zip_longest
@@ -76,7 +74,7 @@ def _open(filepattern, mode="r"):
def _record_gen(filename, delimiter):
"""Opens file and yields records separated by delimiter."""
with _open(filename) as f:
- records = f.read().split(six.ensure_str(delimiter))
+ records = f.read().split(delimiter)
if records[-1]:
# Need a final delimiter at end of file to be able to detect an empty last
# record.
diff --git a/rouge_score/rouge_scorer.py b/rouge_score/rouge_scorer.py
index 4c076bf..64bf73a 100644
--- a/rouge_score/rouge_scorer.py
+++ b/rouge_score/rouge_scorer.py
@@ -39,9 +39,6 @@ import re
from absl import logging
import nltk
import numpy as np
-import six
-from six.moves import map
-from six.moves import range
from rouge_score import scoring
from rouge_score import tokenizers
@@ -140,7 +137,7 @@ class RougeScorer(scoring.BaseScorer):
sents = nltk.sent_tokenize(text)
else:
# Assume sentences are separated by newline.
- sents = six.ensure_str(text).split("\n")
+ sents = text.split("\n")
sents = [x for x in sents if len(x)]
return sents
@@ -151,7 +148,7 @@ class RougeScorer(scoring.BaseScorer):
scores = _summary_level_lcs(target_tokens_list,
prediction_tokens_list)
- elif re.match(r"rouge[0-9]$", six.ensure_str(rouge_type)):
+ elif re.match(r"rouge[0-9]$", rouge_type):
# Rouge from n-grams.
n = int(rouge_type[5:])
if n <= 0:
@@ -321,7 +318,7 @@ def _score_ngrams(target_ngrams, prediction_ngrams):
"""
intersection_ngrams_count = 0
- for ngram in six.iterkeys(target_ngrams):
+ for ngram in target_ngrams:
intersection_ngrams_count += min(target_ngrams[ngram],
prediction_ngrams[ngram])
target_ngrams_count = sum(target_ngrams.values())
diff --git a/rouge_score/scoring.py b/rouge_score/scoring.py
index d7d018c..d6f3e5b 100644
--- a/rouge_score/scoring.py
+++ b/rouge_score/scoring.py
@@ -27,8 +27,6 @@ import collections
from typing import Dict
import numpy as np
-import six
-from six.moves import range
class Score(
@@ -106,7 +104,7 @@ class BootstrapAggregator(object):
representing a score.
"""
- for score_type, score in six.iteritems(scores):
+ for score_type, score in scores.items():
self._scores[score_type].append(score)
def aggregate(self):
@@ -117,7 +115,7 @@ class BootstrapAggregator(object):
"""
result = {}
- for score_type, scores in six.iteritems(self._scores):
+ for score_type, scores in self._scores.items():
# Stack scores into a 2-d matrix of (sample, measure).
score_matrix = np.vstack(tuple(scores))
# Percentiles are returned as (interval, measure).
diff --git a/rouge_score/scoring_test.py b/rouge_score/scoring_test.py
index 4cb8083..4e6cb9e 100644
--- a/rouge_score/scoring_test.py
+++ b/rouge_score/scoring_test.py
@@ -26,8 +26,6 @@ import os
from absl.testing import absltest
import numpy as np
-from six.moves import range
-from six.moves import zip
from rouge_score import rouge_scorer
from rouge_score import scoring
from rouge_score import test_util
diff --git a/rouge_score/tokenize.py b/rouge_score/tokenize.py
index d22abae..61ca0d3 100644
--- a/rouge_score/tokenize.py
+++ b/rouge_score/tokenize.py
@@ -19,7 +19,6 @@ from __future__ import division
from __future__ import print_function
import re
-import six
# Pre-compile regexes that are use often
@@ -48,12 +47,12 @@ def tokenize(text, stemmer):
# Convert everything to lowercase.
text = text.lower()
# Replace any non-alpha-numeric characters with spaces.
- text = NON_ALPHANUM_RE.sub(" ", six.ensure_str(text))
+ text = NON_ALPHANUM_RE.sub(" ", text)
tokens = SPACES_RE.split(text)
if stemmer:
# Only stem words more than 3 characters long.
- tokens = [six.ensure_str(stemmer.stem(x)) if len(x) > 3 else x
+ tokens = [stemmer.stem(x) if len(x) > 3 else x
for x in tokens]
# One final check to drop any empty or invalid tokens.
diff --git a/setup.py b/setup.py
index c630204..914c4fe 100644
--- a/setup.py
+++ b/setup.py
@@ -50,7 +50,6 @@ setuptools.setup(
"absl-py",
"nltk",
"numpy",
- "six>=1.14.0",
],
python_requires=">=3.7",
)
@@ -9,11 +9,11 @@ RDEPENDS:${PN} = "\
python3-absl \
python3-nltk \
python3-numpy \
python3-six (>=1.14) \
"
inherit setuptools3 pypi
PYPI_PACKAGE = "rouge_score"
SRC_URI += "file://0001-drop-the-six-dependency.patch"
SRC_URI[sha256sum] = "c7d4da2683e68c9abf0135ef915d63a46643666f848e558a1b9f7ead17ff0f04"