Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-zope.i18nmessageid for openSUSE:Factory checked in at 2023-05-09 13:06:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-zope.i18nmessageid (Old) and /work/SRC/openSUSE:Factory/.python-zope.i18nmessageid.new.1533 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-zope.i18nmessageid" Tue May 9 13:06:56 2023 rev:15 rq:1085137 version:6.0.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-zope.i18nmessageid/python-zope.i18nmessageid.changes 2023-05-04 17:09:59.952162844 +0200 +++ /work/SRC/openSUSE:Factory/.python-zope.i18nmessageid.new.1533/python-zope.i18nmessageid.changes 2023-05-09 13:07:09.572957310 +0200 @@ -1,0 +2,8 @@ +Fri May 5 14:24:11 UTC 2023 - Dirk Müller <dmuel...@suse.com> + +- update to 6.0.1: + * Drop dependency on ``six``. + * Drop support for Python 2.7, 3.5, 3.6. + * Add preliminary support for Python 3.12a5. + +------------------------------------------------------------------- Old: ---- zope.i18nmessageid-5.1.1.tar.gz New: ---- zope.i18nmessageid-6.0.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-zope.i18nmessageid.spec ++++++ --- /var/tmp/diff_new_pack.KTJ3xb/_old 2023-05-09 13:07:10.184960953 +0200 +++ /var/tmp/diff_new_pack.KTJ3xb/_new 2023-05-09 13:07:10.196961024 +0200 @@ -25,8 +25,9 @@ %define psuffix %{nil} %bcond_with test %endif +%{?sle15_python_module_pythons} Name: python-zope.i18nmessageid%{psuffix} -Version: 5.1.1 +Version: 6.0.1 Release: 0 Summary: Zope Location License: ZPL-2.1 @@ -39,7 +40,6 @@ BuildRequires: python-rpm-macros # SECTION documentation requirements BuildRequires: python3-Sphinx -Requires: python-six # /SECTION # SECTION testing requirements %if %{with test} ++++++ zope.i18nmessageid-5.1.1.tar.gz -> zope.i18nmessageid-6.0.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/.manylinux-install.sh new/zope.i18nmessageid-6.0.1/.manylinux-install.sh --- old/zope.i18nmessageid-5.1.1/.manylinux-install.sh 2022-11-17 15:09:48.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/.manylinux-install.sh 2023-03-24 07:58:02.000000000 +0100 @@ -28,9 +28,7 @@ tox_env_map() { case $1 in - *"cp27"*) echo 'py27';; - *"cp35"*) echo 'py35';; - *"cp36"*) echo 'py36';; + *"cp312"*) echo 'py312';; *"cp37"*) echo 'py37';; *"cp38"*) echo 'py38';; *"cp39"*) echo 'py39';; @@ -43,16 +41,19 @@ # Compile wheels for PYBIN in /opt/python/*/bin; do if \ - [[ "${PYBIN}" == *"cp27"* ]] || \ - [[ "${PYBIN}" == *"cp35"* ]] || \ + [[ "${PYBIN}" == *"cp312"* ]] || \ [[ "${PYBIN}" == *"cp311"* ]] || \ - [[ "${PYBIN}" == *"cp36"* ]] || \ [[ "${PYBIN}" == *"cp37"* ]] || \ [[ "${PYBIN}" == *"cp38"* ]] || \ [[ "${PYBIN}" == *"cp39"* ]] || \ [[ "${PYBIN}" == *"cp310"* ]] ; then - "${PYBIN}/pip" install -e /io/ - "${PYBIN}/pip" wheel /io/ -w wheelhouse/ + if [[ "${PYBIN}" == *"cp312"* ]] ; then + "${PYBIN}/pip" install --pre -e /io/ + "${PYBIN}/pip" wheel /io/ --pre -w wheelhouse/ + else + "${PYBIN}/pip" install -e /io/ + "${PYBIN}/pip" wheel /io/ -w wheelhouse/ + fi if [ `uname -m` == 'aarch64' ]; then cd /io/ ${PYBIN}/pip install tox diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/CHANGES.rst new/zope.i18nmessageid-6.0.1/CHANGES.rst --- old/zope.i18nmessageid-5.1.1/CHANGES.rst 2022-11-17 15:26:18.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/CHANGES.rst 2023-03-24 07:58:02.000000000 +0100 @@ -2,6 +2,20 @@ Changes ========= +6.0.1 (2023-03-24) +================== + +- Drop dependency on ``six``. + + +6.0.0 (2023-03-23) +================== + +- Drop support for Python 2.7, 3.5, 3.6. + +- Add preliminary support for Python 3.12a5. + + 5.1.1 (2022-11-17) ================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/PKG-INFO new/zope.i18nmessageid-6.0.1/PKG-INFO --- old/zope.i18nmessageid-5.1.1/PKG-INFO 2022-11-17 16:10:00.848174800 +0100 +++ new/zope.i18nmessageid-6.0.1/PKG-INFO 2023-03-24 07:58:03.586184700 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: zope.i18nmessageid -Version: 5.1.1 +Version: 6.0.1 Summary: Message Identifiers for internationalization Home-page: https://github.com/zopefoundation/zope.i18nmessageid Author: Zope Foundation and Contributors @@ -12,11 +12,7 @@ Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Zope Public License Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 @@ -28,7 +24,7 @@ Classifier: Operating System :: OS Independent Classifier: Topic :: Internet :: WWW/HTTP Classifier: Framework :: Zope :: 3 -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* +Requires-Python: >=3.7 Provides-Extra: testing Provides-Extra: test Provides-Extra: docs @@ -78,6 +74,20 @@ Changes ========= +6.0.1 (2023-03-24) +================== + +- Drop dependency on ``six``. + + +6.0.0 (2023-03-23) +================== + +- Drop support for Python 2.7, 3.5, 3.6. + +- Add preliminary support for Python 3.12a5. + + 5.1.1 (2022-11-17) ================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/appveyor.yml new/zope.i18nmessageid-6.0.1/appveyor.yml --- old/zope.i18nmessageid-5.1.1/appveyor.yml 2022-11-17 15:09:48.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/appveyor.yml 2023-03-24 07:58:02.000000000 +0100 @@ -9,14 +9,14 @@ secure: aoZC/+rvJKg8B5GMGIxd1VZ0Oxtmc0lPMiqT2wHP5qBRoZf6tEB7n9u7uCIifcAX1IWsLCRF7DKWvvCQTFJL5HcQvXFQSnEuXvdMT/utFFx9eCCy+Cu+WuWkasGCG+gx9uhMTe01mixi8yujgVj894Xjdv5YyNH2dPeqV5kInTzYrOmKZs1FTvKTlYZNHyYWRnYhyaLBn4FmmeuXuFcd5o05jkaa2dnerW85F3sr7mWbCgL4GpEQ59rYX34Cl4EdEXw+IViTyFWJuZp+k9GCUnzxAmA+vlfoSbZ6JfvTLaU= matrix: - - python: 27-x64 - - python: 35-x64 - - python: 36-x64 - python: 37-x64 - python: 38-x64 - python: 39-x64 - python: 310-x64 - python: 311-x64 + # `multibuild` cannot install non-final versions as they are not on + # ftp.python.org, so we skip Python 3.11 until its final release: + # - python: 312-x64 install: - "SET PYTHONVERSION=%PYTHON%" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/docs/_build/doctest/output.txt new/zope.i18nmessageid-6.0.1/docs/_build/doctest/output.txt --- old/zope.i18nmessageid-5.1.1/docs/_build/doctest/output.txt 2022-11-06 13:20:00.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/docs/_build/doctest/output.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,17 +0,0 @@ -Results of doctest builder run on 2022-11-06 13:20:00 -===================================================== - -Document: narr --------------- -1 items passed all tests: - 36 tests in default -36 tests in 1 items. -36 passed and 0 failed. -Test passed. - -Doctest summary -=============== - 36 tests - 0 failures in tests - 0 failures in setup code - 0 failures in cleanup code diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/docs/_build/html/_sources/api.rst.txt new/zope.i18nmessageid-6.0.1/docs/_build/html/_sources/api.rst.txt --- old/zope.i18nmessageid-5.1.1/docs/_build/html/_sources/api.rst.txt 2022-11-03 15:37:34.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/docs/_build/html/_sources/api.rst.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,11 +0,0 @@ -:mod:`zope.i18nmessageid` API Reference -======================================= - -:mod:`zope.i18nmessageid.message` ---------------------------------- - -.. automodule:: zope.i18nmessageid.message - - .. autoclass:: Message - - .. autoclass:: MessageFactory diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/docs/_build/html/_sources/hacking.rst.txt new/zope.i18nmessageid-6.0.1/docs/_build/html/_sources/hacking.rst.txt --- old/zope.i18nmessageid-5.1.1/docs/_build/html/_sources/hacking.rst.txt 2022-11-03 15:37:34.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/docs/_build/html/_sources/hacking.rst.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,300 +0,0 @@ -Hacking on :mod:`zope.i18nmessageid` -==================================== - - -Getting the Code -################ - -The main repository for :mod:`zope.i18nmessageid` is in the Zope Foundation -Github repository: - - https://github.com/zopefoundation/zope.i18nmessageid - -You can get a read-only checkout from there: - -.. code-block:: sh - - $ git clone https://github.com/zopefoundation/zope.i18nmessageid.git - -or fork it and get a writeable checkout of your fork: - -.. code-block:: sh - - $ git clone g...@github.com/jrandom/zope.i18nmessageid.git - -The project also mirrors the trunk from the Github repository as a -Bazaar branch on Launchpad: - -https://code.launchpad.net/zope.i8nmessageid - -You can branch the trunk from there using Bazaar: - -.. code-block:: sh - - $ bzr branch lp:zope.i8nmessageid - - - -Working in a ``virtualenv`` -########################### - -Installing ----------- - -If you use the ``virtualenv`` package to create lightweight Python -development environments, you can run the tests using nothing more -than the ``python`` binary in a virtualenv. First, create a scratch -environment: - -.. code-block:: sh - - $ /path/to/virtualenv --no-site-packages /tmp/hack-zope.i18nmessageid - -Next, get this package registered as a "development egg" in the -environment: - -.. code-block:: sh - - $ /tmp/hack-zope.i8nmessageid/bin/python setup.py develop - -Running the tests ------------------ - -Run the tests using the build-in ``setuptools`` testrunner: - -.. code-block:: sh - - $ /tmp/hack-zope.i8nmessageid/bin/python setup.py test -q - running test - .................... - ---------------------------------------------------------------------- - Ran 20 tests in 0.001s - - OK - -The ``dev`` command alias downloads and installs extra tools, like the -:mod:`nose` testrunner and the :mod:`coverage` coverage analyzer: - -.. code-block:: sh - - $ /tmp/hack-zope.i8nmessageid/bin/python setup.py dev - $ /tmp/hack-zope.i8nmessageid/bin/nosetests - running nosetests - .................... - ---------------------------------------------------------------------- - Ran 20 tests in 0.030s - - OK - -If you have the :mod:`coverage` pacakge installed in the virtualenv, -you can see how well the tests cover the code: - -.. code-block:: sh - - $ /tmp/hack-zope.i8nmessageid/bin/nosetests --with coverage - running nosetests - .................... - Name Stmts Miss Cover Missing - ---------------------------------------------------------- - zope.i18nmessageid 3 0 100% - zope.i18nmessageid.message 36 0 100% - ---------------------------------------------------------- - TOTAL 39 0 100% - ---------------------------------------------------------------------- - Ran 21 tests in 0.036s - - OK - - -Building the documentation --------------------------- - -:mod:`zope.i18nmessageid` uses the nifty :mod:`Sphinx` documentation system -for building its docs. Using the same virtualenv you set up to run the -tests, you can build the docs: - -The ``docs`` command alias downloads and installs Sphinx and its dependencies: - -.. code-block:: sh - - $ /tmp/hack-zope.i8nmessageid/bin/python setup.py docs - ... - $ bin/sphinx-build -b html -d docs/_build/doctrees docs docs/_build/html - ... - build succeeded. - -You can also test the code snippets in the documentation: - -.. code-block:: sh - - $ bin/sphinx-build -b doctest -d docs/_build/doctrees docs docs/_build/doctest - ... - running tests... - - Document: index - --------------- - 1 items passed all tests: - 17 tests in default - 17 tests in 1 items. - 17 passed and 0 failed. - Test passed. - - Doctest summary - =============== - 17 tests - 0 failures in tests - 0 failures in setup code - build succeeded. - - -Using :mod:`zc.buildout` -######################## - -Setting up the buildout ------------------------ - -:mod:`zope.i18nmessageid` ships with its own :file:`buildout.cfg` file and -:file:`bootstrap.py` for setting up a development buildout: - -.. code-block:: sh - - $ /path/to/python2.6 bootstrap.py - ... - Generated script '.../bin/buildout' - $ bin/buildout - Develop: '/home/jrandom/projects/Zope/BTK/i18nmessageid/.' - ... - Generated script '.../bin/sphinx-quickstart'. - Generated script '.../bin/sphinx-build'. - - -Running the tests ------------------ - -You can now run the tests: - -.. code-block:: sh - - $ bin/test --all - Running zope.testing.testrunner.layer.UnitTests tests: - Set up zope.testing.testrunner.layer.UnitTests in 0.000 seconds. - Ran 702 tests with 0 failures and 0 errors in 0.000 seconds. - Tearing down left over layers: - Tear down zope.testing.testrunner.layer.UnitTests in 0.000 seconds. - - -Using :mod:`tox` -################ - - -Running Tests on Multiple Python Versions ------------------------------------------ - -`tox <http://tox.testrun.org/latest/>`_ is a Python-based test automation -tool designed to run tests against multiple Python versions. It creates -a ``virtualenv`` for each configured version, installs the current package -and configured dependencies into each ``virtualenv``, and then runs the -configured commands. - -:mod:`zope.i18nmessageid` configures the following :mod:`tox` environments via -its ``tox.ini`` file: - -- The ``py26``, ``py27``, ``py33``, ``py34``, and ``pypy`` environments - builds a ``virtualenv`` with ``pypy``, - installs :mod:`zope.i18nmessageid` and dependencies, and runs the tests - via ``python setup.py test -q``. - -- The ``coverage`` environment builds a ``virtualenv`` with ``python2.6``, - installs :mod:`zope.i18nmessageid` and dependencies, installs - :mod:`nose` and :mod:`coverage`, and runs ``nosetests`` with statement - coverage. - -- The ``docs`` environment builds a virtualenv with ``python2.6``, installs - :mod:`zope.i18nmessageid` and dependencies, installs ``Sphinx`` and - dependencies, and then builds the docs and exercises the doctest snippets. - -This example requires that you have a working ``python2.6`` on your path, -as well as installing ``tox``: - -.. code-block:: sh - - $ tox -e py26 - GLOB sdist-make: .../zope.i18nmessageid/setup.py - py26 sdist-reinst: .../zope.i18nmessageid/.tox/dist/zope.i18nmessageid-4.0.2dev.zip - py26 runtests: commands[0] - ... - ---------------------------------------------------------------------- - Ran 1341 tests in 0.477s - - OK - ___________________________________ summary ____________________________________ - py26: commands succeeded - congratulations :) - -Running ``tox`` with no arguments runs all the configured environments, -including building the docs and testing their snippets: - -.. code-block:: sh - - $ tox - GLOB sdist-make: .../zope.i18nmessageid/setup.py - py26 sdist-reinst: .../zope.i18nmessageid/.tox/dist/zope.i18nmessageid-4.0.2dev.zip - py26 runtests: commands[0] - ... - Doctest summary - =============== - 678 tests - 0 failures in tests - 0 failures in setup code - 0 failures in cleanup code - build succeeded. - ___________________________________ summary ____________________________________ - py26: commands succeeded - py27: commands succeeded - py32: commands succeeded - pypy: commands succeeded - coverage: commands succeeded - docs: commands succeeded - congratulations :) - - - -Contributing to :mod:`zope.i18nmessageid` -######################################### - -Submitting a Bug Report ------------------------ - -:mod:`zope.i18nmessageid` tracks its bugs on Github: - - https://github.com/zopefoundation/zope.i18nmessageid/issues - -Please submit bug reports and feature requests there. - -Sharing Your Changes --------------------- - -.. note:: - - Please ensure that all tests are passing before you submit your code. - If possible, your submission should include new tests for new features - or bug fixes, although it is possible that you may have tested your - new code by updating existing tests. - -If have made a change you would like to share, the best route is to fork -the Githb repository, check out your fork, make your changes on a branch -in your fork, and push it. You can then submit a pull request from your -branch: - - https://github.com/zopefoundation/zope.i18nmessageid/pulls - -If you branched the code from Launchpad using Bazaar, you have another -option: you can "push" your branch to Launchpad: - -.. code-block:: sh - - $ bzr push lp:~jrandom/zope.i18nmessageid/cool_feature - -After pushing your branch, you can link it to a bug report on Launchpad, -or request that the maintainers merge your branch using the Launchpad -"merge request" feature. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/docs/_build/html/_sources/index.rst.txt new/zope.i18nmessageid-6.0.1/docs/_build/html/_sources/index.rst.txt --- old/zope.i18nmessageid-5.1.1/docs/_build/html/_sources/index.rst.txt 2022-11-03 15:37:34.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/docs/_build/html/_sources/index.rst.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,21 +0,0 @@ -:mod:`zope.i18nmessageid` Documentation -======================================= - -Contents: - -.. toctree:: - :maxdepth: 2 - - narr - api - hacking - - - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/docs/_build/html/_sources/narr.rst.txt new/zope.i18nmessageid-6.0.1/docs/_build/html/_sources/narr.rst.txt --- old/zope.i18nmessageid-5.1.1/docs/_build/html/_sources/narr.rst.txt 2022-11-06 13:17:38.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/docs/_build/html/_sources/narr.rst.txt 1970-01-01 01:00:00.000000000 +0100 @@ -1,169 +0,0 @@ -Using :mod:`zope.i18nmessageid` -=============================== - -Rationale ---------- - -To translate any text, we must be able to discover the source domain -of the text. A source domain is an identifier that identifies a -project that produces program source strings. Source strings occur as -literals in python programs, text in templates, and some text in XML -data. The project implies a source language and an application -context. - -Messages and Domains --------------------- - -We can think of a source domain as a collection of messages and -associated translation strings. The domain helps to disambiguate messages -based on context: for instance, the message whose source string is ``draw`` -means one thing in a first-person shooter game, and quite another in a -graphics package: in the first case, the domain for the message might -be ``ok_corral``, while in the second it might be ``gimp``. - -We often need to create unicode strings that will be displayed by -separate views. The view cannot translate the string without knowing -its source domain. A string or unicode literal carries no domain -information, therefore we use instances of the -:class:`~zope.i18nmessageid.message.Message` class. Messages are unicode -strings which carry a translation source domain and possibly a default -translation. - -Message Factories ------------------ - -Messages are created by a message factory belonging to a given translation -domain. Each message factory is created by instantiating a -:class:`~zope.i18nmessageid.message.MessageFactory`, passing the domain -corresponding to the project which manages the corrresponding translations. - -.. doctest:: - - >>> from zope.i18nmessageid import MessageFactory - >>> factory = MessageFactory('myproject') - >>> foo = factory('foo') - >>> foo.domain - 'myproject' - -The Zope project uses the ``zope`` domain for its messages. This package -exports an already-created factory for that domain: - -.. doctest:: - - >>> from zope.i18nmessageid import ZopeMessageFactory as _z_ - >>> foo = _z_('foo') - >>> foo.domain - 'zope' - - -Example Usage -------------- - -In this example, we create a message factory and assign it to _. By -convention, we use _ as the name of our factory to be compatible with -translatable string extraction tools such as xgettext. We then call _ -with a string that needs to be translatable: - -.. doctest:: - - >>> from zope.i18nmessageid import MessageFactory, Message - >>> _ = MessageFactory("futurama") - >>> robot = _(u"robot-message", u"${name} is a robot.") - -Messages at first seem like they are text strings: - -.. doctest:: - - >>> import six - >>> robot == u'robot-message' - True - >>> isinstance(robot, six.text_type) - True - -The additional domain, default and mapping information is available -through attributes: - -.. doctest:: - - >>> robot.default == u'${name} is a robot.' - True - >>> robot.mapping - >>> robot.domain - 'futurama' - -The message's attributes are considered part of the immutable message -object. They cannot be changed once the message id is created: - -.. doctest:: - - >>> robot.domain = "planetexpress" - Traceback (most recent call last): - ... - AttributeError: readonly attribute - - >>> robot.default = u"${name} is not a robot." - Traceback (most recent call last): - ... - AttributeError: readonly attribute - - >>> robot.mapping = {u'name': u'Bender'} - Traceback (most recent call last): - ... - AttributeError: readonly attribute - -If you need to change their information, you'll have to make a new -message id object: - -.. doctest:: - - >>> new_robot = Message(robot, mapping={u'name': u'Bender'}) - >>> new_robot == u'robot-message' - True - >>> new_robot.domain - 'futurama' - >>> new_robot.default == u'${name} is a robot.' - True - >>> new_robot.mapping == {u'name': u'Bender'} - True - -Last but not least, messages are reduceable for pickling: - -.. doctest:: - - >>> callable, args = new_robot.__reduce__() - >>> callable is Message - True - >>> args == (u'robot-message', - ... 'futurama', - ... u'${name} is a robot.', - ... {u'name': u'Bender'}, - ... None, - ... None, - ... None) - True - - >>> fembot = Message(u'fembot') - >>> callable, args = fembot.__reduce__() - >>> callable is Message - True - >>> args == (u'fembot', None, None, None, None, None, None) - True - -Pickling and unpickling works, which means we can store message IDs in -a database: - -.. doctest:: - - >>> from pickle import dumps, loads - >>> pystate = dumps(new_robot) - >>> pickle_bot = loads(pystate) - >>> (pickle_bot, - ... pickle_bot.domain, - ... pickle_bot.default, - ... pickle_bot.mapping) == (u'robot-message', - ... 'futurama', - ... u'${name} is a robot.', - ... {u'name': u'Bender'}) - True - >>> pickle_bot.__reduce__()[0] is Message - True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/docs/narr.rst new/zope.i18nmessageid-6.0.1/docs/narr.rst --- old/zope.i18nmessageid-5.1.1/docs/narr.rst 2022-11-06 13:17:38.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/docs/narr.rst 2023-03-24 07:58:02.000000000 +0100 @@ -74,10 +74,9 @@ .. doctest:: - >>> import six - >>> robot == u'robot-message' + >>> robot == 'robot-message' True - >>> isinstance(robot, six.text_type) + >>> isinstance(robot, str) True The additional domain, default and mapping information is available @@ -85,7 +84,7 @@ .. doctest:: - >>> robot.default == u'${name} is a robot.' + >>> robot.default == '${name} is a robot.' True >>> robot.mapping >>> robot.domain @@ -106,24 +105,24 @@ ... AttributeError: readonly attribute - >>> robot.mapping = {u'name': u'Bender'} + >>> robot.mapping = {'name': 'Bender'} Traceback (most recent call last): ... AttributeError: readonly attribute -If you need to change their information, you'll have to make a new +If you need to change their information, yo'll have to make a new message id object: .. doctest:: - >>> new_robot = Message(robot, mapping={u'name': u'Bender'}) - >>> new_robot == u'robot-message' + >>> new_robot = Message(robot, mapping={'name': 'Bender'}) + >>> new_robot == 'robot-message' True >>> new_robot.domain 'futurama' - >>> new_robot.default == u'${name} is a robot.' + >>> new_robot.default == '${name} is a robot.' True - >>> new_robot.mapping == {u'name': u'Bender'} + >>> new_robot.mapping == {'name': 'Bender'} True Last but not least, messages are reduceable for pickling: @@ -133,20 +132,20 @@ >>> callable, args = new_robot.__reduce__() >>> callable is Message True - >>> args == (u'robot-message', + >>> args == ('robot-message', ... 'futurama', - ... u'${name} is a robot.', - ... {u'name': u'Bender'}, + ... '${name} is a robot.', + ... {'name': 'Bender'}, ... None, ... None, ... None) True - >>> fembot = Message(u'fembot') + >>> fembot = Message('fembot') >>> callable, args = fembot.__reduce__() >>> callable is Message True - >>> args == (u'fembot', None, None, None, None, None, None) + >>> args == ('fembot', None, None, None, None, None, None) True Pickling and unpickling works, which means we can store message IDs in @@ -160,10 +159,10 @@ >>> (pickle_bot, ... pickle_bot.domain, ... pickle_bot.default, - ... pickle_bot.mapping) == (u'robot-message', + ... pickle_bot.mapping) == ('robot-message', ... 'futurama', - ... u'${name} is a robot.', - ... {u'name': u'Bender'}) + ... '${name} is a robot.', + ... {'name': 'Bender'}) True >>> pickle_bot.__reduce__()[0] is Message True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/setup.cfg new/zope.i18nmessageid-6.0.1/setup.cfg --- old/zope.i18nmessageid-5.1.1/setup.cfg 2022-11-17 16:10:00.848437800 +0100 +++ new/zope.i18nmessageid-6.0.1/setup.cfg 2023-03-24 07:58:03.586763000 +0100 @@ -1,5 +1,5 @@ [bdist_wheel] -universal = 1 +universal = 0 [zest.releaser] create-wheel = no @@ -20,7 +20,7 @@ force_single_line = True combine_as_imports = True sections = FUTURE,STDLIB,THIRDPARTY,ZOPE,FIRSTPARTY,LOCALFOLDER -known_third_party = six, docutils, pkg_resources +known_third_party = six, docutils, pkg_resources, pytz known_zope = known_first_party = default_section = ZOPE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/setup.py new/zope.i18nmessageid-6.0.1/setup.py --- old/zope.i18nmessageid-5.1.1/setup.py 2022-11-17 15:26:08.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/setup.py 2023-03-24 07:58:02.000000000 +0100 @@ -18,7 +18,6 @@ ############################################################################## """Setup for zope.i18nmessageid package """ -from __future__ import print_function import os import platform @@ -96,7 +95,7 @@ setup( name='zope.i18nmessageid', - version='5.1.1', + version='6.0.1', author='Zope Foundation and Contributors', author_email='zope-...@zope.org', description='Message Identifiers for internationalization', @@ -112,11 +111,7 @@ 'Intended Audience :: Developers', 'License :: OSI Approved :: Zope Public License', 'Programming Language :: Python', - 'Programming Language :: Python :: 2', - 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.8', 'Programming Language :: Python :: 3.9', @@ -134,15 +129,8 @@ packages=find_packages('src'), package_dir={'': 'src'}, namespace_packages=['zope'], - install_requires=['setuptools', 'six'], - python_requires=', '.join([ - '>=2.7', - '!=3.0.*', - '!=3.1.*', - '!=3.2.*', - '!=3.3.*', - '!=3.4.*', - ]), + install_requires=['setuptools'], + python_requires='>=3.7', include_package_data=True, test_suite='zope.i18nmessageid.tests.test_suite', zip_safe=False, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/src/zope/i18nmessageid/message.py new/zope.i18nmessageid-6.0.1/src/zope/i18nmessageid/message.py --- old/zope.i18nmessageid-5.1.1/src/zope/i18nmessageid/message.py 2022-11-06 13:07:04.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/src/zope/i18nmessageid/message.py 2023-03-24 07:58:02.000000000 +0100 @@ -13,14 +13,12 @@ ############################################################################## """I18n Messages and factories. """ -import six - __docformat__ = "reStructuredText" _marker = object() -class Message(six.text_type): +class Message(str): """Message (Python implementation) This is a string used as a message. It has a domain attribute that is @@ -36,7 +34,7 @@ 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) + self = str.__new__(cls, ustr) if isinstance(ustr, self.__class__): self.domain = ustr.domain self.default = ustr.default @@ -66,7 +64,7 @@ self.number = number if self.number is not None and not isinstance( - self.number, six.integer_types + (float,)): + self.number, (int, float)): raise TypeError('`number` should be an integer or a float') self._readonly = True @@ -80,11 +78,11 @@ if getattr(self, '_readonly', False): raise TypeError('readonly attribute') else: - return six.text_type.__setattr__(self, key, value) + return str.__setattr__(self, key, value) def __getstate__(self): return ( - six.text_type(self), self.domain, self.default, self.mapping, + str(self), self.domain, self.default, self.mapping, self.msgid_plural, self.default_plural, self.number) def __reduce__(self): @@ -101,7 +99,7 @@ pass -class MessageFactory(object): +class MessageFactory: """Factory for creating i18n messages.""" def __init__(self, domain): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/src/zope/i18nmessageid/tests.py new/zope.i18nmessageid-6.0.1/src/zope/i18nmessageid/tests.py --- old/zope.i18nmessageid-5.1.1/src/zope/i18nmessageid/tests.py 2022-11-06 12:44:51.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/src/zope/i18nmessageid/tests.py 2023-03-24 07:58:02.000000000 +0100 @@ -151,7 +151,7 @@ # https://github.com/zopefoundation/zope.i18nmessageid/issues/14 pref_msg = self._makeOne("${name} Preferences") self.assertIsNone(pref_msg.default) - copy = self._makeOne(pref_msg, mapping={u'name': u'name'}) + copy = self._makeOne(pref_msg, mapping={'name': 'name'}) self.assertIsNone(copy.default) def test_copy_no_overrides(self): @@ -220,12 +220,12 @@ 'testings', 'defaults', 2)) def test_non_unicode_default(self): - message = self._makeOne(u'str', default=123) + message = self._makeOne('str', default=123) self.assertEqual(message.default, 123) def test_non_numeric_number(self): with self.assertRaises((TypeError, AttributeError)): - self._makeOne(u'str', default=123, number="one") + self._makeOne('str', default=123, number="one") @unittest.skipIf(messageid.Message is messageid.pyMessage, "Duplicate tests") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/src/zope.i18nmessageid.egg-info/PKG-INFO new/zope.i18nmessageid-6.0.1/src/zope.i18nmessageid.egg-info/PKG-INFO --- old/zope.i18nmessageid-5.1.1/src/zope.i18nmessageid.egg-info/PKG-INFO 2022-11-17 16:10:00.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/src/zope.i18nmessageid.egg-info/PKG-INFO 2023-03-24 07:58:03.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: zope.i18nmessageid -Version: 5.1.1 +Version: 6.0.1 Summary: Message Identifiers for internationalization Home-page: https://github.com/zopefoundation/zope.i18nmessageid Author: Zope Foundation and Contributors @@ -12,11 +12,7 @@ Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: Zope Public License Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 2 -Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.5 -Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 @@ -28,7 +24,7 @@ Classifier: Operating System :: OS Independent Classifier: Topic :: Internet :: WWW/HTTP Classifier: Framework :: Zope :: 3 -Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.* +Requires-Python: >=3.7 Provides-Extra: testing Provides-Extra: test Provides-Extra: docs @@ -78,6 +74,20 @@ Changes ========= +6.0.1 (2023-03-24) +================== + +- Drop dependency on ``six``. + + +6.0.0 (2023-03-23) +================== + +- Drop support for Python 2.7, 3.5, 3.6. + +- Add preliminary support for Python 3.12a5. + + 5.1.1 (2022-11-17) ================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/src/zope.i18nmessageid.egg-info/SOURCES.txt new/zope.i18nmessageid-6.0.1/src/zope.i18nmessageid.egg-info/SOURCES.txt --- old/zope.i18nmessageid-5.1.1/src/zope.i18nmessageid.egg-info/SOURCES.txt 2022-11-17 16:10:00.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/src/zope.i18nmessageid.egg-info/SOURCES.txt 2023-03-24 07:58:03.000000000 +0100 @@ -19,11 +19,6 @@ docs/index.rst docs/make.bat docs/narr.rst -docs/_build/doctest/output.txt -docs/_build/html/_sources/api.rst.txt -docs/_build/html/_sources/hacking.rst.txt -docs/_build/html/_sources/index.rst.txt -docs/_build/html/_sources/narr.rst.txt src/zope/__init__.py src/zope.i18nmessageid.egg-info/PKG-INFO src/zope.i18nmessageid.egg-info/SOURCES.txt diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/src/zope.i18nmessageid.egg-info/requires.txt new/zope.i18nmessageid-6.0.1/src/zope.i18nmessageid.egg-info/requires.txt --- old/zope.i18nmessageid-5.1.1/src/zope.i18nmessageid.egg-info/requires.txt 2022-11-17 16:10:00.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/src/zope.i18nmessageid.egg-info/requires.txt 2023-03-24 07:58:03.000000000 +0100 @@ -1,5 +1,4 @@ setuptools -six [docs] Sphinx diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-5.1.1/tox.ini new/zope.i18nmessageid-6.0.1/tox.ini --- old/zope.i18nmessageid-5.1.1/tox.ini 2022-11-17 15:11:56.000000000 +0100 +++ new/zope.i18nmessageid-6.0.1/tox.ini 2023-03-24 07:58:02.000000000 +0100 @@ -1,31 +1,30 @@ # Generated from: # https://github.com/zopefoundation/meta/tree/master/config/c-code [tox] -minversion = 3.18 +minversion = 4.0 envlist = lint - py27,py27-pure - py35,py35-pure - py36,py36-pure py37,py37-pure py38,py38-pure py39,py39-pure py310,py310-pure py311,py311-pure - pypy + py312,py312-pure pypy3 docs coverage [testenv] usedevelop = true +pip_pre = py312: true deps = + Sphinx setenv = pure: PURE_PYTHON=1 - !pure-!pypy-!pypy3: PURE_PYTHON=0 + !pure-!pypy3: PURE_PYTHON=0 commands = zope-testrunner --test-path=src {posargs:-vc} - !py27-!pypy-!pypy3: sphinx-build -b doctest -d {envdir}/.cache/doctrees docs {envdir}/.cache/doctest + sphinx-build -b doctest -d {envdir}/.cache/doctrees docs {envdir}/.cache/doctest extras = test docs @@ -61,6 +60,7 @@ [testenv:isort-apply] basepython = python3 +skip_install = true commands_pre = deps = isort