summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/ci-tests.yml1
-rw-r--r--CHANGES.rst5
-rw-r--r--CONTRIBUTORS.txt2
-rw-r--r--HACKING.txt3
-rw-r--r--docs/narr/install.rst4
-rw-r--r--docs/narr/upgrading.rst9
-rw-r--r--setup.py1
-rw-r--r--src/pyramid/i18n.py12
-rw-r--r--tests/test_i18n.py12
-rw-r--r--tox.ini2
10 files changed, 19 insertions, 32 deletions
diff --git a/.github/workflows/ci-tests.yml b/.github/workflows/ci-tests.yml
index 8eeb366fd..9b989d69d 100644
--- a/.github/workflows/ci-tests.yml
+++ b/.github/workflows/ci-tests.yml
@@ -19,6 +19,7 @@ jobs:
- "3.8"
- "3.9"
- "3.10"
+ - "3.11"
- "pypy-3.8"
os:
- "ubuntu-20.04"
diff --git a/CHANGES.rst b/CHANGES.rst
index 0ee6fd30d..b9eacd894 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -4,6 +4,8 @@ unreleased
Features
--------
+- Pyramid adds support for Python 3.11.
+
Bug Fixes
---------
@@ -11,6 +13,9 @@ Backward Incompatibilities
--------------------------
- Pyramid is no longer tested on, nor supports Python 3.6
+- Pyramid drops support for l*gettext() methods in the i18n module.
+ These have been deprecated in Python's gettext module since 3.8, and
+ removed in Python 3.11.
Documentation Changes
---------------------
diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt
index a2dc79e9d..9b7f3819f 100644
--- a/CONTRIBUTORS.txt
+++ b/CONTRIBUTORS.txt
@@ -360,3 +360,5 @@ Contributors
- Karthikeyan Singaravelan, 2021/08/24
- Camill Kaipf, 2022/08/12
+
+- Stefano Rivera, 2022/12/29 \ No newline at end of file
diff --git a/HACKING.txt b/HACKING.txt
index 9cc2e8edb..bb7045ed6 100644
--- a/HACKING.txt
+++ b/HACKING.txt
@@ -50,7 +50,8 @@ In order to add a feature to Pyramid:
- The feature must be documented in both the API and narrative documentation
(in `docs/`).
-- The feature must work fully on the following CPython versions: 3.7, 3.8, 3.9, and 3.10 on both UNIX and Windows.
+- The feature must work fully on the following CPython versions: 3.7, 3.8, 3.9,
+ 3.10, and 3.11 on both UNIX and Windows.
- The feature must work on the latest version of PyPy3.
diff --git a/docs/narr/install.rst b/docs/narr/install.rst
index 882b40d10..d07692d86 100644
--- a/docs/narr/install.rst
+++ b/docs/narr/install.rst
@@ -21,8 +21,8 @@ the following sections.
.. sidebar:: Python Versions
- As of this writing, :app:`Pyramid` is tested against Python 3.7, 3.8, 3.9,
- and 3.10 and PyPy (matches CPython version 3.8).
+ As of this writing, :app:`Pyramid` is tested against Python 3.7,
+ 3.8, 3.9, 3.10, 3.11 and PyPy (matches CPython version 3.8).
:app:`Pyramid` is known to run on all popular Unix-like systems such as Linux,
macOS, and FreeBSD, as well as on Windows platforms. It is also known to
diff --git a/docs/narr/upgrading.rst b/docs/narr/upgrading.rst
index 020f2ed37..5fc3dc9fa 100644
--- a/docs/narr/upgrading.rst
+++ b/docs/narr/upgrading.rst
@@ -86,10 +86,11 @@ At the time of a Pyramid version release, each supports all versions of Python
through the end of their lifespans. The end-of-life for a given version of
Python is when security updates are no longer released.
-- `Python 3.7 Lifespan <https://devguide.python.org/#status-of-python-branches>`_ 2023-06-27.
-- `Python 3.8 Lifespan <https://devguide.python.org/#status-of-python-branches>`_ 2024-10.
-- `Python 3.9 Lifespan <https://devguide.python.org/#status-of-python-branches>`_ 2025-10.
-- `Python 3.10 Lifespan <https://devguide.python.org/#status-of-python-branches>`_ 2026-10.
+- `Python 3.7 Lifespan <https://devguide.python.org/versions/#versions>`_ 2023-06-27.
+- `Python 3.8 Lifespan <https://devguide.python.org/versions/#versions>`_ 2024-10.
+- `Python 3.9 Lifespan <https://devguide.python.org/versions/#versions>`_ 2025-10.
+- `Python 3.10 Lifespan <https://devguide.python.org/versions/#versions>`_ 2026-10.
+- `Python 3.11 Lifespan <https://devguide.python.org/versions/#versions>`_ 2027-10.
To determine the Python support for a specific release of Pyramid, view its
``tox.ini`` file at the root of the repository's version.
diff --git a/setup.py b/setup.py
index 17434313e..42d7d91a2 100644
--- a/setup.py
+++ b/setup.py
@@ -78,6 +78,7 @@ setup(
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
+ "Programming Language :: Python :: 3.11",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Python :: Implementation :: PyPy",
"Framework :: Pyramid",
diff --git a/src/pyramid/i18n.py b/src/pyramid/i18n.py
index cded99ca5..e7710f08d 100644
--- a/src/pyramid/i18n.py
+++ b/src/pyramid/i18n.py
@@ -335,12 +335,6 @@ class Translations(gettext.GNUTranslations):
"""
return self._domains.get(domain, self).gettext(message)
- def ldgettext(self, domain, message):
- """Like ``lgettext()``, but look the message up in the specified
- domain.
- """
- return self._domains.get(domain, self).lgettext(message)
-
def dugettext(self, domain, message):
"""Like ``ugettext()``, but look the message up in the specified
domain.
@@ -353,12 +347,6 @@ class Translations(gettext.GNUTranslations):
"""
return self._domains.get(domain, self).ngettext(singular, plural, num)
- def ldngettext(self, domain, singular, plural, num):
- """Like ``lngettext()``, but look the message up in the specified
- domain.
- """
- return self._domains.get(domain, self).lngettext(singular, plural, num)
-
def dungettext(self, domain, singular, plural, num):
"""Like ``ungettext()`` but look the message up in the specified
domain.
diff --git a/tests/test_i18n.py b/tests/test_i18n.py
index 206eea290..a4834cedc 100644
--- a/tests/test_i18n.py
+++ b/tests/test_i18n.py
@@ -421,11 +421,6 @@ class TestTranslations(unittest.TestCase):
self.assertEqual(t.dgettext('messages', 'foo'), 'Voh')
self.assertEqual(t.dgettext('messages1', 'foo'), 'VohD')
- def test_ldgettext(self):
- t = self._makeOne()
- self.assertEqual(t.ldgettext('messages', 'foo'), b'Voh')
- self.assertEqual(t.ldgettext('messages1', 'foo'), b'VohD')
-
def test_dugettext(self):
t = self._makeOne()
self.assertEqual(t.dugettext('messages', 'foo'), 'Voh')
@@ -436,13 +431,6 @@ class TestTranslations(unittest.TestCase):
self.assertEqual(t.dngettext('messages', 'foo1', 'foos1', 1), 'Voh1')
self.assertEqual(t.dngettext('messages1', 'foo1', 'foos1', 1), 'VohD1')
- def test_ldngettext(self):
- t = self._makeOne()
- self.assertEqual(t.ldngettext('messages', 'foo1', 'foos1', 1), b'Voh1')
- self.assertEqual(
- t.ldngettext('messages1', 'foo1', 'foos1', 1), b'VohD1'
- )
-
def test_dungettext(self):
t = self._makeOne()
self.assertEqual(t.dungettext('messages', 'foo1', 'foos1', 1), 'Voh1')
diff --git a/tox.ini b/tox.ini
index 77fb47ae4..94dfa6775 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,7 +1,7 @@
[tox]
envlist =
lint,
- py37,py38,py39,py310,pypy3,
+ py37,py38,py39,py310,py311,pypy3,
py38-cover,coverage,
docs