summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSylvain Viollon <sviollon@minddistrict.com>2018-10-18 12:28:45 +0200
committerSylvain Viollon <sviollon@minddistrict.com>2018-10-18 12:28:45 +0200
commit13a729411191c94c4384f33c5daed1f408b352fc (patch)
treed3f598e591009a638c62c968ecf52edcf2e85c10
parentd73a4b79c31f931a0c73f8364ca82153d3845215 (diff)
downloadzope-i18nmessageid-13a729411191c94c4384f33c5daed1f408b352fc.tar.gz
Fix override with None.
-rw-r--r--src/zope/i18nmessageid/message.py29
-rw-r--r--src/zope/i18nmessageid/tests.py17
2 files changed, 28 insertions, 18 deletions
diff --git a/src/zope/i18nmessageid/message.py b/src/zope/i18nmessageid/message.py
index 72c8441..4bfcb19 100644
--- a/src/zope/i18nmessageid/message.py
+++ b/src/zope/i18nmessageid/message.py
@@ -14,6 +14,7 @@
"""I18n Messages and factories.
"""
__docformat__ = "reStructuredText"
+_marker = object()
import six
@@ -32,21 +33,29 @@ class Message(six.text_type):
'domain', 'default', 'mapping', '_readonly',
'msgid_plural', 'default_plural', 'number')
- def __new__(cls, ustr, domain=None, default=None, mapping=None,
- msgid_plural=None, default_plural=None, number=None):
+ def __new__(cls, ustr, domain=_marker, default=_marker, mapping=_marker,
+ msgid_plural=_marker, default_plural=_marker, number=_marker):
self = six.text_type.__new__(cls, ustr)
if isinstance(ustr, self.__class__):
- domain = domain if ustr.domain is None else ustr.domain[:]
- default = default if ustr.default is None else ustr.default[:]
- mapping = mapping if ustr.mapping is None else ustr.mapping.copy()
+ domain = ustr.domain[:] if domain is _marker else domain
+ default = ustr.default[:] if default is _marker else default
+ mapping = ustr.mapping.copy() if mapping is _marker else mapping
msgid_plural = (
- msgid_plural if ustr.msgid_plural is None else
- ustr.msgid_plural[:])
+ ustr.msgid_plural[:] if msgid_plural is _marker else
+ msgid_plural)
default_plural = (
- default_plural if ustr.default_plural is None else
- ustr.default_plural[:])
- number = number if ustr.number is None else ustr.number
+ ustr.default_plural[:] if default_plural is _marker else
+ default_plural)
+ number = ustr.number if number is _marker else number
ustr = six.text_type(ustr)
+ else:
+ domain = None if domain is _marker else domain
+ default = None if default is _marker else default
+ mapping = None if mapping is _marker else mapping
+ msgid_plural = None if msgid_plural is _marker else msgid_plural
+ default_plural = (None if default_plural is _marker else
+ default_plural)
+ number = None if number is _marker else number
self.domain = domain
self.default = default
diff --git a/src/zope/i18nmessageid/tests.py b/src/zope/i18nmessageid/tests.py
index 13200f4..56074c1 100644
--- a/src/zope/i18nmessageid/tests.py
+++ b/src/zope/i18nmessageid/tests.py
@@ -118,17 +118,18 @@ class PyMessageTests(unittest.TestCase):
def test_copy_with_overrides(self):
mapping = {'key': 'value'}
- source = self._makeOne('testing')
+ source = self._makeOne(
+ 'testing', 'domain', default='other', mapping=mapping,
+ msgid_plural='workings', default_plural='others', number=3)
message = self._makeOne(
- source, 'domain', 'default', mapping,
- msgid_plural='testings', default_plural="defaults", number=2)
+ source, mapping=None, msgid_plural='override', number=0)
self.assertEqual(message, 'testing')
self.assertEqual(message.domain, 'domain')
- self.assertEqual(message.default, 'default')
- self.assertEqual(message.mapping, mapping)
- self.assertEqual(message.msgid_plural, 'testings')
- self.assertEqual(message.default_plural, 'defaults')
- self.assertEqual(message.number, 2)
+ self.assertEqual(message.default, 'other')
+ self.assertEqual(message.mapping, None)
+ self.assertEqual(message.msgid_plural, 'override')
+ self.assertEqual(message.default_plural, 'others')
+ self.assertEqual(message.number, 0)
if self._TEST_READONLY:
self.assertTrue(message._readonly)