Fix formatter handling for python 3.7

Calling issubclass() on a python function fails in Python 3.7.

Change-Id: Id2abfaad6ed96532157b9bc7b2124e6f6ad37511
Story: #2003322
Task: 27942
This commit is contained in:
Rabi Mishra 2018-11-15 16:57:22 +05:30
parent 2ef48214a2
commit 72fbf45ed1
1 changed files with 14 additions and 4 deletions

View File

@ -430,9 +430,10 @@ def get_dict_properties(item, fields, mixed_case_fields=None, formatters=None):
data = item[field_name] if field_name in item else ''
if field in formatters:
formatter = formatters[field]
if issubclass(formatter, cliff_columns.FormattableColumn):
if (isinstance(formatter, type) and issubclass(
formatter, cliff_columns.FormattableColumn)):
data = formatter(data)
else:
elif callable(formatter):
warnings.warn(
'The usage of formatter functions is now discouraged. '
'Consider using cliff.columns.FormattableColumn instead. '
@ -440,6 +441,10 @@ def get_dict_properties(item, fields, mixed_case_fields=None, formatters=None):
category=DeprecationWarning)
if data is not None:
data = formatter(data)
else:
msg = "Invalid formatter provided."
raise exceptions.CommandError(msg)
row.append(data)
return tuple(row)
@ -492,9 +497,10 @@ def get_item_properties(item, fields, mixed_case_fields=None, formatters=None):
data = getattr(item, field_name, '')
if field in formatters:
formatter = formatters[field]
if issubclass(formatter, cliff_columns.FormattableColumn):
if (isinstance(formatter, type) and issubclass(
formatter, cliff_columns.FormattableColumn)):
data = formatter(data)
else:
elif callable(formatter):
warnings.warn(
'The usage of formatter functions is now discouraged. '
'Consider using cliff.columns.FormattableColumn instead. '
@ -502,6 +508,10 @@ def get_item_properties(item, fields, mixed_case_fields=None, formatters=None):
category=DeprecationWarning)
if data is not None:
data = formatter(data)
else:
msg = "Invalid formatter provided."
raise exceptions.CommandError(msg)
row.append(data)
return tuple(row)