From 357697d0fbed26db81844eafaf9df58e521df4aa Mon Sep 17 00:00:00 2001
From: matbu <mat.bultel@gmail.com>
Date: Tue, 29 Jun 2021 17:33:29 +0200
Subject: [PATCH] Handle backward compatibility for Cliff 2.16.0 (stable/train)

In stable/train Cliff version is 2.16.0 which force us
to pin validations-libs or to handle backward compat directly
in the code.
For long term solution and to avoid tagging, pinning and complex
release management this review fix the compatibility with Cliff 2.16.0

Change-Id: I6dec4c154f088e8cc6450d5d9cf2f9b407fdefdc
---
 validations_libs/cli/base.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/validations_libs/cli/base.py b/validations_libs/cli/base.py
index eee600e4..1b954151 100644
--- a/validations_libs/cli/base.py
+++ b/validations_libs/cli/base.py
@@ -19,6 +19,12 @@ from cliff import _argparse
 from cliff.command import Command
 from cliff.lister import Lister
 
+# Handle backward compatibility for Cliff 2.16.0 in stable/train:
+if hasattr(_argparse, 'SmartHelpFormatter'):
+    from cliff._argparse import SmartHelpFormatter
+else:
+    from cliff.command import _SmartHelpFormatter as SmartHelpFormatter
+
 
 class BaseCommand(Command):
     """Base Command client implementation class"""
@@ -29,7 +35,7 @@ class BaseCommand(Command):
             description=self.get_description(),
             epilog=self.get_epilog(),
             prog=prog_name,
-            formatter_class=_argparse.SmartHelpFormatter,
+            formatter_class=SmartHelpFormatter,
             conflict_handler='resolve',
         )
         for hook in self._hooks:
@@ -47,7 +53,7 @@ class BaseLister(Lister):
             description=self.get_description(),
             epilog=self.get_epilog(),
             prog=prog_name,
-            formatter_class=_argparse.SmartHelpFormatter,
+            formatter_class=SmartHelpFormatter,
             conflict_handler='resolve',
         )