gh-129117: Add unicodedata.isxidstart() function (#140269)

Expose `_PyUnicode_IsXidContinue/Start` in `unicodedata`:
add isxidstart() and isxidcontinue() functions.

Co-authored-by: Victor Stinner <vstinner@python.org>
This commit is contained in:
Stan Ulbrych 2025-10-30 10:18:12 +00:00 committed by GitHub
parent 25bd72d683
commit dbe3950a76
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 225 additions and 13 deletions

View file

@ -276,6 +276,33 @@ def test_east_asian_width_9_0_changes(self):
self.assertEqual(self.db.ucd_3_2_0.east_asian_width('\u231a'), 'N')
self.assertEqual(self.db.east_asian_width('\u231a'), 'W')
def test_isxidstart(self):
self.assertTrue(self.db.isxidstart('S'))
self.assertTrue(self.db.isxidstart('\u0AD0')) # GUJARATI OM
self.assertTrue(self.db.isxidstart('\u0EC6')) # LAO KO LA
self.assertTrue(self.db.isxidstart('\u17DC')) # KHMER SIGN AVAKRAHASANYA
self.assertTrue(self.db.isxidstart('\uA015')) # YI SYLLABLE WU
self.assertTrue(self.db.isxidstart('\uFE7B')) # ARABIC KASRA MEDIAL FORM
self.assertFalse(self.db.isxidstart(' '))
self.assertFalse(self.db.isxidstart('0'))
self.assertRaises(TypeError, self.db.isxidstart)
self.assertRaises(TypeError, self.db.isxidstart, 'xx')
def test_isxidcontinue(self):
self.assertTrue(self.db.isxidcontinue('S'))
self.assertTrue(self.db.isxidcontinue('_'))
self.assertTrue(self.db.isxidcontinue('0'))
self.assertTrue(self.db.isxidcontinue('\u00BA')) # MASCULINE ORDINAL INDICATOR
self.assertTrue(self.db.isxidcontinue('\u0640')) # ARABIC TATWEEL
self.assertTrue(self.db.isxidcontinue('\u0710')) # SYRIAC LETTER ALAPH
self.assertTrue(self.db.isxidcontinue('\u0B3E')) # ORIYA VOWEL SIGN AA
self.assertTrue(self.db.isxidcontinue('\u17D7')) # KHMER SIGN LEK TOO
self.assertFalse(self.db.isxidcontinue(' '))
self.assertRaises(TypeError, self.db.isxidcontinue)
self.assertRaises(TypeError, self.db.isxidcontinue, 'xx')
class UnicodeMiscTest(UnicodeDatabaseTest):
@cpython_only