]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.14] gh-84424: Use numeric_changed for UCD.numeric (GH-19457) (GH-144731)
authorSerhiy Storchaka <storchaka@gmail.com>
Thu, 12 Feb 2026 08:38:27 +0000 (10:38 +0200)
committerGitHub <noreply@github.com>
Thu, 12 Feb 2026 08:38:27 +0000 (08:38 +0000)
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 3e0322ff16f47caa3e273d453f007d3918b8ac80)

Co-authored-by: William Meehan <wmeehan@fb.com>
Lib/test/test_unicodedata.py
Misc/NEWS.d/next/Library/2020-04-10-14-29-53.bpo-40243.85HRib.rst [new file with mode: 0644]
Modules/unicodedata.c

index e98539deb99d2008c52cad51b2ddc59eed65f1a5..f66c45d6d4d338d534021acdd79fa3327b010f57 100644 (file)
@@ -170,10 +170,14 @@ class UnicodeFunctionsTest(unittest.TestCase):
 
         # 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
@@ -584,9 +588,9 @@ class UnicodeFunctionsTest(unittest.TestCase):
 class Unicode_3_2_0_FunctionsTest(UnicodeFunctionsTest):
     db = unicodedata.ucd_3_2_0
     old = True
-    expectedchecksum = ('76b126d719d52ba11788a627d058163106da7d56'
+    expectedchecksum = ('4154d8d1232837e255edf3cdcbb5ab184d71f4a4'
                         if quicktest else
-                        'ed843cb7ab5aaf149466498db27fefce81c4214c')
+                        'b0a8df4ce8cf910def4e75f2d03c93defcc9bb09')
 
 
 class UnicodeMiscTest(unittest.TestCase):
diff --git a/Misc/NEWS.d/next/Library/2020-04-10-14-29-53.bpo-40243.85HRib.rst b/Misc/NEWS.d/next/Library/2020-04-10-14-29-53.bpo-40243.85HRib.rst
new file mode 100644 (file)
index 0000000..1f48525
--- /dev/null
@@ -0,0 +1 @@
+Fix :meth:`!unicodedata.ucd_3_2_0.numeric` for non-decimal values.
index ef8cf3d0d274592c5991f05f807bdc77b29402fe..97367aaba219110dd4e0bc3b85d53190b5abd684 100644 (file)
@@ -230,9 +230,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;
         }
     }