Skip to content

Commit 4d3e8c1

Browse files
[3.14] gh-84424: Use numeric_changed for UCD.numeric (GH-19457) (GH-144731)
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 3e0322f) Co-authored-by: William Meehan <wmeehan@fb.com>
1 parent bbd682d commit 4d3e8c1

File tree

3 files changed

+9
-4
lines changed

3 files changed

+9
-4
lines changed

Lib/test/test_unicodedata.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,10 +170,14 @@ def test_numeric(self):
170170

171171
# New in 4.1.0
172172
self.assertEqual(self.db.numeric('\U0001012A', None), None if self.old else 9000)
173+
# Changed in 4.1.0
174+
self.assertEqual(self.db.numeric('\u5793', None), 1e20 if self.old else None)
173175
# New in 5.0.0
174176
self.assertEqual(self.db.numeric('\u07c0', None), None if self.old else 0.0)
175177
# New in 5.1.0
176178
self.assertEqual(self.db.numeric('\ua627', None), None if self.old else 7.0)
179+
# Changed in 5.2.0
180+
self.assertEqual(self.db.numeric('\u09f6'), 3.0 if self.old else 3/16)
177181
# New in 6.0.0
178182
self.assertEqual(self.db.numeric('\u0b72', None), None if self.old else 0.25)
179183
# New in 12.0.0
@@ -584,9 +588,9 @@ def test_east_asian_width_unassigned(self):
584588
class Unicode_3_2_0_FunctionsTest(UnicodeFunctionsTest):
585589
db = unicodedata.ucd_3_2_0
586590
old = True
587-
expectedchecksum = ('76b126d719d52ba11788a627d058163106da7d56'
591+
expectedchecksum = ('4154d8d1232837e255edf3cdcbb5ab184d71f4a4'
588592
if quicktest else
589-
'ed843cb7ab5aaf149466498db27fefce81c4214c')
593+
'b0a8df4ce8cf910def4e75f2d03c93defcc9bb09')
590594

591595

592596
class UnicodeMiscTest(unittest.TestCase):
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix :meth:`!unicodedata.ucd_3_2_0.numeric` for non-decimal values.

Modules/unicodedata.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,9 @@ unicodedata_UCD_numeric_impl(PyObject *self, int chr,
230230
have_old = 1;
231231
rc = -1.0;
232232
}
233-
else if (old->decimal_changed != 0xFF) {
233+
else if (old->numeric_changed != 0.0) {
234234
have_old = 1;
235-
rc = old->decimal_changed;
235+
rc = old->numeric_changed;
236236
}
237237
}
238238

0 commit comments

Comments
 (0)