Hello community, here is the log from the commit of package python-PyICU for openSUSE:Factory checked in at 2020-03-29 14:25:06 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-PyICU (Old) and /work/SRC/openSUSE:Factory/.python-PyICU.new.3160 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-PyICU" Sun Mar 29 14:25:06 2020 rev:7 rq:788930 version:2.4.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-PyICU/python-PyICU.changes 2020-01-16 18:16:19.404807917 +0100 +++ /work/SRC/openSUSE:Factory/.python-PyICU.new.3160/python-PyICU.changes 2020-03-29 14:25:07.494084628 +0200 @@ -1,0 +2,7 @@ +Fri Mar 27 09:06:35 UTC 2020 - Marketa Calabkova <mcalabk...@suse.com> + +- update to 2.4.3 + * added Char.getPropertyValueName() and Char.getPropertyValueEnum() + * fixed build errors with PythonReplaceable for ICU < 55 + +------------------------------------------------------------------- Old: ---- PyICU-2.4.2.tar.gz New: ---- PyICU-2.4.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-PyICU.spec ++++++ --- /var/tmp/diff_new_pack.3Vejhi/_old 2020-03-29 14:25:10.766085338 +0200 +++ /var/tmp/diff_new_pack.3Vejhi/_new 2020-03-29 14:25:10.790085343 +0200 @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %global modname PyICU Name: python-%{modname} -Version: 2.4.2 +Version: 2.4.3 Release: 0 Summary: Python Extension Wrapping the ICU C++ API License: MIT ++++++ PyICU-2.4.2.tar.gz -> PyICU-2.4.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/CHANGES new/PyICU-2.4.3/CHANGES --- old/PyICU-2.4.2/CHANGES 2019-11-13 01:32:57.000000000 +0100 +++ new/PyICU-2.4.3/CHANGES 2020-03-19 21:58:25.000000000 +0100 @@ -1,3 +1,8 @@ +Version 2.4.2 -> 2.4.3 +---------------------- + - added Char.getPropertyValueName() and Char.getPropertyValueEnum() + - fixed build errors with PythonReplaceable for ICU < 55 + Version 2.4.1 -> 2.4.2 ---------------------- - fixed build issues with ICU < 59 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/PKG-INFO new/PyICU-2.4.3/PKG-INFO --- old/PyICU-2.4.2/PKG-INFO 2019-11-13 01:34:01.845530500 +0100 +++ new/PyICU-2.4.3/PKG-INFO 2020-03-19 22:11:39.820458400 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: PyICU -Version: 2.4.2 +Version: 2.4.3 Summary: Python extension wrapping the ICU C++ API Home-page: https://github.com/ovalhub/pyicu Author: Andi Vajda diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/PyICU.egg-info/PKG-INFO new/PyICU-2.4.3/PyICU.egg-info/PKG-INFO --- old/PyICU-2.4.2/PyICU.egg-info/PKG-INFO 2019-11-13 01:34:01.000000000 +0100 +++ new/PyICU-2.4.3/PyICU.egg-info/PKG-INFO 2020-03-19 22:11:39.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: PyICU -Version: 2.4.2 +Version: 2.4.3 Summary: Python extension wrapping the ICU C++ API Home-page: https://github.com/ovalhub/pyicu Author: Andi Vajda diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/bases.cpp new/PyICU-2.4.3/bases.cpp --- old/PyICU-2.4.2/bases.cpp 2019-11-12 00:24:16.000000000 +0100 +++ new/PyICU-2.4.3/bases.cpp 2020-03-19 21:30:55.000000000 +0100 @@ -134,6 +134,8 @@ abstract_init, NULL); +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) + /* PythonReplaceable */ class t_python_replaceable : public _wrapper { @@ -352,6 +354,8 @@ return b; } +#endif + /* UnicodeString */ class t_unicodestring : public _wrapper { @@ -704,6 +708,9 @@ Py_RETURN_BOOL(b); } + +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) + /* PythonReplaceable */ static int t_python_replaceable_init( @@ -796,6 +803,8 @@ Py_RETURN_BOOL(b); } +#endif + /* UnicodeString */ static int t_unicodestring_init(t_unicodestring *self, @@ -2641,7 +2650,9 @@ INSTALL_STRUCT(UMemory, m); // no typeid() INSTALL_TYPE(UObject, m); INSTALL_TYPE(Replaceable, m); +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) INSTALL_TYPE(PythonReplaceable, m); +#endif REGISTER_TYPE(UnicodeString, m); REGISTER_TYPE(Formattable, m); INSTALL_TYPE(StringEnumeration, m); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/bases.h new/PyICU-2.4.3/bases.h --- old/PyICU-2.4.2/bases.h 2019-11-12 00:21:15.000000000 +0100 +++ new/PyICU-2.4.3/bases.h 2019-11-16 03:47:15.000000000 +0100 @@ -42,6 +42,9 @@ UObject *object; }; + +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) + class PythonReplaceable : public Replaceable { public: explicit PythonReplaceable(PyObject *self); @@ -66,6 +69,8 @@ PyObject *self_; }; +#endif + struct UNone; typedef struct UNone UNone; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/casemap.cpp new/PyICU-2.4.3/casemap.cpp --- old/PyICU-2.4.2/casemap.cpp 2018-10-19 03:52:33.000000000 +0200 +++ new/PyICU-2.4.3/casemap.cpp 2019-11-16 03:34:35.000000000 +0100 @@ -71,13 +71,13 @@ static PyObject *t_edits_addReplace(t_edits *self, PyObject *args); static PyObject *t_edits_lengthDelta(t_edits *self); static PyObject *t_edits_hasChanges(t_edits *self); -static PyObject *t_edits_numberOfChanges(t_edits *self); static PyObject *t_edits_getCoarseChangesIterator(t_edits *self); static PyObject *t_edits_getCoarseIterator(t_edits *self); static PyObject *t_edits_getFineChangesIterator(t_edits *self); static PyObject *t_edits_getFineIterator(t_edits *self); #if U_ICU_VERSION_HEX >= VERSION_HEX(60, 0, 0) static PyObject *t_edits_mergeAndAppend(t_edits *self, PyObject *args); +static PyObject *t_edits_numberOfChanges(t_edits *self); #endif static PyMethodDef t_edits_methods[] = { @@ -86,13 +86,13 @@ DECLARE_METHOD(t_edits, addReplace, METH_VARARGS), DECLARE_METHOD(t_edits, lengthDelta, METH_NOARGS), DECLARE_METHOD(t_edits, hasChanges, METH_NOARGS), - DECLARE_METHOD(t_edits, numberOfChanges, METH_NOARGS), DECLARE_METHOD(t_edits, getCoarseChangesIterator, METH_NOARGS), DECLARE_METHOD(t_edits, getCoarseIterator, METH_NOARGS), DECLARE_METHOD(t_edits, getFineChangesIterator, METH_NOARGS), DECLARE_METHOD(t_edits, getFineIterator, METH_NOARGS), #if U_ICU_VERSION_HEX >= VERSION_HEX(60, 0, 0) DECLARE_METHOD(t_edits, mergeAndAppend, METH_VARARGS), + DECLARE_METHOD(t_edits, numberOfChanges, METH_NOARGS), #endif { NULL, NULL, 0, NULL } }; @@ -106,16 +106,22 @@ EditsIterator *object; }; -static int t_editsiterator_init(t_editsiterator *self, PyObject *args, PyObject *kwds); +#if U_ICU_VERSION_HEX >= VERSION_HEX(60, 0, 0) +static int t_editsiterator_init(t_editsiterator *self, PyObject *args, + PyObject *kwds); +#endif static PyObject *t_editsiterator_findSourceIndex( t_editsiterator *self, PyObject *arg); + +#if U_ICU_VERSION_HEX >= VERSION_HEX(60, 0, 0) static PyObject *t_editsiterator_findDestinationIndex( t_editsiterator *self, PyObject *arg); static PyObject *t_editsiterator_destinationIndexFromSourceIndex( t_editsiterator *self, PyObject *arg); static PyObject *t_editsiterator_sourceIndexFromdestinationIndex( t_editsiterator *self, PyObject *arg); +#endif static PyObject *t_editsiterator__hasChange( t_editsiterator *self, void *closure); @@ -160,14 +166,21 @@ static PyMethodDef t_editsiterator_methods[] = { DECLARE_METHOD(t_editsiterator, findSourceIndex, METH_O), +#if U_ICU_VERSION_HEX >= VERSION_HEX(60, 0, 0) DECLARE_METHOD(t_editsiterator, findDestinationIndex, METH_O), DECLARE_METHOD(t_editsiterator, destinationIndexFromSourceIndex, METH_O), DECLARE_METHOD(t_editsiterator, sourceIndexFromdestinationIndex, METH_O), +#endif { NULL, NULL, 0, NULL } }; +#if U_ICU_VERSION_HEX >= VERSION_HEX(60, 0, 0) DECLARE_STRUCT(EditsIterator, t_editsiterator, EditsIterator, t_editsiterator_init, NULL); +#else +DECLARE_STRUCT(EditsIterator, t_editsiterator, EditsIterator, + abstract_init, NULL); +#endif PyObject *wrap_EditsIterator(const EditsIterator &iterator) { @@ -1202,11 +1215,6 @@ Py_RETURN_BOOL(self->object->hasChanges()); } -static PyObject *t_edits_numberOfChanges(t_edits *self) -{ - return PyInt_FromLong(self->object->numberOfChanges()); -} - static PyObject *t_edits_getCoarseChangesIterator(t_edits *self) { return wrap_EditsIterator(self->object->getCoarseChangesIterator()); @@ -1228,6 +1236,7 @@ } #if U_ICU_VERSION_HEX >= VERSION_HEX(60, 0, 0) + static PyObject *t_edits_mergeAndAppend(t_edits *self, PyObject *args) { PyObject *ab, *bc; @@ -1244,11 +1253,19 @@ return PyErr_SetArgsError((PyObject *) self, "mergeAndAppend", args); } + +static PyObject *t_edits_numberOfChanges(t_edits *self) +{ + return PyInt_FromLong(self->object->numberOfChanges()); +} + #endif /* EditsIterator */ +#if U_ICU_VERSION_HEX >= VERSION_HEX(60, 0, 0) + static int t_editsiterator_init(t_editsiterator *self, PyObject *args, PyObject *kwds) { @@ -1268,6 +1285,8 @@ return -1; } +#endif + static PyObject *t_editsiterator_findSourceIndex( t_editsiterator *self, PyObject *arg) { @@ -1284,6 +1303,8 @@ return PyErr_SetArgsError((PyObject *) self, "findSourceIndex", arg); } +#if U_ICU_VERSION_HEX >= VERSION_HEX(60, 0, 0) + static PyObject *t_editsiterator_findDestinationIndex( t_editsiterator *self, PyObject *arg) { @@ -1334,6 +1355,8 @@ (PyObject *) self, "sourceIndexFromDestinationIndex", arg); } +#endif + static PyObject *t_editsiterator__hasChange( t_editsiterator *self, void *closure) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/char.cpp new/PyICU-2.4.3/char.cpp --- old/PyICU-2.4.2/char.cpp 2019-03-28 09:53:16.000000000 +0100 +++ new/PyICU-2.4.3/char.cpp 2019-12-23 19:13:28.000000000 +0100 @@ -112,6 +112,10 @@ static PyObject *t_char_enumCharNames(PyTypeObject *type, PyObject *args); static PyObject *t_char_getPropertyName(PyTypeObject *type, PyObject *args); static PyObject *t_char_getPropertyEnum(PyTypeObject *type, PyObject *arg); +static PyObject *t_char_getPropertyValueName(PyTypeObject *type, + PyObject *args); +static PyObject *t_char_getPropertyValueEnum(PyTypeObject *type, + PyObject *args); static PyObject *t_char_isIDStart(PyTypeObject *type, PyObject *arg); static PyObject *t_char_isIDPart(PyTypeObject *type, PyObject *arg); static PyObject *t_char_isIDIgnorable(PyTypeObject *type, PyObject *arg); @@ -174,6 +178,8 @@ DECLARE_METHOD(t_char, enumCharNames, METH_VARARGS | METH_CLASS), DECLARE_METHOD(t_char, getPropertyName, METH_VARARGS | METH_CLASS), DECLARE_METHOD(t_char, getPropertyEnum, METH_O | METH_CLASS), + DECLARE_METHOD(t_char, getPropertyValueName, METH_VARARGS | METH_CLASS), + DECLARE_METHOD(t_char, getPropertyValueEnum, METH_VARARGS | METH_CLASS), DECLARE_METHOD(t_char, isIDStart, METH_O | METH_CLASS), DECLARE_METHOD(t_char, isIDPart, METH_O | METH_CLASS), DECLARE_METHOD(t_char, isIDIgnorable, METH_O | METH_CLASS), @@ -702,14 +708,60 @@ static PyObject *t_char_getPropertyEnum(PyTypeObject *type, PyObject *arg) { - char *alias; + charsArg alias; - if (!parseArg(arg, "c", &alias)) + if (!parseArg(arg, "n", &alias)) return PyInt_FromLong(u_getPropertyEnum(alias)); return PyErr_SetArgsError((PyObject *) type, "getPropertyEnum", arg); } +static PyObject *t_char_getPropertyValueName(PyTypeObject *type, PyObject *args) +{ + UPropertyNameChoice choice = U_SHORT_PROPERTY_NAME; + int32_t value; + UProperty prop; + const char *result; + + switch (PyTuple_Size(args)) { + case 2: + if (!parseArgs(args, "ii", &prop, &value)) + { + result = u_getPropertyValueName(prop, value, choice); + if (result != NULL) + return PyString_FromString(result); + Py_RETURN_NONE; + } + break; + case 3: + if (!parseArgs(args, "iii", &prop, &value, &choice)) + { + result = u_getPropertyValueName(prop, value, choice); + if (result != NULL) + return PyString_FromString(result); + Py_RETURN_NONE; + } + break; + } + + return PyErr_SetArgsError((PyObject *) type, "getPropertyValueName", args); +} + +static PyObject *t_char_getPropertyValueEnum(PyTypeObject *type, PyObject *args) +{ + UProperty prop; + charsArg alias; + + switch (PyTuple_Size(args)) { + case 2: + if (!parseArgs(args, "in", &prop, &alias)) + return PyInt_FromLong(u_getPropertyValueEnum(prop, alias)); + break; + } + + return PyErr_SetArgsError((PyObject *) type, "getPropertyValueEnum", args); +} + static PyObject *t_char_fn(uchar32_char_fn fn, const char *name, PyTypeObject *type, PyObject *arg) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/dateformat.cpp new/PyICU-2.4.3/dateformat.cpp --- old/PyICU-2.4.2/dateformat.cpp 2017-04-10 20:56:54.000000000 +0200 +++ new/PyICU-2.4.3/dateformat.cpp 2019-11-16 20:12:16.000000000 +0100 @@ -398,17 +398,21 @@ t_relativedatetimeformatter *self, PyObject *args); static PyObject *t_relativedatetimeformatter_getNumberFormat( t_relativedatetimeformatter *self); +#if U_ICU_VERSION_HEX >= VERSION_HEX(54, 0, 0) static PyObject *t_relativedatetimeformatter_getCapitalizationContext( t_relativedatetimeformatter *self); static PyObject *t_relativedatetimeformatter_getFormatStyle( t_relativedatetimeformatter *self); +#endif static PyMethodDef t_relativedatetimeformatter_methods[] = { DECLARE_METHOD(t_relativedatetimeformatter, format, METH_VARARGS), DECLARE_METHOD(t_relativedatetimeformatter, combineDateAndTime, METH_VARARGS), DECLARE_METHOD(t_relativedatetimeformatter, getNumberFormat, METH_NOARGS), +#if U_ICU_VERSION_HEX >= VERSION_HEX(54, 0, 0) DECLARE_METHOD(t_relativedatetimeformatter, getCapitalizationContext, METH_NOARGS), DECLARE_METHOD(t_relativedatetimeformatter, getFormatStyle, METH_NOARGS), +#endif { NULL, NULL, 0, NULL } }; @@ -1885,8 +1889,8 @@ NumberFormat *number_format; #if U_ICU_VERSION_HEX >= VERSION_HEX(54, 0, 0) UDateRelativeDateTimeFormatterStyle style; -#endif UDisplayContext context; +#endif switch (PyTuple_Size(args)) { case 0: @@ -2045,6 +2049,8 @@ return wrap_NumberFormat(const_cast<NumberFormat *>(&format), 0); } +#if U_ICU_VERSION_HEX >= VERSION_HEX(54, 0, 0) + static PyObject *t_relativedatetimeformatter_getCapitalizationContext( t_relativedatetimeformatter *self) { @@ -2056,6 +2062,7 @@ { return PyInt_FromLong(self->object->getFormatStyle()); } +#endif #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/setup.py new/PyICU-2.4.3/setup.py --- old/PyICU-2.4.2/setup.py 2019-11-12 00:43:40.000000000 +0100 +++ new/PyICU-2.4.3/setup.py 2020-03-19 21:58:31.000000000 +0100 @@ -8,7 +8,7 @@ from distutils.spawn import find_executable -VERSION = '2.4.2' +VERSION = '2.4.3' try: from subprocess import check_output as subprocess_check_output diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/test/test_BytesTrie.py new/PyICU-2.4.3/test/test_BytesTrie.py --- old/PyICU-2.4.2/test/test_BytesTrie.py 2019-09-30 19:28:40.000000000 +0200 +++ new/PyICU-2.4.3/test/test_BytesTrie.py 2019-11-16 20:20:59.000000000 +0100 @@ -28,6 +28,10 @@ class TestBytesTrie(TestCase): + def setUp(self): + if ICU_VERSION < '4.8': + self.skipTest(ICU_VERSION) + def testBuildAndIterate(self): mappings = { 'ab': 3, 'abc': 6, 'abcd': 2, 'abcef': 11, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/test/test_Collator.py new/PyICU-2.4.3/test/test_Collator.py --- old/PyICU-2.4.2/test/test_Collator.py 2018-09-13 23:32:07.000000000 +0200 +++ new/PyICU-2.4.3/test/test_Collator.py 2019-11-16 03:54:24.000000000 +0100 @@ -153,7 +153,7 @@ self.assertTrue(list(allData(index)) == [ ('F', 0, 'bar'), ('T', 0, 'lino')]) - if ICU_VERSION >= '5.1': + if ICU_VERSION >= '51.0': self.assertTrue(len(index.buildImmutableIndex()) == 28) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/test/test_DateTimeParserGenerator.py new/PyICU-2.4.3/test/test_DateTimeParserGenerator.py --- old/PyICU-2.4.2/test/test_DateTimeParserGenerator.py 2017-04-07 17:59:39.000000000 +0200 +++ new/PyICU-2.4.3/test/test_DateTimeParserGenerator.py 2019-11-16 03:56:26.000000000 +0100 @@ -31,6 +31,9 @@ class TestDateTimePatternGenerator(TestCase): def setUp(self): + if ICU_VERSION < '56.0': + self.skipTest(ICU_VERSION) + cal = Calendar.createInstance() cal.setTimeZone(TimeZone.getGMT()) cal.set(2016, 4, 10, 0, 30, 0) # month value is 0-based diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/test/test_LocaleMatcher.py new/PyICU-2.4.3/test/test_LocaleMatcher.py --- old/PyICU-2.4.2/test/test_LocaleMatcher.py 2019-09-27 00:52:15.000000000 +0200 +++ new/PyICU-2.4.3/test/test_LocaleMatcher.py 2019-11-16 03:05:17.000000000 +0100 @@ -23,11 +23,15 @@ import sys, os, six -from unittest import TestCase, main +from unittest import TestCase, main, SkipTest from icu import * class TestLocaleMatcher(TestCase): + def setUp(self): + if ICU_VERSION < '65.0': + self.skipTest(ICU_VERSION) + def testSetSupportedLocales(self): locales = (Locale.getFrance(), Locale.getGermany()) @@ -56,7 +60,6 @@ self.assertEqual(Locale.getGermany(), result.getSupportedLocale()) - if __name__ == "__main__": if ICU_VERSION >= '65.0': main() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/test/test_NumberFormatter.py new/PyICU-2.4.3/test/test_NumberFormatter.py --- old/PyICU-2.4.2/test/test_NumberFormatter.py 2019-03-16 11:03:05.000000000 +0100 +++ new/PyICU-2.4.3/test/test_NumberFormatter.py 2019-11-16 20:23:54.000000000 +0100 @@ -29,18 +29,21 @@ class TestNumberFormatter(TestCase): + def setUp(self): + if ICU_VERSION < '60.0': + self.skipTest(ICU_VERSION) + def testBasic(self): - if ICU_VERSION >= '60.0': - text = NumberFormatter.withLocale(Locale.getUS()).formatInt(1234) - self.assertEqual(text, u'1,234') + text = NumberFormatter.withLocale(Locale.getUS()).formatInt(1234) + self.assertEqual(text, u'1,234') - text = LocalizedNumberFormatter(Locale.getUS()).formatInt(1234) - self.assertEqual(text, u'1,234') + text = LocalizedNumberFormatter(Locale.getUS()).formatInt(1234) + self.assertEqual(text, u'1,234') def testFancy(self): - if ICU_VERSION >= '60.0' and ICU_VERSION < '64.0': + if ICU_VERSION < '64.0': text = NumberFormatter.with_() \ .notation(Notation.compactShort()) \ .unit(CurrencyUnit('EUR')) \ @@ -60,20 +63,19 @@ def testUnit(self): - if ICU_VERSION >= '60.0': - formatter = UnlocalizedNumberFormatter() \ - .sign(UNumberSignDisplay.ALWAYS) \ - .unit(MeasureUnit.createMeter()) \ - .unitWidth(UNumberUnitWidth.FULL_NAME) - - text = formatter.locale(Locale.getUS()).formatInt(1234) - self.assertEqual(text, u'+1,234 meters') - - text = formatter.locale(Locale.getFrance()).formatInt(1234) - if ICU_VERSION >= '63.0': - self.assertEqual(text, u'+1\u202f234\xa0mètres') - else: - self.assertEqual(text, u'+1\xa0234 mètres') + formatter = UnlocalizedNumberFormatter() \ + .sign(UNumberSignDisplay.ALWAYS) \ + .unit(MeasureUnit.createMeter()) \ + .unitWidth(UNumberUnitWidth.FULL_NAME) + + text = formatter.locale(Locale.getUS()).formatInt(1234) + self.assertEqual(text, u'+1,234 meters') + + text = formatter.locale(Locale.getFrance()).formatInt(1234) + if ICU_VERSION >= '63.0': + self.assertEqual(text, u'+1\u202f234\xa0mètres') + else: + self.assertEqual(text, u'+1\xa0234 mètres') if ICU_VERSION >= '61.0': formatter = UnlocalizedNumberFormatter() \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/test/test_PythonReplaceable.py new/PyICU-2.4.3/test/test_PythonReplaceable.py --- old/PyICU-2.4.2/test/test_PythonReplaceable.py 2019-10-01 23:31:17.000000000 +0200 +++ new/PyICU-2.4.3/test/test_PythonReplaceable.py 2019-11-16 03:53:24.000000000 +0100 @@ -57,6 +57,10 @@ class TestPythonReplaceable(TestCase): + def setUp(self): + if ICU_VERSION < '55.0': + self.skipTest(ICU_VERSION) + def testAccess(self): _rep = _Replaceable('abcd') # the python implementation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/test/test_SimpleFormatter.py new/PyICU-2.4.3/test/test_SimpleFormatter.py --- old/PyICU-2.4.2/test/test_SimpleFormatter.py 2018-01-04 17:13:15.000000000 +0100 +++ new/PyICU-2.4.3/test/test_SimpleFormatter.py 2019-11-16 03:08:41.000000000 +0100 @@ -28,6 +28,10 @@ class TestSimpleFormatter(TestCase): + def setUp(self): + if ICU_VERSION < '57.0': + self.skipTest(ICU_VERSION) + def testDefault(self): formatter = SimpleFormatter("{1} '{born}' in {0}") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/test/test_UCharsTrie.py new/PyICU-2.4.3/test/test_UCharsTrie.py --- old/PyICU-2.4.2/test/test_UCharsTrie.py 2019-09-30 19:28:26.000000000 +0200 +++ new/PyICU-2.4.3/test/test_UCharsTrie.py 2019-11-16 20:21:23.000000000 +0100 @@ -28,6 +28,10 @@ class TestUCharsTrie(TestCase): + def setUp(self): + if ICU_VERSION < '4.8': + self.skipTest(ICU_VERSION) + def testBuildAndIterate(self): mappings = { 'ab': 3, 'abc': 6, 'abcd': 2, 'abcef': 11, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyICU-2.4.2/transliterator.cpp new/PyICU-2.4.3/transliterator.cpp --- old/PyICU-2.4.2/transliterator.cpp 2019-10-01 22:27:26.000000000 +0200 +++ new/PyICU-2.4.3/transliterator.cpp 2019-11-16 03:52:11.000000000 +0100 @@ -375,7 +375,9 @@ UnicodeString *u1, _u1; t_utransposition *utransposition; int32_t start, limit, len; +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) PythonReplaceable *rep; +#endif UChar32 c; switch (PyTuple_Size(args)) { @@ -390,11 +392,13 @@ PYTHON_CALL(self->object->transliterate(_u0)); return PyUnicode_FromUnicodeString(&_u0); } +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) if (!parseArgs(args, "P", TYPE_CLASSID(PythonReplaceable), &rep)) { PYTHON_CALL(self->object->transliterate(*rep)); Py_RETURN_ARG(args, 0); } +#endif break; case 2: if (!parseArgs(args, "UO", &UTransPositionType_, &u0, &utransposition)) @@ -407,11 +411,13 @@ STATUS_PYTHON_CALL(self->object->transliterate(_u0, *utransposition->object, status)); return PyUnicode_FromUnicodeString(&_u0); } +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) if (!parseArgs(args, "PO", TYPE_CLASSID(PythonReplaceable), &UTransPositionType_, &rep, &utransposition)) { STATUS_PYTHON_CALL(self->object->transliterate(*rep, *utransposition->object, status)); Py_RETURN_ARG(args, 0); } +#endif break; case 3: if (!parseArgs(args, "Uii", &u0, &start, &limit)) @@ -424,11 +430,13 @@ PYTHON_CALL(self->object->transliterate(_u0, start, limit)); return PyUnicode_FromUnicodeString(&_u0); } +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) if (!parseArgs(args, "Pii", TYPE_CLASSID(PythonReplaceable), &rep, &start, &limit)) { PYTHON_CALL(limit = self->object->transliterate(*rep, start, limit)); return PyInt_FromLong(limit); } +#endif if (!parseArgs(args, "UOS", &UTransPositionType_, &u0, &utransposition, &u1, &_u1)) { @@ -457,6 +465,7 @@ } return PyUnicode_FromUnicodeString(&_u0); } +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) if (!parseArgs(args, "POS", TYPE_CLASSID(PythonReplaceable), &UTransPositionType_, &rep, &utransposition, &u1, &_u1)) { STATUS_CALL(len = toUChar32(*u1, &c, status)); @@ -470,6 +479,7 @@ } Py_RETURN_ARG(args, 0); } +#endif break; } @@ -481,7 +491,9 @@ { UnicodeString *u, _u; t_utransposition *utransposition; +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) PythonReplaceable *rep; +#endif if (!parseArgs(args, "UO", &UTransPositionType_, &u, &utransposition)) { @@ -493,11 +505,13 @@ self->object->finishTransliteration(_u, *utransposition->object); return PyUnicode_FromUnicodeString(&_u); } +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) if (!parseArgs(args, "PO", TYPE_CLASSID(PythonReplaceable), &UTransPositionType_, &rep, &utransposition)) { self->object->finishTransliteration(*rep, *utransposition->object); Py_RETURN_ARG(args, 0); } +#endif return PyErr_SetArgsError((PyObject *) self, "finishTransliteration", args); } @@ -508,7 +522,9 @@ UnicodeString *u, _u; t_utransposition *utransposition; int incremental; +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) PythonReplaceable *rep; +#endif if (!parseArgs(args, "UOB", &UTransPositionType_, &u, &utransposition, &incremental)) @@ -524,12 +540,14 @@ incremental); return PyUnicode_FromUnicodeString(&_u); } +#if U_ICU_VERSION_HEX >= VERSION_HEX(55, 0, 0) if (!parseArgs(args, "POB", TYPE_CLASSID(PythonReplaceable), &UTransPositionType_, &rep, &utransposition, &incremental)) { self->object->filteredTransliterate(*rep, *utransposition->object, incremental); Py_RETURN_ARG(args, 0); } +#endif return PyErr_SetArgsError((PyObject *) self, "filteredTransliterate", args); }