zope.i18n 5.1__py3-none-any.whl → 5.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -113,10 +113,17 @@ class TestGlobalTranslationDomain(TestITranslationDomain, unittest.TestCase):
113
113
  mapping={})
114
114
  msgid2 = factory("48-not-there", 'Message 2 and $msg1',
115
115
  mapping={})
116
- msgid1.mapping['msg2'] = msgid2
117
- msgid2.mapping['msg1'] = msgid1
118
- self.assertRaises(ValueError,
119
- translate, msgid1, None, None, 'en', "default")
116
+ try:
117
+ msgid1.mapping['msg2'] = msgid2
118
+ msgid2.mapping['msg1'] = msgid1
119
+ except TypeError:
120
+ # this is a `zope.i118nmessageid >= 7` message id enforcing
121
+ # immutability; circular references therefore
122
+ # cannot be created in this way
123
+ pass
124
+ else:
125
+ self.assertRaises(ValueError,
126
+ translate, msgid1, None, None, 'en', "default")
120
127
  # Recursive translations also work if the original message id wasn't a
121
128
  # message id but a Unicode with a directly passed mapping
122
129
  self.assertEqual(
@@ -52,7 +52,7 @@ class DirectivesTest(PlacelessSetup, unittest.TestCase):
52
52
  config.ALLOWED_LANGUAGES = self.allowed
53
53
 
54
54
  def testRegisterTranslations(self):
55
- self.assertTrue(queryUtility(ITranslationDomain) is None)
55
+ self.assertIsNone(queryUtility(ITranslationDomain))
56
56
  xmlconfig.string(
57
57
  template % '''
58
58
  <configure package="zope.i18n.tests">
@@ -66,7 +66,7 @@ class DirectivesTest(PlacelessSetup, unittest.TestCase):
66
66
  self.assertEqual(util._catalogs.get('en'), [str(path)])
67
67
 
68
68
  def testAllowedTranslations(self):
69
- self.assertTrue(queryUtility(ITranslationDomain) is None)
69
+ self.assertIsNone(queryUtility(ITranslationDomain))
70
70
  config.ALLOWED_LANGUAGES = ('de', 'fr')
71
71
  xmlconfig.string(
72
72
  template % '''
@@ -81,7 +81,7 @@ class DirectivesTest(PlacelessSetup, unittest.TestCase):
81
81
  {'test': ['test'], 'de': [str(path)]})
82
82
 
83
83
  def testRegisterDistributedTranslations(self):
84
- self.assertTrue(queryUtility(ITranslationDomain, 'zope-i18n') is None)
84
+ self.assertIsNone(queryUtility(ITranslationDomain, 'zope-i18n'))
85
85
  xmlconfig.string(
86
86
  template % '''
87
87
  <configure package="zope.i18n.tests">
@@ -114,7 +114,7 @@ class DirectivesTest(PlacelessSetup, unittest.TestCase):
114
114
 
115
115
  def testRegisterAndCompileTranslations(self):
116
116
  config.COMPILE_MO_FILES = True
117
- self.assertTrue(queryUtility(ITranslationDomain) is None)
117
+ self.assertIsNone(queryUtility(ITranslationDomain))
118
118
 
119
119
  # Copy an old and outdated file over, so we can test if the
120
120
  # newer file check works
@@ -151,8 +151,8 @@ class DirectivesTest(PlacelessSetup, unittest.TestCase):
151
151
  os.utime(path, (path_atime, path_mtime))
152
152
 
153
153
  def testRegisterTranslationsForDomain(self):
154
- self.assertTrue(queryUtility(ITranslationDomain, 'zope-i18n') is None)
155
- self.assertTrue(queryUtility(ITranslationDomain, 'zope-i18n2') is None)
154
+ self.assertIsNone(queryUtility(ITranslationDomain, 'zope-i18n'))
155
+ self.assertIsNone(queryUtility(ITranslationDomain, 'zope-i18n2'))
156
156
  xmlconfig.string(
157
157
  template % '''
158
158
  <configure package="zope.i18n.tests">
@@ -166,7 +166,7 @@ class DirectivesTest(PlacelessSetup, unittest.TestCase):
166
166
  self.assertEqual(util._catalogs,
167
167
  {'test': ['test'], 'en': [str(path)]})
168
168
 
169
- self.assertTrue(queryUtility(ITranslationDomain, 'zope-i18n2') is None)
169
+ self.assertIsNone(queryUtility(ITranslationDomain, 'zope-i18n2'))
170
170
 
171
171
 
172
172
  def test_suite():
@@ -0,0 +1 @@
1
+ import sys, types, os;p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('zope',));importlib = __import__('importlib.util');__import__('importlib.machinery');m = sys.modules.setdefault('zope', importlib.util.module_from_spec(importlib.machinery.PathFinder.find_spec('zope', [os.path.dirname(p)])));m = m or sys.modules.setdefault('zope', types.ModuleType('zope'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p)
@@ -1,11 +1,11 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: zope.i18n
3
- Version: 5.1
3
+ Version: 5.3
4
4
  Summary: Zope Internationalization Support
5
5
  Home-page: https://github.com/zopefoundation/zope.i18n
6
6
  Author: Zope Foundation and Contributors
7
7
  Author-email: zope-dev@zope.dev
8
- License: ZPL 2.1
8
+ License: ZPL-2.1
9
9
  Keywords: zope3 internationalization localization i18n l10n gettext ICU locale
10
10
  Classifier: Development Status :: 5 - Production/Stable
11
11
  Classifier: Environment :: Web Environment
@@ -13,41 +13,53 @@ Classifier: Intended Audience :: Developers
13
13
  Classifier: License :: OSI Approved :: Zope Public License
14
14
  Classifier: Programming Language :: Python
15
15
  Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.7
17
- Classifier: Programming Language :: Python :: 3.8
18
16
  Classifier: Programming Language :: Python :: 3.9
19
17
  Classifier: Programming Language :: Python :: 3.10
20
18
  Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
21
  Classifier: Programming Language :: Python :: Implementation :: CPython
22
22
  Classifier: Programming Language :: Python :: Implementation :: PyPy
23
23
  Classifier: Natural Language :: English
24
24
  Classifier: Operating System :: OS Independent
25
25
  Classifier: Topic :: Internet :: WWW/HTTP
26
26
  Classifier: Framework :: Zope :: 3
27
- Requires-Python: >=3.7
27
+ Requires-Python: >=3.9
28
28
  License-File: LICENSE.txt
29
29
  Requires-Dist: setuptools
30
30
  Requires-Dist: python-gettext
31
31
  Requires-Dist: pytz
32
32
  Requires-Dist: zope.deprecation
33
33
  Requires-Dist: zope.schema
34
- Requires-Dist: zope.i18nmessageid >=4.3
34
+ Requires-Dist: zope.i18nmessageid>=4.3
35
35
  Requires-Dist: zope.component
36
- Provides-Extra: compile
37
- Provides-Extra: docs
38
- Requires-Dist: Sphinx ; extra == 'docs'
39
- Requires-Dist: repoze.sphinx.autointerface ; extra == 'docs'
40
36
  Provides-Extra: test
41
- Requires-Dist: zope.component[zcml] ; extra == 'test'
42
- Requires-Dist: zope.configuration ; extra == 'test'
43
- Requires-Dist: zope.security ; extra == 'test'
44
- Requires-Dist: zope.publisher ; extra == 'test'
45
- Requires-Dist: zope.testing ; extra == 'test'
46
- Requires-Dist: zope.testrunner ; extra == 'test'
37
+ Requires-Dist: zope.component[zcml]; extra == "test"
38
+ Requires-Dist: zope.configuration; extra == "test"
39
+ Requires-Dist: zope.security; extra == "test"
40
+ Requires-Dist: zope.publisher; extra == "test"
41
+ Requires-Dist: zope.testing; extra == "test"
42
+ Requires-Dist: zope.testrunner; extra == "test"
43
+ Provides-Extra: compile
47
44
  Provides-Extra: zcml
48
- Requires-Dist: zope.component[zcml] ; extra == 'zcml'
49
- Requires-Dist: zope.configuration ; extra == 'zcml'
50
- Requires-Dist: zope.security ; extra == 'zcml'
45
+ Requires-Dist: zope.component[zcml]; extra == "zcml"
46
+ Requires-Dist: zope.configuration; extra == "zcml"
47
+ Requires-Dist: zope.security; extra == "zcml"
48
+ Provides-Extra: docs
49
+ Requires-Dist: Sphinx; extra == "docs"
50
+ Requires-Dist: repoze.sphinx.autointerface; extra == "docs"
51
+ Dynamic: author
52
+ Dynamic: author-email
53
+ Dynamic: classifier
54
+ Dynamic: description
55
+ Dynamic: home-page
56
+ Dynamic: keywords
57
+ Dynamic: license
58
+ Dynamic: license-file
59
+ Dynamic: provides-extra
60
+ Dynamic: requires-dist
61
+ Dynamic: requires-python
62
+ Dynamic: summary
51
63
 
52
64
  zope.i18n
53
65
  =========
@@ -88,6 +100,25 @@ localization.
88
100
  CHANGES
89
101
  =========
90
102
 
103
+ 5.3 (2025-07-23)
104
+ ================
105
+
106
+ - Add support for Python 3.13.
107
+
108
+ - Drop support for Python 3.8.
109
+
110
+
111
+ 5.2 (2024-09-27)
112
+ ================
113
+
114
+ - Add support for Python 3.12.
115
+
116
+ - Drop support for Python 3.7.
117
+
118
+ - Fix test incompatibility for ``zope.i18nmessageid >= 7.0``
119
+ (`#62 <https://github.com/zopefoundation/zope.i18n/issues/62>`_).
120
+
121
+
91
122
  5.1 (2023-08-28)
92
123
  ================
93
124
 
@@ -1,16 +1,16 @@
1
- zope.i18n-5.1-py3.11-nspkg.pth,sha256=SWEVH-jEWsKYrL0qoC6GBJaStx_iKxGoAY9PQycFVC4,529
1
+ zope.i18n-5.3-py3.12-nspkg.pth,sha256=_l6EZJaefCi1yytmDbFQGX_jfS2gAtFyaDmlK1uFLec,457
2
2
  zope/i18n/__init__.py,sha256=NMpvR4IsTXy_OficD1vx2eR6yzJMWRaONWmMibaX-l8,7514
3
3
  zope/i18n/compile.py,sha256=0kpclbhChlZQIbfTctPp4Cqc2F5RqEcR7jquLnkcLh4,1429
4
4
  zope/i18n/config.py,sha256=20aYlJ4eg-2iuSXHDRqXkkzALDa4URhRchKvFPH9Y6I,1669
5
5
  zope/i18n/configure.zcml,sha256=oebDJrOzCVDc6U957WVABZiA4GpG061rEHil-9lJ_Uc,278
6
- zope/i18n/format.py,sha256=scyOZ6tr_J1HPrBjggu-ci8c9KGfrluA9rFbWL8F_OY,34955
6
+ zope/i18n/format.py,sha256=j2HFlXVC10c4_woTlqv-wTHRpUrYMsU7NHkuA3WPGF4,34941
7
7
  zope/i18n/gettextmessagecatalog.py,sha256=kyGa_Y4X2_EY6X3viIvz3GuLOVZvk_vSAFEAb0SMOgM,3726
8
8
  zope/i18n/i18nobject.txt,sha256=mi5UD13ZvBxNLSNGvPMVy1We2rFCMpuF1fTJnl9Rc8I,3074
9
9
  zope/i18n/meta.zcml,sha256=ymIRohOID745zvv_jCCRUOkrvRMeOOx_umKSS_0EtME,396
10
10
  zope/i18n/negotiator.py,sha256=RNLHH1YYouj6IcceQr5Q_1m6whRx0nMMHJyw9iB7GnI,2159
11
11
  zope/i18n/simpletranslationdomain.py,sha256=idz4JmY9U70bJK2Ut8TReYhB70Rjd2TgFxNYuVJps7E,2669
12
12
  zope/i18n/testing.py,sha256=hZlCwqiY-mfaRjOdsynCLQz39lJrUGDrQiJM6jieZiM,2052
13
- zope/i18n/testmessagecatalog.py,sha256=F4E_Y3XC7tciL-P3JDDAIzoCpKHNjEO3cyoL_B89Dv0,1723
13
+ zope/i18n/testmessagecatalog.py,sha256=kmyXIjJmps5RvHPRxm6aXZgzCazikwpOTYbRNg-D4E4,1703
14
14
  zope/i18n/testmessagecatalog.rst,sha256=SdsHRBM6rus52_XmPgztuzg7oA2cjBhfofHPstLBJec,1910
15
15
  zope/i18n/translationdomain.py,sha256=6TWaKavvCUrpd3Phprcmy0WliRaO6IVXzTgZiIa6bvs,7645
16
16
  zope/i18n/zcml.py,sha256=qFQ7fFigMbXrJOI-almGq5yojtN79mY2ccSVmK-Dmuw,5080
@@ -317,7 +317,7 @@ zope/i18n/tests/__init__.py,sha256=690b_c98_VbdhbkaIIiCjDZc8aFNpJYPu9eSy_5lq-w,6
317
317
  zope/i18n/tests/configure.txt,sha256=QwqTf4X5jAy_YfBel4dbablEVqCzsqllr5vm33jmpvU,488
318
318
  zope/i18n/tests/test.py,sha256=pzvIS-cWySb-MN4sF50bdcTOfuCpWa7Xickbm_qe9Rk,1146
319
319
  zope/i18n/tests/test_compile.py,sha256=9XGD7n_IRuurzspmqOtyyArknHWgOuUxHhWd-SRvKJM,2274
320
- zope/i18n/tests/test_formats.py,sha256=kTy7Ix_ILK5WlAtj7IhIYdQ5jkQAp99KUk6I4lg-qrI,60133
320
+ zope/i18n/tests/test_formats.py,sha256=zb0jRqZHrJ1LuTsUzR8gbV8rIgJBYixgzPCo8Ih158Y,62010
321
321
  zope/i18n/tests/test_gettextmessagecatalog.py,sha256=gbT9eUtXmIqaWqx6NeZrEw-PYvMC9XstNLhYu6oKe7E,1356
322
322
  zope/i18n/tests/test_imessagecatalog.py,sha256=vEAdVNT-csTV_lHk9JYAwy8k9DJOZAQ12zzJ31wDYfs,2304
323
323
  zope/i18n/tests/test_itranslationdomain.py,sha256=XvkndUhZZ7CplyWoVjfb5Kdfw6RZKVJZGc0ql4lTbyU,4114
@@ -325,8 +325,8 @@ zope/i18n/tests/test_negotiator.py,sha256=SKCHns3rgUVAGgcxCfaB91gUeDPawkM7Us7LXj
325
325
  zope/i18n/tests/test_plurals.py,sha256=RpVI5MmYJu47cxV4wr-YRs4UhatP17ITq-Glf_0bBuA,12821
326
326
  zope/i18n/tests/test_simpletranslationdomain.py,sha256=JK0-yjKb2tvOGw8DrlcE0fG0aBdAf849jerUHROktEc,1409
327
327
  zope/i18n/tests/test_testmessagecatalog.py,sha256=lJdxoaqwXyAdpkUVtL9iO2vKrU8gfrq1OHQF11dmOk0,783
328
- zope/i18n/tests/test_translationdomain.py,sha256=1C-v2KtFnPONNFHpisMCuJw5Clr87lsr0eYXVqxfagQ,11824
329
- zope/i18n/tests/test_zcml.py,sha256=zRH5g0WCTzD0l0hlU_0is51vwqBY3QoTDMeZlnMvLhY,7055
328
+ zope/i18n/tests/test_translationdomain.py,sha256=Mp7ZJ8d02xyBjaRyuJAkqalG89XdaHKNpZScVliFZFI,12084
329
+ zope/i18n/tests/test_zcml.py,sha256=hfBW9gHgX7euDyPhmnZKzWt0o6uWCe5JAXykJ2__lSw,7013
330
330
  zope/i18n/tests/testi18nawareobject.py,sha256=MxG1mOYvcB5-pI_lHjdG3trQlW6A_aRA3wQsExqGpRE,3218
331
331
  zope/i18n/tests/locale/de/LC_MESSAGES/zope-i18n.mo,sha256=hvyVplTpEPj_Du85TmnqGTV5t0GqPO04A7NdBy15BLs,277
332
332
  zope/i18n/tests/locale/de/LC_MESSAGES/zope-i18n.po,sha256=4H0LHuWcXybGArSmIXF3cKckfMjmViT9Cet8r4FB6do,276
@@ -356,9 +356,9 @@ zope/i18n/tests/locale3/en/LC_MESSAGES/zope-i18n.mo,sha256=8yHbDhd1pX_kC8c4gUoqb
356
356
  zope/i18n/tests/locale3/en/LC_MESSAGES/zope-i18n.po,sha256=93dkAV6YWB1n31wDtAzlIHln-9StXSkLNzcbGMoO8VY,294
357
357
  zope/i18n/tests/locale3/en/LC_MESSAGES/zope-i18n2.mo,sha256=_1PrSjMzwuIv6-vsT7_EQmphH4QTLIj9ltK98C_bbKo,291
358
358
  zope/i18n/tests/locale3/en/LC_MESSAGES/zope-i18n2.po,sha256=5q-1okvFJffR926Z4NUiz6EmEbTp8lR0iM-OckZ8R3k,290
359
- zope.i18n-5.1.dist-info/LICENSE.txt,sha256=PmcdsR32h1FswdtbPWXkqjg-rKPCDOo_r1Og9zNdCjw,2070
360
- zope.i18n-5.1.dist-info/METADATA,sha256=mwgIQZz_RWys8sKMSfWgh-LLQAJMhi2--WH1DWrcpLE,13931
361
- zope.i18n-5.1.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92
362
- zope.i18n-5.1.dist-info/namespace_packages.txt,sha256=QpUHvpO4wIuZDeEgKY8qZCtD-tAukB0fn_f6utzlb98,5
363
- zope.i18n-5.1.dist-info/top_level.txt,sha256=QpUHvpO4wIuZDeEgKY8qZCtD-tAukB0fn_f6utzlb98,5
364
- zope.i18n-5.1.dist-info/RECORD,,
359
+ zope_i18n-5.3.dist-info/licenses/LICENSE.txt,sha256=PmcdsR32h1FswdtbPWXkqjg-rKPCDOo_r1Og9zNdCjw,2070
360
+ zope_i18n-5.3.dist-info/METADATA,sha256=eaNUs7T1PqonVxblGiJoQrkbzHL86_93SWZwOkKKBwA,14495
361
+ zope_i18n-5.3.dist-info/WHEEL,sha256=lTU6B6eIfYoiQJTZNc-fyaR6BpL6ehTzU3xGYxn2n8k,91
362
+ zope_i18n-5.3.dist-info/namespace_packages.txt,sha256=QpUHvpO4wIuZDeEgKY8qZCtD-tAukB0fn_f6utzlb98,5
363
+ zope_i18n-5.3.dist-info/top_level.txt,sha256=QpUHvpO4wIuZDeEgKY8qZCtD-tAukB0fn_f6utzlb98,5
364
+ zope_i18n-5.3.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.1)
2
+ Generator: setuptools (78.1.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1 +0,0 @@
1
- import sys, types, os;has_mfs = sys.version_info > (3, 5);p = os.path.join(sys._getframe(1).f_locals['sitedir'], *('zope',));importlib = has_mfs and __import__('importlib.util');has_mfs and __import__('importlib.machinery');m = has_mfs and sys.modules.setdefault('zope', importlib.util.module_from_spec(importlib.machinery.PathFinder.find_spec('zope', [os.path.dirname(p)])));m = m or sys.modules.setdefault('zope', types.ModuleType('zope'));mp = (m or []) and m.__dict__.setdefault('__path__',[]);(p not in mp) and mp.append(p)