summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Madden <jamadden@gmail.com>2018-10-19 12:07:02 -0500
committerJason Madden <jamadden@gmail.com>2018-10-19 12:07:02 -0500
commita2c0e413df1fd389de57578672e1415121ff9b09 (patch)
treedb1ad825a718240d00f97e766a1cffeaec49f780
parent42699ccf90d352200199dcd8dee0894591d9577b (diff)
downloadzope-i18nmessageid-issue14.tar.gz
Make the Python implementation stop apptempting to pointlessly copy strings and (somewhat pointedly) copy mappings, like the C implementation.issue14
-rw-r--r--src/zope/i18nmessageid/message.py10
-rw-r--r--src/zope/i18nmessageid/tests.py14
2 files changed, 18 insertions, 6 deletions
diff --git a/src/zope/i18nmessageid/message.py b/src/zope/i18nmessageid/message.py
index ed5e08d..70a5053 100644
--- a/src/zope/i18nmessageid/message.py
+++ b/src/zope/i18nmessageid/message.py
@@ -37,11 +37,11 @@ class Message(six.text_type):
msgid_plural=_marker, default_plural=_marker, number=_marker):
self = six.text_type.__new__(cls, ustr)
if isinstance(ustr, self.__class__):
- self.domain = ustr.domain[:] if ustr.domain else None
- self.default = ustr.default[:] if ustr.default else None
- self.mapping = ustr.mapping.copy() if ustr.mapping is not None else None
- self.msgid_plural = ustr.msgid_plural[:] if ustr.msgid_plural else None
- self.default_plural = ustr.default_plural[:] if ustr.default_plural else None
+ self.domain = ustr.domain
+ self.default = ustr.default
+ self.mapping = ustr.mapping
+ self.msgid_plural = ustr.msgid_plural
+ self.default_plural = ustr.default_plural
self.number = ustr.number
else:
self.domain = None
diff --git a/src/zope/i18nmessageid/tests.py b/src/zope/i18nmessageid/tests.py
index d542e48..89ed869 100644
--- a/src/zope/i18nmessageid/tests.py
+++ b/src/zope/i18nmessageid/tests.py
@@ -113,6 +113,19 @@ class PyMessageTests(unittest.TestCase):
self.assertEqual(message.msgid_plural, 'testings')
self.assertEqual(message.default_plural, 'defaults')
self.assertEqual(message.number, 0)
+
+ # Besides just being equal, they maintain their identity
+ for attr in (
+ 'domain',
+ 'default',
+ 'mapping',
+ 'msgid_plural',
+ 'default_plural',
+ 'number',
+ ):
+ self.assertIs(getattr(source, attr),
+ getattr(message, attr))
+
if self._TEST_READONLY:
self.assertTrue(message._readonly)
@@ -156,7 +169,6 @@ class PyMessageTests(unittest.TestCase):
self.assertIsNone(getattr(pref_msg, attr))
self.assertIsNone(getattr(copy, attr))
-
def test_domain_immutable(self):
message = self._makeOne('testing')
with self.assertRaises((TypeError, AttributeError)):