Blame 0001-Fix-formatter-handling-for-python-3.7.patch

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