[3.13] gh-84424: Use numeric_changed for UCD.numeric (GH-19457) (GH-144732)

This was causing ucd_3_2_0.numeric() to pick up only decimal
changes between Unicode 3.2.0 and the current version.
(cherry picked from commit 3e0322ff16)

Co-authored-by: William Meehan <wmeehan@fb.com>
This commit is contained in:
Serhiy Storchaka 2026-02-12 10:35:09 +02:00 committed by GitHub
parent 9a57c932ec
commit 009583fc6f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 9 additions and 4 deletions

View file

@ -170,10 +170,14 @@ def test_numeric(self):
# New in 4.1.0
self.assertEqual(self.db.numeric('\U0001012A', None), None if self.old else 9000)
# Changed in 4.1.0
self.assertEqual(self.db.numeric('\u5793', None), 1e20 if self.old else None)
# New in 5.0.0
self.assertEqual(self.db.numeric('\u07c0', None), None if self.old else 0.0)
# New in 5.1.0
self.assertEqual(self.db.numeric('\ua627', None), None if self.old else 7.0)
# Changed in 5.2.0
self.assertEqual(self.db.numeric('\u09f6'), 3.0 if self.old else 3/16)
# New in 6.0.0
self.assertEqual(self.db.numeric('\u0b72', None), None if self.old else 0.25)
# New in 12.0.0
@ -569,9 +573,9 @@ def test_east_asian_width_unassigned(self):
class Unicode_3_2_0_FunctionsTest(UnicodeFunctionsTest):
db = unicodedata.ucd_3_2_0
old = True
expectedchecksum = ('76b126d719d52ba11788a627d058163106da7d56'
expectedchecksum = ('4154d8d1232837e255edf3cdcbb5ab184d71f4a4'
if quicktest else
'871389bdd96a709929496da7f9e59718daf61adb')
'b678d38ffbf1f1de092b2af1ed155602909fcd8d')
class UnicodeMiscTest(unittest.TestCase):

View file

@ -0,0 +1 @@
Fix :meth:`!unicodedata.ucd_3_2_0.numeric` for non-decimal values.

View file

@ -228,9 +228,9 @@ unicodedata_UCD_numeric_impl(PyObject *self, int chr,
have_old = 1;
rc = -1.0;
}
else if (old->decimal_changed != 0xFF) {
else if (old->numeric_changed != 0.0) {
have_old = 1;
rc = old->decimal_changed;
rc = old->numeric_changed;
}
}