From b5ff0ee7147f9831f74658e33ebf425b861fe846 Mon Sep 17 00:00:00 2001 From: phoneee Date: Sun, 29 Mar 2026 18:09:29 +0700 Subject: [PATCH 1/4] fix: use full version string in _check_version for <= and < operators --- pythainlp/corpus/core.py | 4 ++-- tests/core/test_corpus.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/pythainlp/corpus/core.py b/pythainlp/corpus/core.py index 664207158..70f0fa7e0 100644 --- a/pythainlp/corpus/core.py +++ b/pythainlp/corpus/core.py @@ -632,10 +632,10 @@ def _check_version(cause: str) -> bool: check = _version2int(temp_parts[0]) < v < _version2int(temp_parts[1]) elif cause.startswith("<="): temp = cause.replace("<=", "") - check = v <= _version2int(temp[0]) + check = v <= _version2int(temp) elif cause.startswith("<"): temp = cause.replace("<", "") - check = v < _version2int(temp[0]) + check = v < _version2int(temp) return check diff --git a/tests/core/test_corpus.py b/tests/core/test_corpus.py index 58ea2ec34..e6acdd1d7 100644 --- a/tests/core/test_corpus.py +++ b/tests/core/test_corpus.py @@ -6,6 +6,7 @@ import unittest from unittest.mock import mock_open, patch +from pythainlp.corpus.core import _check_version, _version2int from pythainlp.corpus import ( countries, download, @@ -621,3 +622,16 @@ def test_thai_synonyms_loads_valid_rows(self): self.assertEqual( result["synonym"], [["cat", "kitty"], ["dog"]] ) + + def test_check_version(self): + # Reproduce: _check_version with <= and < used temp[0] which + # only gets the first character of the version string instead + # of the full version, causing incorrect comparisons. + self.assertTrue(_check_version("*")) + self.assertTrue(_check_version("<=9.9.9")) + self.assertTrue(_check_version("<9.9.9")) + self.assertFalse(_check_version("<=0.0.1")) + self.assertFalse(_check_version("<0.0.1")) + # version2int consistency + self.assertNotEqual(_version2int("5.3.3"), _version2int("5")) + self.assertEqual(_version2int("2.0"), _version2int("2.0.0")) From 28d9117f3fa4a7f601078ae3956fb9dd7283ce41 Mon Sep 17 00:00:00 2001 From: Arthit Suriyawongkul Date: Tue, 31 Mar 2026 11:08:27 +0100 Subject: [PATCH 2/4] Reorder import statements in test_corpus.py --- tests/core/test_corpus.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/core/test_corpus.py b/tests/core/test_corpus.py index e6acdd1d7..1a93cf9e0 100644 --- a/tests/core/test_corpus.py +++ b/tests/core/test_corpus.py @@ -6,7 +6,6 @@ import unittest from unittest.mock import mock_open, patch -from pythainlp.corpus.core import _check_version, _version2int from pythainlp.corpus import ( countries, download, @@ -32,6 +31,7 @@ tnc, ttc, ) +from pythainlp.corpus.core import _check_version, _version2int from pythainlp.corpus.util import revise_newmm_default_wordset From d297e459546c3b5c8f366b414f59e1ed09f37d92 Mon Sep 17 00:00:00 2001 From: Arthit Suriyawongkul Date: Tue, 31 Mar 2026 11:16:15 +0100 Subject: [PATCH 3/4] Apply suggestion from @bact --- tests/core/test_corpus.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/core/test_corpus.py b/tests/core/test_corpus.py index 1a93cf9e0..dfa30272c 100644 --- a/tests/core/test_corpus.py +++ b/tests/core/test_corpus.py @@ -628,8 +628,8 @@ def test_check_version(self): # only gets the first character of the version string instead # of the full version, causing incorrect comparisons. self.assertTrue(_check_version("*")) - self.assertTrue(_check_version("<=9.9.9")) - self.assertTrue(_check_version("<9.9.9")) + self.assertTrue(_check_version("<=9999.9.9")) + self.assertTrue(_check_version("<9999.9.9")) self.assertFalse(_check_version("<=0.0.1")) self.assertFalse(_check_version("<0.0.1")) # version2int consistency From 2287acfcbf8534712a608d7597cf426a2887f2a9 Mon Sep 17 00:00:00 2001 From: Arthit Suriyawongkul Date: Tue, 31 Mar 2026 11:18:28 +0100 Subject: [PATCH 4/4] Add version checks for minimum version requirements --- tests/core/test_corpus.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/core/test_corpus.py b/tests/core/test_corpus.py index dfa30272c..44854a99a 100644 --- a/tests/core/test_corpus.py +++ b/tests/core/test_corpus.py @@ -630,6 +630,8 @@ def test_check_version(self): self.assertTrue(_check_version("*")) self.assertTrue(_check_version("<=9999.9.9")) self.assertTrue(_check_version("<9999.9.9")) + self.assertTrue(_check_version(">=0.0.1")) + self.assertTrue(_check_version(">0.0.1")) self.assertFalse(_check_version("<=0.0.1")) self.assertFalse(_check_version("<0.0.1")) # version2int consistency