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 2024-01-05 22:59:12 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-zope.i18nmessageid (Old) and /work/SRC/openSUSE:Factory/.python-zope.i18nmessageid.new.28375 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-zope.i18nmessageid" Fri Jan 5 22:59:12 2024 rev:17 rq:1136297 version:6.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-zope.i18nmessageid/python-zope.i18nmessageid.changes 2023-07-27 16:50:11.801606863 +0200 +++ /work/SRC/openSUSE:Factory/.python-zope.i18nmessageid.new.28375/python-zope.i18nmessageid.changes 2024-01-05 22:59:15.097533887 +0100 @@ -1,0 +2,6 @@ +Tue Jan 2 21:42:05 UTC 2024 - Dirk Müller <dmuel...@suse.com> + +- update to 6.1.0: + * Add support for Python 3.12. + +------------------------------------------------------------------- Old: ---- zope.i18nmessageid-6.0.1.tar.gz New: ---- zope.i18nmessageid-6.1.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-zope.i18nmessageid.spec ++++++ --- /var/tmp/diff_new_pack.hivYAx/_old 2024-01-05 22:59:16.185573754 +0100 +++ /var/tmp/diff_new_pack.hivYAx/_new 2024-01-05 22:59:16.185573754 +0100 @@ -1,7 +1,7 @@ # # spec file # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # Copyright (c) 2013-2022 LISA GmbH, Bingen, Germany. # # All modifications and additions to the file contributed by third parties @@ -27,15 +27,17 @@ %endif %{?sle15_python_module_pythons} Name: python-zope.i18nmessageid%{psuffix} -Version: 6.0.1 +Version: 6.1.0 Release: 0 Summary: Zope Location License: ZPL-2.1 URL: https://github.com/zopefoundation/zope.i18nmessageid Source: https://files.pythonhosted.org/packages/source/z/zope.i18nmessageid/zope.i18nmessageid-%{version}.tar.gz BuildRequires: %{python_module devel} +BuildRequires: %{python_module pip} BuildRequires: %{python_module pytest} BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} BuildRequires: fdupes BuildRequires: python-rpm-macros # SECTION documentation requirements @@ -64,13 +66,13 @@ %build %if !%{with test} -%python_build +%pyproject_wheel sphinx-build -b html docs build/sphinx/html && rm -r build/sphinx/html/.{buildinfo,doctrees} build/sphinx/html/objects.inv %endif %install %if !%{with test} -%python_install +%pyproject_install # don't bother with development files %{python_expand rm -f %{buildroot}%{$python_sitearch}/zope/i18nmessageid/_zope_i18nmessageid_message.c %fdupes %{buildroot}%{$python_sitearch} @@ -88,7 +90,7 @@ %doc CHANGES.rst COPYRIGHT.txt README.rst %dir %{python_sitearch}/zope %{python_sitearch}/zope/i18nmessageid -%{python_sitearch}/zope.i18nmessageid-%{version}*-info +%{python_sitearch}/zope.i18nmessageid-%{version}.dist-info %{python_sitearch}/zope.i18nmessageid-%{version}*-nspkg.pth %endif ++++++ zope.i18nmessageid-6.0.1.tar.gz -> zope.i18nmessageid-6.1.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-6.0.1/.manylinux-install.sh new/zope.i18nmessageid-6.1.0/.manylinux-install.sh --- old/zope.i18nmessageid-6.0.1/.manylinux-install.sh 2023-03-24 07:58:02.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/.manylinux-install.sh 2023-10-05 13:19:39.000000000 +0200 @@ -28,12 +28,12 @@ tox_env_map() { case $1 in - *"cp312"*) echo 'py312';; *"cp37"*) echo 'py37';; *"cp38"*) echo 'py38';; *"cp39"*) echo 'py39';; *"cp310"*) echo 'py310';; *"cp311"*) echo 'py311';; + *"cp312"*) echo 'py312';; *) echo 'py';; esac } @@ -41,19 +41,14 @@ # Compile wheels for PYBIN in /opt/python/*/bin; do if \ - [[ "${PYBIN}" == *"cp312"* ]] || \ [[ "${PYBIN}" == *"cp311"* ]] || \ + [[ "${PYBIN}" == *"cp312"* ]] || \ [[ "${PYBIN}" == *"cp37"* ]] || \ [[ "${PYBIN}" == *"cp38"* ]] || \ [[ "${PYBIN}" == *"cp39"* ]] || \ [[ "${PYBIN}" == *"cp310"* ]] ; then - 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 + "${PYBIN}/pip" install -e /io/ + "${PYBIN}/pip" wheel /io/ -w wheelhouse/ if [ `uname -m` == 'aarch64' ]; then cd /io/ ${PYBIN}/pip install tox diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-6.0.1/.readthedocs.yaml new/zope.i18nmessageid-6.1.0/.readthedocs.yaml --- old/zope.i18nmessageid-6.0.1/.readthedocs.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/.readthedocs.yaml 2023-10-05 13:19:39.000000000 +0200 @@ -0,0 +1,25 @@ +# Generated from: +# https://github.com/zopefoundation/meta/tree/master/config/c-code +# Read the Docs configuration file +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the version of Python and other tools you might need +build: + os: ubuntu-22.04 + tools: + python: "3.11" + +# Build documentation in the docs/ directory with Sphinx +sphinx: + configuration: docs/conf.py + +# We recommend specifying your dependencies to enable reproducible builds: +# https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html +python: + install: + - requirements: docs/requirements.txt + - method: pip + path: . diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-6.0.1/CHANGES.rst new/zope.i18nmessageid-6.1.0/CHANGES.rst --- old/zope.i18nmessageid-6.0.1/CHANGES.rst 2023-03-24 07:58:02.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/CHANGES.rst 2023-10-05 13:36:23.000000000 +0200 @@ -2,6 +2,12 @@ Changes ========= +6.1.0 (2023-10-05) +================== + +- Add support for Python 3.12. + + 6.0.1 (2023-03-24) ================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-6.0.1/MANIFEST.in new/zope.i18nmessageid-6.1.0/MANIFEST.in --- old/zope.i18nmessageid-6.0.1/MANIFEST.in 2023-03-24 07:58:02.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/MANIFEST.in 2023-10-05 13:19:39.000000000 +0200 @@ -14,5 +14,6 @@ recursive-include docs Makefile recursive-include src *.py +include *.yaml include *.sh recursive-include docs *.bat diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-6.0.1/PKG-INFO new/zope.i18nmessageid-6.1.0/PKG-INFO --- old/zope.i18nmessageid-6.0.1/PKG-INFO 2023-03-24 07:58:03.586184700 +0100 +++ new/zope.i18nmessageid-6.1.0/PKG-INFO 2023-10-05 14:02:43.680762500 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: zope.i18nmessageid -Version: 6.0.1 +Version: 6.1.0 Summary: Message Identifiers for internationalization Home-page: https://github.com/zopefoundation/zope.i18nmessageid Author: Zope Foundation and Contributors @@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Natural Language :: English @@ -25,10 +26,17 @@ Classifier: Topic :: Internet :: WWW/HTTP Classifier: Framework :: Zope :: 3 Requires-Python: >=3.7 +License-File: LICENSE.txt +Requires-Dist: setuptools Provides-Extra: testing +Requires-Dist: zope.testrunner; extra == "testing" +Requires-Dist: coverage; extra == "testing" Provides-Extra: test +Requires-Dist: zope.testrunner; extra == "test" +Requires-Dist: coverage; extra == "test" Provides-Extra: docs -License-File: LICENSE.txt +Requires-Dist: Sphinx; extra == "docs" +Requires-Dist: sphinx_rtd_theme; extra == "docs" ``zope.i18nmessageid`` ====================== @@ -74,6 +82,12 @@ Changes ========= +6.1.0 (2023-10-05) +================== + +- Add support for Python 3.12. + + 6.0.1 (2023-03-24) ================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-6.0.1/appveyor.yml new/zope.i18nmessageid-6.1.0/appveyor.yml --- old/zope.i18nmessageid-6.0.1/appveyor.yml 2023-03-24 07:58:02.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/appveyor.yml 2023-10-05 13:19:39.000000000 +0200 @@ -14,9 +14,7 @@ - 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 + - python: 312-x64 install: - "SET PYTHONVERSION=%PYTHON%" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-6.0.1/docs/_build/doctest/output.txt new/zope.i18nmessageid-6.1.0/docs/_build/doctest/output.txt --- old/zope.i18nmessageid-6.0.1/docs/_build/doctest/output.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/docs/_build/doctest/output.txt 2023-10-05 12:57:07.000000000 +0200 @@ -0,0 +1,17 @@ +Results of doctest builder run on 2023-10-05 12:57:07 +===================================================== + +Document: narr +-------------- +1 items passed all tests: + 35 tests in default +35 tests in 1 items. +35 passed and 0 failed. +Test passed. + +Doctest summary +=============== + 35 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-6.0.1/docs/_build/html/_sources/api.rst.txt new/zope.i18nmessageid-6.1.0/docs/_build/html/_sources/api.rst.txt --- old/zope.i18nmessageid-6.0.1/docs/_build/html/_sources/api.rst.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/docs/_build/html/_sources/api.rst.txt 2022-11-03 15:37:34.000000000 +0100 @@ -0,0 +1,11 @@ +: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-6.0.1/docs/_build/html/_sources/hacking.rst.txt new/zope.i18nmessageid-6.1.0/docs/_build/html/_sources/hacking.rst.txt --- old/zope.i18nmessageid-6.0.1/docs/_build/html/_sources/hacking.rst.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/docs/_build/html/_sources/hacking.rst.txt 2022-11-03 15:37:34.000000000 +0100 @@ -0,0 +1,300 @@ +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-6.0.1/docs/_build/html/_sources/index.rst.txt new/zope.i18nmessageid-6.1.0/docs/_build/html/_sources/index.rst.txt --- old/zope.i18nmessageid-6.0.1/docs/_build/html/_sources/index.rst.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/docs/_build/html/_sources/index.rst.txt 2022-11-03 15:37:34.000000000 +0100 @@ -0,0 +1,21 @@ +: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-6.0.1/docs/_build/html/_sources/narr.rst.txt new/zope.i18nmessageid-6.1.0/docs/_build/html/_sources/narr.rst.txt --- old/zope.i18nmessageid-6.0.1/docs/_build/html/_sources/narr.rst.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/docs/_build/html/_sources/narr.rst.txt 2023-04-20 10:28:06.000000000 +0200 @@ -0,0 +1,168 @@ +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:: + + >>> robot == 'robot-message' + True + >>> isinstance(robot, str) + True + +The additional domain, default and mapping information is available +through attributes: + +.. doctest:: + + >>> robot.default == '${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 = {'name': 'Bender'} + Traceback (most recent call last): + ... + AttributeError: readonly attribute + +If you need to change their information, yo'll have to make a new +message id object: + +.. doctest:: + + >>> new_robot = Message(robot, mapping={'name': 'Bender'}) + >>> new_robot == 'robot-message' + True + >>> new_robot.domain + 'futurama' + >>> new_robot.default == '${name} is a robot.' + True + >>> new_robot.mapping == {'name': 'Bender'} + True + +Last but not least, messages are reduceable for pickling: + +.. doctest:: + + >>> callable, args = new_robot.__reduce__() + >>> callable is Message + True + >>> args == ('robot-message', + ... 'futurama', + ... '${name} is a robot.', + ... {'name': 'Bender'}, + ... None, + ... None, + ... None) + True + + >>> fembot = Message('fembot') + >>> callable, args = fembot.__reduce__() + >>> callable is Message + True + >>> args == ('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) == ('robot-message', + ... 'futurama', + ... '${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-6.0.1/docs/conf.py new/zope.i18nmessageid-6.1.0/docs/conf.py --- old/zope.i18nmessageid-6.0.1/docs/conf.py 2023-03-24 07:58:02.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/docs/conf.py 2023-10-05 13:19:39.000000000 +0200 @@ -91,7 +91,7 @@ # The theme to use for HTML and HTML Help pages. See the documentation for # a list of builtin themes. -html_theme = 'default' +html_theme = 'sphinx_rtd_theme' # Theme options are theme-specific and customize the look and feel of a theme # further. For a list of options available for each theme, see the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-6.0.1/docs/requirements.txt new/zope.i18nmessageid-6.1.0/docs/requirements.txt --- old/zope.i18nmessageid-6.0.1/docs/requirements.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/docs/requirements.txt 2023-10-05 13:19:39.000000000 +0200 @@ -0,0 +1,3 @@ +Sphinx +sphinx_rtd_theme>1 +docutils<0.19 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-6.0.1/setup.cfg new/zope.i18nmessageid-6.1.0/setup.cfg --- old/zope.i18nmessageid-6.0.1/setup.cfg 2023-03-24 07:58:03.586763000 +0100 +++ new/zope.i18nmessageid-6.1.0/setup.cfg 2023-10-05 14:02:43.681088700 +0200 @@ -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, pytz +known_third_party = 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-6.0.1/setup.py new/zope.i18nmessageid-6.1.0/setup.py --- old/zope.i18nmessageid-6.0.1/setup.py 2023-03-24 07:58:02.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/setup.py 2023-10-05 13:36:33.000000000 +0200 @@ -95,7 +95,7 @@ setup( name='zope.i18nmessageid', - version='6.0.1', + version='6.1.0', author='Zope Foundation and Contributors', author_email='zope-...@zope.org', description='Message Identifiers for internationalization', @@ -117,6 +117,7 @@ 'Programming Language :: Python :: 3.9', 'Programming Language :: Python :: 3.10', 'Programming Language :: Python :: 3.11', + 'Programming Language :: Python :: 3.12', 'Programming Language :: Python :: Implementation :: CPython', 'Programming Language :: Python :: Implementation :: PyPy', 'Natural Language :: English', @@ -140,6 +141,6 @@ extras_require={ 'testing': tests_require, 'test': tests_require, - 'docs': ['Sphinx'], + 'docs': ['Sphinx', 'sphinx_rtd_theme'], }, ) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-6.0.1/src/zope.i18nmessageid.egg-info/PKG-INFO new/zope.i18nmessageid-6.1.0/src/zope.i18nmessageid.egg-info/PKG-INFO --- old/zope.i18nmessageid-6.0.1/src/zope.i18nmessageid.egg-info/PKG-INFO 2023-03-24 07:58:03.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/src/zope.i18nmessageid.egg-info/PKG-INFO 2023-10-05 14:02:43.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: zope.i18nmessageid -Version: 6.0.1 +Version: 6.1.0 Summary: Message Identifiers for internationalization Home-page: https://github.com/zopefoundation/zope.i18nmessageid Author: Zope Foundation and Contributors @@ -18,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Programming Language :: Python :: Implementation :: PyPy Classifier: Natural Language :: English @@ -25,10 +26,17 @@ Classifier: Topic :: Internet :: WWW/HTTP Classifier: Framework :: Zope :: 3 Requires-Python: >=3.7 +License-File: LICENSE.txt +Requires-Dist: setuptools Provides-Extra: testing +Requires-Dist: zope.testrunner; extra == "testing" +Requires-Dist: coverage; extra == "testing" Provides-Extra: test +Requires-Dist: zope.testrunner; extra == "test" +Requires-Dist: coverage; extra == "test" Provides-Extra: docs -License-File: LICENSE.txt +Requires-Dist: Sphinx; extra == "docs" +Requires-Dist: sphinx_rtd_theme; extra == "docs" ``zope.i18nmessageid`` ====================== @@ -74,6 +82,12 @@ Changes ========= +6.1.0 (2023-10-05) +================== + +- Add support for Python 3.12. + + 6.0.1 (2023-03-24) ================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-6.0.1/src/zope.i18nmessageid.egg-info/SOURCES.txt new/zope.i18nmessageid-6.1.0/src/zope.i18nmessageid.egg-info/SOURCES.txt --- old/zope.i18nmessageid-6.0.1/src/zope.i18nmessageid.egg-info/SOURCES.txt 2023-03-24 07:58:03.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/src/zope.i18nmessageid.egg-info/SOURCES.txt 2023-10-05 14:02:43.000000000 +0200 @@ -1,6 +1,7 @@ .coveragerc .manylinux-install.sh .manylinux.sh +.readthedocs.yaml CHANGES.rst CONTRIBUTING.md COPYRIGHT.txt @@ -19,6 +20,12 @@ docs/index.rst docs/make.bat docs/narr.rst +docs/requirements.txt +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-6.0.1/src/zope.i18nmessageid.egg-info/requires.txt new/zope.i18nmessageid-6.1.0/src/zope.i18nmessageid.egg-info/requires.txt --- old/zope.i18nmessageid-6.0.1/src/zope.i18nmessageid.egg-info/requires.txt 2023-03-24 07:58:03.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/src/zope.i18nmessageid.egg-info/requires.txt 2023-10-05 14:02:43.000000000 +0200 @@ -2,6 +2,7 @@ [docs] Sphinx +sphinx_rtd_theme [test] zope.testrunner diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/zope.i18nmessageid-6.0.1/tox.ini new/zope.i18nmessageid-6.1.0/tox.ini --- old/zope.i18nmessageid-6.0.1/tox.ini 2023-03-24 07:58:02.000000000 +0100 +++ new/zope.i18nmessageid-6.1.0/tox.ini 2023-10-05 13:19:39.000000000 +0200 @@ -16,12 +16,13 @@ [testenv] usedevelop = true -pip_pre = py312: true deps = - Sphinx + py37: urllib3 < 2 setenv = pure: PURE_PYTHON=1 !pure-!pypy3: PURE_PYTHON=0 + py312: VIRTUALENV_PIP=23.1.2 + py312: PIP_REQUIRE_VIRTUALENV=0 commands = zope-testrunner --test-path=src {posargs:-vc} sphinx-build -b doctest -d {envdir}/.cache/doctrees docs {envdir}/.cache/doctest @@ -35,6 +36,7 @@ mkdir deps = coverage + py37: urllib3 < 2 setenv = PURE_PYTHON=1 commands =