diff options
author | Jason Madden <jamadden@gmail.com> | 2018-10-19 12:07:02 -0500 |
---|---|---|
committer | Jason Madden <jamadden@gmail.com> | 2018-10-19 12:07:02 -0500 |
commit | a2c0e413df1fd389de57578672e1415121ff9b09 (patch) | |
tree | db1ad825a718240d00f97e766a1cffeaec49f780 /src | |
parent | 42699ccf90d352200199dcd8dee0894591d9577b (diff) | |
download | zope-i18nmessageid-a2c0e413df1fd389de57578672e1415121ff9b09.tar.gz |
Make the Python implementation stop apptempting to pointlessly copy strings and (somewhat pointedly) copy mappings, like the C implementation.issue14
Diffstat (limited to 'src')
-rw-r--r-- | src/zope/i18nmessageid/message.py | 10 | ||||
-rw-r--r-- | src/zope/i18nmessageid/tests.py | 14 |
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)): |