[ussuri][goal] Drop python 2.7 support and testing

OpenStack is dropping the py2.7 support in Ussuri cycle.

Complete discussion & schedule can be found in
-
http://lists.openstack.org/pipermail/openstack-discuss/2019-October/010142.html
- https://etherpad.openstack.org/p/drop-python2-support

Ussuri Communtiy-wide goal:
https://governance.openstack.org/tc/goals/selected/ussuri/drop-py27.html

Change-Id: I340a7909c49e7d2a8c82c668cbdaf9ced7196f67
Sem-Ver: api-break
This commit is contained in:
Hervé Beraud 2020-02-04 16:17:47 +01:00
parent 6889dec2aa
commit 281fd591e7
7 changed files with 14 additions and 60 deletions

View File

@ -1,12 +1,10 @@
- project: - project:
templates: templates:
- check-requirements - check-requirements
- lib-forward-testing
- lib-forward-testing-python3 - lib-forward-testing-python3
- openstack-cover-jobs - openstack-cover-jobs
- openstack-lower-constraints-jobs - openstack-lower-constraints-jobs
- openstack-python-jobs - openstack-python3-ussuri-jobs
- openstack-python3-train-jobs
- periodic-stable-jobs - periodic-stable-jobs
- publish-openstack-docs-pti - publish-openstack-docs-pti
- release-notes-jobs-python3 - release-notes-jobs-python3

View File

@ -2,8 +2,7 @@
# of appearance. Changing the order has an impact on the overall integration # of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later. # process, which may cause wedges in the gate later.
sphinx>=1.8.0,<2.0.0;python_version=='2.7' # BSD sphinx>=1.8.0,!=2.1.0 # BSD
sphinx>=1.8.0,!=2.1.0;python_version>='3.4' # BSD
openstackdocstheme>=1.18.1 # Apache-2.0 openstackdocstheme>=1.18.1 # Apache-2.0
reno>=2.5.0 # Apache-2.0 reno>=2.5.0 # Apache-2.0
sphinxcontrib-apidoc>=0.2.0 # BSD sphinxcontrib-apidoc>=0.2.0 # BSD

View File

@ -61,18 +61,6 @@ class TranslatorFactoryTest(test_base.BaseTestCase):
r = tf.primary('some text') r = tf.primary('some text')
self.assertNotIsInstance(r, _message.Message) self.assertNotIsInstance(r, _message.Message)
def test_py2(self):
_lazy.enable_lazy(False)
with mock.patch.object(six, 'PY3', False):
with mock.patch('gettext.translation') as translation:
trans = mock.Mock()
translation.return_value = trans
trans.gettext.side_effect = AssertionError(
'should have called ugettext')
tf = _factory.TranslatorFactory('domain')
tf.primary('some text')
trans.ugettext.assert_called_with('some text')
def test_py3(self): def test_py3(self):
_lazy.enable_lazy(False) _lazy.enable_lazy(False)
with mock.patch.object(six, 'PY3', True): with mock.patch.object(six, 'PY3', True):
@ -92,20 +80,6 @@ class TranslatorFactoryTest(test_base.BaseTestCase):
tf._make_log_translation_func('mylevel') tf._make_log_translation_func('mylevel')
mtf.assert_called_with('domain-log-mylevel') mtf.assert_called_with('domain-log-mylevel')
def test_contextual_form_py2(self):
_lazy.enable_lazy(False)
with mock.patch.object(six, 'PY3', False):
with mock.patch('gettext.translation') as translation:
trans = mock.Mock()
translation.return_value = trans
trans.gettext.side_effect = AssertionError(
'should have called ugettext')
trans.ugettext.return_value = "some text"
tf = _factory.TranslatorFactory('domain')
tf.contextual_form('context', 'some text')
trans.ugettext.assert_called_with(
"%s%s%s" % ('context', CONTEXT_SEPARATOR, 'some text'))
def test_contextual_form_py3(self): def test_contextual_form_py3(self):
_lazy.enable_lazy(False) _lazy.enable_lazy(False)
with mock.patch.object(six, 'PY3', True): with mock.patch.object(six, 'PY3', True):
@ -120,19 +94,6 @@ class TranslatorFactoryTest(test_base.BaseTestCase):
trans.gettext.assert_called_with( trans.gettext.assert_called_with(
"%s%s%s" % ('context', CONTEXT_SEPARATOR, 'some text')) "%s%s%s" % ('context', CONTEXT_SEPARATOR, 'some text'))
def test_plural_form_py2(self):
_lazy.enable_lazy(False)
with mock.patch.object(six, 'PY3', False):
with mock.patch('gettext.translation') as translation:
trans = mock.Mock()
translation.return_value = trans
trans.ngettext.side_effect = AssertionError(
'should have called ungettext')
tf = _factory.TranslatorFactory('domain')
tf.plural_form('single', 'plural', 1)
trans.ungettext.assert_called_with(
'single', 'plural', 1)
def test_plural_form_py3(self): def test_plural_form_py3(self):
_lazy.enable_lazy(False) _lazy.enable_lazy(False)
with mock.patch.object(six, 'PY3', True): with mock.patch.object(six, 'PY3', True):

View File

@ -0,0 +1,5 @@
---
upgrade:
- |
Support for Python 2.7 has been dropped. The minimum version of Python now
supported is Python 3.6.

View File

@ -6,6 +6,7 @@ description-file =
author = OpenStack author = OpenStack
author-email = openstack-discuss@lists.openstack.org author-email = openstack-discuss@lists.openstack.org
home-page = https://docs.openstack.org/oslo.i18n/latest home-page = https://docs.openstack.org/oslo.i18n/latest
python-requires = >=3.6
classifier = classifier =
Environment :: OpenStack Environment :: OpenStack
Intended Audience :: Information Technology Intended Audience :: Information Technology
@ -13,11 +14,12 @@ classifier =
License :: OSI Approved :: Apache Software License License :: OSI Approved :: Apache Software License
Operating System :: POSIX :: Linux Operating System :: POSIX :: Linux
Programming Language :: Python Programming Language :: Python
Programming Language :: Python :: 2
Programming Language :: Python :: 2.7
Programming Language :: Python :: 3 Programming Language :: Python :: 3
Programming Language :: Python :: 3.6 Programming Language :: Python :: 3.6
Programming Language :: Python :: 3.7 Programming Language :: Python :: 3.7
Programming Language :: Python :: 3 :: Only
Programming Language :: Python :: Implementation :: CPython
[files] [files]
packages = packages =
@ -36,6 +38,3 @@ input_file = oslo_i18n/locale/oslo_i18n.pot
keywords = _ gettext ngettext l_ lazy_gettext _C:1c,2 _P:1,2 keywords = _ gettext ngettext l_ lazy_gettext _C:1c,2 _P:1,2
mapping_file = babel.cfg mapping_file = babel.cfg
output_file = oslo_i18n/locale/oslo_i18n.pot output_file = oslo_i18n/locale/oslo_i18n.pot
[bdist_wheel]
universal = 1

View File

@ -16,14 +16,6 @@
# THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT # THIS FILE IS MANAGED BY THE GLOBAL REQUIREMENTS REPO - DO NOT EDIT
import setuptools import setuptools
# In python < 2.7.4, a lazy loading of package `pbr` will break
# setuptools if some other modules registered functions in `atexit`.
# solution from: http://bugs.python.org/issue15881#msg170215
try:
import multiprocessing # noqa
except ImportError:
pass
setuptools.setup( setuptools.setup(
setup_requires=['pbr>=2.0.0'], setup_requires=['pbr>=2.0.0'],
pbr=True) pbr=True)

View File

@ -1,7 +1,7 @@
[tox] [tox]
minversion = 3.1 minversion = 3.1.1
envlist = py27,py37,pep8 envlist = py37,pep8
ignore_basepython_conflict = True ignore_basepython_conflict = true
[testenv] [testenv]
basepython = python3 basepython = python3