|
|
c145e19 |
From 4681c7eff96f2927dd8cce7e89ed673f38904ee9 Mon Sep 17 00:00:00 2001
|
|
|
c145e19 |
From: Rabi Mishra <ramishra@redhat.com>
|
|
|
c145e19 |
Date: Thu, 15 Nov 2018 16:57:22 +0530
|
|
|
c145e19 |
Subject: [PATCH] Fix formatter handling for python 3.7
|
|
|
c145e19 |
|
|
|
c145e19 |
Calling issubclass() on a python function fails in Python 3.7.
|
|
|
c145e19 |
|
|
|
c145e19 |
Change-Id: Id2abfaad6ed96532157b9bc7b2124e6f6ad37511
|
|
|
c145e19 |
Story: #2003322
|
|
|
c145e19 |
Task: 27942
|
|
|
c145e19 |
---
|
|
|
c145e19 |
osc_lib/utils/__init__.py | 18 ++++++++++++++----
|
|
|
c145e19 |
1 file changed, 14 insertions(+), 4 deletions(-)
|
|
|
c145e19 |
|
|
|
c145e19 |
diff --git a/osc_lib/utils/__init__.py b/osc_lib/utils/__init__.py
|
|
|
c145e19 |
index d640ca8..f3573c7 100644
|
|
|
c145e19 |
--- a/osc_lib/utils/__init__.py
|
|
|
c145e19 |
+++ b/osc_lib/utils/__init__.py
|
|
|
c145e19 |
@@ -430,9 +430,10 @@ def get_dict_properties(item, fields, mixed_case_fields=None, formatters=None):
|
|
|
c145e19 |
data = item[field_name] if field_name in item else ''
|
|
|
c145e19 |
if field in formatters:
|
|
|
c145e19 |
formatter = formatters[field]
|
|
|
c145e19 |
- if issubclass(formatter, cliff_columns.FormattableColumn):
|
|
|
c145e19 |
+ if (isinstance(formatter, type) and issubclass(
|
|
|
c145e19 |
+ formatter, cliff_columns.FormattableColumn)):
|
|
|
c145e19 |
data = formatter(data)
|
|
|
c145e19 |
- else:
|
|
|
c145e19 |
+ elif callable(formatter):
|
|
|
c145e19 |
warnings.warn(
|
|
|
c145e19 |
'The usage of formatter functions is now discouraged. '
|
|
|
c145e19 |
'Consider using cliff.columns.FormattableColumn instead. '
|
|
|
c145e19 |
@@ -440,6 +441,10 @@ def get_dict_properties(item, fields, mixed_case_fields=None, formatters=None):
|
|
|
c145e19 |
category=DeprecationWarning)
|
|
|
c145e19 |
if data is not None:
|
|
|
c145e19 |
data = formatter(data)
|
|
|
c145e19 |
+ else:
|
|
|
c145e19 |
+ msg = "Invalid formatter provided."
|
|
|
c145e19 |
+ raise exceptions.CommandError(msg)
|
|
|
c145e19 |
+
|
|
|
c145e19 |
row.append(data)
|
|
|
c145e19 |
return tuple(row)
|
|
|
c145e19 |
|
|
|
c145e19 |
@@ -492,9 +497,10 @@ def get_item_properties(item, fields, mixed_case_fields=None, formatters=None):
|
|
|
c145e19 |
data = getattr(item, field_name, '')
|
|
|
c145e19 |
if field in formatters:
|
|
|
c145e19 |
formatter = formatters[field]
|
|
|
c145e19 |
- if issubclass(formatter, cliff_columns.FormattableColumn):
|
|
|
c145e19 |
+ if (isinstance(formatter, type) and issubclass(
|
|
|
c145e19 |
+ formatter, cliff_columns.FormattableColumn)):
|
|
|
c145e19 |
data = formatter(data)
|
|
|
c145e19 |
- else:
|
|
|
c145e19 |
+ elif callable(formatter):
|
|
|
c145e19 |
warnings.warn(
|
|
|
c145e19 |
'The usage of formatter functions is now discouraged. '
|
|
|
c145e19 |
'Consider using cliff.columns.FormattableColumn instead. '
|
|
|
c145e19 |
@@ -502,6 +508,10 @@ def get_item_properties(item, fields, mixed_case_fields=None, formatters=None):
|
|
|
c145e19 |
category=DeprecationWarning)
|
|
|
c145e19 |
if data is not None:
|
|
|
c145e19 |
data = formatter(data)
|
|
|
c145e19 |
+ else:
|
|
|
c145e19 |
+ msg = "Invalid formatter provided."
|
|
|
c145e19 |
+ raise exceptions.CommandError(msg)
|
|
|
c145e19 |
+
|
|
|
c145e19 |
row.append(data)
|
|
|
c145e19 |
return tuple(row)
|
|
|
c145e19 |
|
|
|
c145e19 |
--
|
|
|
c145e19 |
2.20.1
|
|
|
c145e19 |
|