Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 12 additions & 15 deletions Lib/test/test_unicodedata.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,15 +83,7 @@ def test_method_checksum(self):
self.assertEqual(result, self.expectedchecksum)


class UnicodeFunctionsTest(unittest.TestCase):
db = unicodedata
old = False

# Update this if the database changes. Make sure to do a full rebuild
# (e.g. 'make distclean && make') to get the correct checksum.
expectedchecksum = ('83cc43a2fbb779185832b4c049217d80b05bf349'
if quicktest else
'65670ae03a324c5f9e826a4de3e25bae4d73c9b7')
class BaseUnicodeFunctionsTest:

def test_function_checksum(self):
db = self.db
Expand Down Expand Up @@ -589,6 +581,16 @@ def test_east_asian_width_unassigned(self):
self.assertEqual(eaw(char), 'A')
self.assertIs(self.db.name(char, None), None)

class UnicodeFunctionsTest(unittest.TestCase, BaseUnicodeFunctionsTest):
db = unicodedata
old = False

# Update this if the database changes. Make sure to do a full rebuild
# (e.g. 'make distclean && make') to get the correct checksum.
expectedchecksum = ('83cc43a2fbb779185832b4c049217d80b05bf349'
if quicktest else
'65670ae03a324c5f9e826a4de3e25bae4d73c9b7')

def test_isxidstart(self):
self.assertTrue(self.db.isxidstart('S'))
self.assertTrue(self.db.isxidstart('\u0AD0')) # GUJARATI OM
Expand Down Expand Up @@ -832,18 +834,13 @@ def graphemes(*args):
['a', '\U0001F1FA\U0001F1E6', '\U0001F1FA\U0001F1F3'])


class Unicode_3_2_0_FunctionsTest(UnicodeFunctionsTest):
class Unicode_3_2_0_FunctionsTest(unittest.TestCase, BaseUnicodeFunctionsTest):
db = unicodedata.ucd_3_2_0
old = True
expectedchecksum = ('f4526159891a4b766dd48045646547178737ba09'
if quicktest else
'f217b8688d7bdff31db4207e078a96702f091597')

test_grapheme_cluster_break = None
test_indic_conjunct_break = None
test_extended_pictographic = None
test_grapheme_break = None


class UnicodeMiscTest(unittest.TestCase):
db = unicodedata
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Remove the :meth:`!isxidstart` and :meth:`!isxidcontinue` methods of
:data:`unicodedata.ucd_3_2_0`. They are now only exposed as
:func:`unicodedata.isxidstart` and :func:`unicodedata.isxidcontinue`.
30 changes: 15 additions & 15 deletions Modules/clinic/unicodedata.c.h

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 9 additions & 27 deletions Modules/unicodedata.c
Original file line number Diff line number Diff line change
Expand Up @@ -1565,9 +1565,8 @@ unicodedata_UCD_name_impl(PyObject *self, int chr, PyObject *default_value)
}

/*[clinic input]
unicodedata.UCD.isxidstart
unicodedata.isxidstart

self: self
chr: int(accept={str})
/

Expand All @@ -1576,24 +1575,15 @@ Return True if the character has the XID_Start property, else False.
[clinic start generated code]*/

static PyObject *
unicodedata_UCD_isxidstart_impl(PyObject *self, int chr)
/*[clinic end generated code: output=944005823c72c3ef input=9353f88d709c21fb]*/
unicodedata_isxidstart_impl(PyObject *module, int chr)
/*[clinic end generated code: output=7ae0e1a3915aa031 input=3812717f3a6bfc56]*/
{
if (UCD_Check(self)) {
const change_record *old = get_old_record(self, chr);
if (old->category_changed == 0) {
/* unassigned */
Py_RETURN_FALSE;
}
}

return PyBool_FromLong(_PyUnicode_IsXidStart(chr));
}

/*[clinic input]
unicodedata.UCD.isxidcontinue
unicodedata.isxidcontinue

self: self
chr: int(accept={str})
/

Expand All @@ -1602,17 +1592,9 @@ Return True if the character has the XID_Continue property, else False.
[clinic start generated code]*/

static PyObject *
unicodedata_UCD_isxidcontinue_impl(PyObject *self, int chr)
/*[clinic end generated code: output=9438dcbff5ca3e41 input=bbb8dd3ac0d2d709]*/
unicodedata_isxidcontinue_impl(PyObject *module, int chr)
/*[clinic end generated code: output=517caa8b38c73aed input=a971ed6e57cac374]*/
{
if (UCD_Check(self)) {
const change_record *old = get_old_record(self, chr);
if (old->category_changed == 0) {
/* unassigned */
Py_RETURN_FALSE;
}
}

return PyBool_FromLong(_PyUnicode_IsXidContinue(chr));
}

Expand Down Expand Up @@ -2128,10 +2110,12 @@ static PyMethodDef unicodedata_functions[] = {
UNICODEDATA_INDIC_CONJUNCT_BREAK_METHODDEF
UNICODEDATA_EXTENDED_PICTOGRAPHIC_METHODDEF
UNICODEDATA_ITER_GRAPHEMES_METHODDEF
UNICODEDATA_ISXIDSTART_METHODDEF
UNICODEDATA_ISXIDCONTINUE_METHODDEF

// The following definitions are shared between the module
// and the UCD class.
#define DB_methods (unicodedata_functions + 4)
#define DB_methods (unicodedata_functions + 6)

UNICODEDATA_UCD_DECIMAL_METHODDEF
UNICODEDATA_UCD_DIGIT_METHODDEF
Expand All @@ -2143,8 +2127,6 @@ static PyMethodDef unicodedata_functions[] = {
UNICODEDATA_UCD_EAST_ASIAN_WIDTH_METHODDEF
UNICODEDATA_UCD_DECOMPOSITION_METHODDEF
UNICODEDATA_UCD_NAME_METHODDEF
UNICODEDATA_UCD_ISXIDSTART_METHODDEF
UNICODEDATA_UCD_ISXIDCONTINUE_METHODDEF
UNICODEDATA_UCD_LOOKUP_METHODDEF
UNICODEDATA_UCD_IS_NORMALIZED_METHODDEF
UNICODEDATA_UCD_NORMALIZE_METHODDEF
Expand Down
Loading