Cleanup python 2.7 handling logic

We have several codes to handle the differences between py2 and py3.
py2 support has been dropped so there is no need for them now.

Change-Id: I30080f4e1a5ac04860c4341d966ee53131eb2022
This commit is contained in:
Akihiro Motoki 2020-02-21 09:02:37 +09:00
parent e515713084
commit ac3d139c06
5 changed files with 10 additions and 54 deletions

View File

@ -52,15 +52,6 @@ from horizon.utils import settings as utils_settings
DEFAULT_PANEL_GROUP = 'default'
LOG = logging.getLogger(__name__)
# Python 3.8 removes the ability to import the abstract base classes from
# 'collections', but 'collections.abc' is not present in Python 2.7
# TODO(stephenfin): Remove when we drop support for Python 2.7
# pylint: disable=ungrouped-imports
if hasattr(collections, 'abc'):
from collections.abc import Iterable
else:
from collections import Iterable
def _decorate_urlconf(urlpatterns, decorator, *args, **kwargs):
for pattern in urlpatterns:
@ -599,8 +590,8 @@ class Dashboard(Registry, HorizonComponent):
default_created = False
for panel_set in self.panels:
# Instantiate PanelGroup classes.
if not isinstance(panel_set, Iterable) and \
issubclass(panel_set, PanelGroup):
if (not isinstance(panel_set, collections.abc.Iterable) and
issubclass(panel_set, PanelGroup)):
panel_group = panel_set(self)
# Check for nested tuples, and convert them to PanelGroups
elif not isinstance(panel_set, PanelGroup):

View File

@ -47,30 +47,12 @@ from horizon.tables.actions import LinkAction
from horizon.utils import html
from horizon.utils import settings as utils_settings
# Python 3.8 removes the ability to import the abstract base classes from
# 'collections', but 'collections.abc' is not present in Python 2.7
# TODO(stephenfin): Remove when we drop support for Python 2.7
# pylint: disable=ungrouped-imports
if hasattr(collections, 'abc'):
from collections.abc import Mapping
else:
from collections import Mapping
LOG = logging.getLogger(__name__)
PALETTE = termcolors.PALETTES[termcolors.DEFAULT_PALETTE]
STRING_SEPARATOR = "__"
# 'getfullargspec' is Python 3-only, but 'getargspec' is deprecated for removal
# in Python 3.6
# TODO(stephenfin): Remove 'getargspec' when we drop support for Python 2.7
if hasattr(inspect, 'getfullargspec'):
getargspec = inspect.getfullargspec
else:
getargspec = inspect.getargspec
class Column(html.HTMLElement):
"""A class which represents a single column in a :class:`.DataTable`.
@ -413,7 +395,8 @@ class Column(html.HTMLElement):
if callable(self.transform):
data = self.transform(datum)
# Dict lookups
elif isinstance(datum, Mapping) and self.transform in datum:
elif (isinstance(datum, collections.abc.Mapping) and
self.transform in datum):
data = datum.get(self.transform)
else:
# Basic object lookups
@ -485,7 +468,7 @@ class Column(html.HTMLElement):
return None
obj_id = self.table.get_object_id(datum)
if callable(self.link):
if 'request' in getargspec(self.link).args:
if 'request' in inspect.getfullargspec(self.link).args:
return self.link(datum, request=self.table.request)
return self.link(datum)
try:

View File

@ -44,15 +44,6 @@ from django.contrib.staticfiles.testing \
from horizon import middleware
# Python 3.8 removes the ability to import the abstract base classes from
# 'collections', but 'collections.abc' is not present in Python 2.7
# TODO(stephenfin): Remove when we drop support for Python 2.7
# pylint: disable=ungrouped-imports
if hasattr(collections, 'abc'):
from collections.abc import Mapping
else:
from collections import Mapping
LOG = logging.getLogger(__name__)
@ -335,8 +326,8 @@ class update_settings(django_test_utils.override_settings):
if keep_dict:
for key, new_value in kwargs.items():
value = getattr(settings, key, None)
if (isinstance(new_value, Mapping) and
isinstance(value, Mapping)):
if (isinstance(new_value, collections.abc.Mapping) and
isinstance(value, collections.abc.Mapping)):
copied = copy.copy(value)
copied.update(new_value)
kwargs[key] = copied

View File

@ -16,7 +16,7 @@
# License for the specific language governing permissions and limitations
# under the License.
from collections import abc as collections
import collections.abc
import functools
from django.conf import settings
@ -220,7 +220,7 @@ class Quota(object):
return "<Quota: (%s, %s)>" % (self.name, self.limit)
class QuotaSet(collections.Sequence):
class QuotaSet(collections.abc.Sequence):
"""Wrapper for client QuotaSet objects.
This turns the individual quotas into Quota objects

View File

@ -18,15 +18,6 @@ import testtools
from openstack_dashboard.test.integration_tests import config
# Python 3.8 removes the ability to import the abstract base classes from
# 'collections', but 'collections.abc' is not present in Python 2.7
# TODO(stephenfin): Remove when we drop support for Python 2.7
# pylint: disable=ungrouped-imports
if hasattr(collections, 'abc'):
from collections.abc import Iterable
else:
from collections import Iterable
def _is_test_method_name(method):
return method.startswith('test_')
@ -165,7 +156,7 @@ def skip_because(**kwargs):
def actual_decoration(obj):
skip_method = _get_skip_method(obj)
bugs = kwargs.get("bugs")
if bugs and isinstance(bugs, Iterable):
if bugs and isinstance(bugs, collections.abc.Iterable):
for bug in bugs:
if not bug.isdigit():
raise ValueError("bug must be a valid bug number")