Hello community,

here is the log from the commit of package python-osc-lib for openSUSE:Factory 
checked in at 2020-06-05 20:13:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-osc-lib (Old)
 and      /work/SRC/openSUSE:Factory/.python-osc-lib.new.3606 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-osc-lib"

Fri Jun  5 20:13:35 2020 rev:12 rq:803585 version:2.0.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-osc-lib/python-osc-lib.changes    
2020-03-24 22:32:30.309094157 +0100
+++ /work/SRC/openSUSE:Factory/.python-osc-lib.new.3606/python-osc-lib.changes  
2020-06-05 20:15:40.382860943 +0200
@@ -1,0 +2,11 @@
+Tue May 12 09:47:52 UTC 2020 - [email protected]
+
+- update to version 2.0.0
+  - Add enhance_help kwarg to tags option generators
+  - Add a release note for dropping py2
+  - Update master for stable/train
+  - Drop python 2.7 support and testing
+  - Switch to Ussuri jobs
+  - Add KeyValueAppendAction to osc-lib
+
+-------------------------------------------------------------------

Old:
----
  osc-lib-1.14.1.tar.gz

New:
----
  osc-lib-2.0.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-osc-lib.spec ++++++
--- /var/tmp/diff_new_pack.dWIAk4/_old  2020-06-05 20:15:41.630865535 +0200
+++ /var/tmp/diff_new_pack.dWIAk4/_new  2020-06-05 20:15:41.638865565 +0200
@@ -17,13 +17,13 @@
 
 
 Name:           python-osc-lib
-Version:        1.14.1
+Version:        2.0.0
 Release:        0
 Summary:        OpenStackClient Library
 License:        Apache-2.0
 Group:          Development/Languages/Python
 URL:            https://docs.openstack.org/developer/osc-lib
-Source0:        
https://files.pythonhosted.org/packages/source/o/osc-lib/osc-lib-1.14.1.tar.gz
+Source0:        
https://files.pythonhosted.org/packages/source/o/osc-lib/osc-lib-2.0.0.tar.gz
 BuildRequires:  openstack-macros
 BuildRequires:  python3-Babel >= 2.3.4
 BuildRequires:  python3-cliff >= 2.8.0
@@ -80,7 +80,7 @@
 Documentation for the OpenStack client library.
 
 %prep
-%autosetup -p1 -n osc-lib-1.14.1
+%autosetup -p1 -n osc-lib-2.0.0
 %py_req_cleanup
 
 %build

++++++ _service ++++++
--- /var/tmp/diff_new_pack.dWIAk4/_old  2020-06-05 20:15:41.678865712 +0200
+++ /var/tmp/diff_new_pack.dWIAk4/_new  2020-06-05 20:15:41.682865726 +0200
@@ -1,8 +1,8 @@
 <services>
   <service mode="disabled" name="renderspec">
-    <param 
name="input-template">https://raw.githubusercontent.com/openstack/rpm-packaging/stable/train/openstack/osc-lib/osc-lib.spec.j2</param>
+    <param 
name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/ussuri/openstack/osc-lib/osc-lib.spec.j2</param>
     <param name="output-name">python-osc-lib.spec</param>
-    <param 
name="requirements">https://raw.githubusercontent.com/openstack/osc-lib/stable/train/requirements.txt</param>
+    <param 
name="requirements">https://opendev.org/openstack/osc-lib/raw/branch/stable/ussuri/requirements.txt</param>
     <param name="changelog-email">[email protected]</param>
     <param name="changelog-provider">gh,openstack,osc-lib</param>
   </service>

++++++ osc-lib-1.14.1.tar.gz -> osc-lib-2.0.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/.zuul.yaml 
new/osc-lib-2.0.0/.zuul.yaml
--- old/osc-lib-1.14.1/.zuul.yaml       2019-09-11 16:28:13.000000000 +0200
+++ new/osc-lib-2.0.0/.zuul.yaml        2020-01-14 17:55:57.000000000 +0100
@@ -4,8 +4,7 @@
       - lib-forward-testing
       - lib-forward-testing-python3
       - openstack-lower-constraints-jobs
-      - openstack-python-jobs
-      - openstack-python3-train-jobs
+      - openstack-python3-ussuri-jobs
       - osc-tox-unit-tips
       - publish-openstack-docs-pti
       - release-notes-jobs-python3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/AUTHORS new/osc-lib-2.0.0/AUTHORS
--- old/osc-lib-1.14.1/AUTHORS  2019-09-11 16:29:05.000000000 +0200
+++ new/osc-lib-2.0.0/AUTHORS   2020-01-14 17:56:40.000000000 +0100
@@ -41,6 +41,7 @@
 Doug Hellmann <[email protected]>
 Dougal Matthews <[email protected]>
 Eric Brown <[email protected]>
+Eric Fried <[email protected]>
 Florent Flament <[email protected]>
 Ghanshyam Mann <[email protected]>
 Guojian Shao <[email protected]>
@@ -106,6 +107,7 @@
 Sascha Peilicke <[email protected]>
 Sheel Rana <[email protected]>
 Sirushti Murugesan <[email protected]>
+Stephen Finucane <[email protected]>
 Steve Martinelli <[email protected]>
 Steve Martinelli <[email protected]>
 Swapnil Kulkarni (coolsvap) <[email protected]>
@@ -136,6 +138,7 @@
 kavithahr <[email protected]>
 lin-hua-cheng <[email protected]>
 luqitao <[email protected]>
+pengyuesheng <[email protected]>
 qingszhao <[email protected]>
 qtang <[email protected]>
 rabi <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/ChangeLog new/osc-lib-2.0.0/ChangeLog
--- old/osc-lib-1.14.1/ChangeLog        2019-09-11 16:29:05.000000000 +0200
+++ new/osc-lib-2.0.0/ChangeLog 2020-01-14 17:56:40.000000000 +0100
@@ -1,6 +1,20 @@
 CHANGES
 =======
 
+2.0.0
+-----
+
+* Add a release note for dropping py2
+* Drop python 2.7 support and testing
+* Add enhance\_help kwarg to tags option generators
+* Switch to Ussuri jobs
+* Add KeyValueAppendAction to osc-lib
+
+1.15.0
+------
+
+* Update master for stable/train
+
 1.14.1
 ------
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/PKG-INFO new/osc-lib-2.0.0/PKG-INFO
--- old/osc-lib-1.14.1/PKG-INFO 2019-09-11 16:29:05.000000000 +0200
+++ new/osc-lib-2.0.0/PKG-INFO  2020-01-14 17:56:40.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: osc-lib
-Version: 1.14.1
+Version: 2.0.0
 Summary: OpenStackClient Library
 Home-page: https://docs.openstack.org/osc-lib/latest/
 Author: OpenStack
@@ -78,8 +78,6 @@
 Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/osc_lib/cli/parseractions.py 
new/osc-lib-2.0.0/osc_lib/cli/parseractions.py
--- old/osc-lib-1.14.1/osc_lib/cli/parseractions.py     2019-09-11 
16:28:13.000000000 +0200
+++ new/osc-lib-2.0.0/osc_lib/cli/parseractions.py      2020-01-14 
17:55:57.000000000 +0100
@@ -23,7 +23,7 @@
 class KeyValueAction(argparse.Action):
     """A custom action to parse arguments as key=value pairs
 
-    Ensures that ``dest`` is a dict
+    Ensures that ``dest`` is a dict and values are strings.
     """
 
     def __call__(self, parser, namespace, values, option_string=None):
@@ -43,6 +43,35 @@
         else:
             msg = _("Expected 'key=value' type, but got: %s")
             raise argparse.ArgumentTypeError(msg % str(values))
+
+
+class KeyValueAppendAction(argparse.Action):
+    """A custom action to parse arguments as key=value pairs
+
+    Ensures that ``dest`` is a dict and values are lists of strings.
+    """
+
+    def __call__(self, parser, namespace, values, option_string=None):
+        # Make sure we have an empty dict rather than None
+        if getattr(namespace, self.dest, None) is None:
+            setattr(namespace, self.dest, {})
+
+        # Add value if an assignment else remove it
+        if '=' in values:
+            key, value = values.split('=', 1)
+            # NOTE(qtang): Prevent null key setting in property
+            if '' == key:
+                msg = _("Property key must be specified: %s")
+                raise argparse.ArgumentTypeError(msg % str(values))
+
+            dest = getattr(namespace, self.dest)
+            if key in dest:
+                dest[key].append(value)
+            else:
+                dest[key] = [value]
+        else:
+            msg = _("Expected 'key=value' type, but got: %s")
+            raise argparse.ArgumentTypeError(msg % str(values))
 
 
 class MultiKeyValueAction(argparse.Action):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/osc-lib-1.14.1/osc_lib/tests/cli/test_parseractions.py 
new/osc-lib-2.0.0/osc_lib/tests/cli/test_parseractions.py
--- old/osc-lib-1.14.1/osc_lib/tests/cli/test_parseractions.py  2019-09-11 
16:28:13.000000000 +0200
+++ new/osc-lib-2.0.0/osc_lib/tests/cli/test_parseractions.py   2020-01-14 
17:55:57.000000000 +0100
@@ -59,6 +59,53 @@
                               self.parser.parse_args, data)
 
 
+class TestKeyValueAppendAction(utils.TestCase):
+
+    def setUp(self):
+        super(TestKeyValueAppendAction, self).setUp()
+
+        self.parser = argparse.ArgumentParser()
+
+        # Set up our typical usage
+        self.parser.add_argument(
+            '--hint',
+            metavar='<key=value>',
+            action=parseractions.KeyValueAppendAction,
+            help='Arbitrary key/value pairs to be sent to the scheduler for '
+                 'custom use',
+        )
+
+    def test_good_values(self):
+        print(self.parser._get_optional_actions())
+        results = self.parser.parse_args([
+            '--hint', 'same_host=a0cf03a5-d921-4877-bb5c-86d26cf818e1',
+            '--hint', 'same_host=8c19174f-4220-44f0-824a-cd1eeef10287',
+            '--hint', 'query=[>=,$free_ram_mb,1024]',
+        ])
+
+        actual = getattr(results, 'hint', {})
+        expect = {
+            'same_host': [
+                'a0cf03a5-d921-4877-bb5c-86d26cf818e1',
+                '8c19174f-4220-44f0-824a-cd1eeef10287',
+            ],
+            'query': [
+                '[>=,$free_ram_mb,1024]',
+            ],
+        }
+        self.assertEqual(expect, actual)
+
+    def test_error_values(self):
+        data_list = [
+            ['--hint', 'red', ],
+            ['--hint', '=', ],
+            ['--hint', '=red', ]
+        ]
+        for data in data_list:
+            self.assertRaises(argparse.ArgumentTypeError,
+                              self.parser.parse_args, data)
+
+
 class TestMultiKeyValueAction(utils.TestCase):
 
     def setUp(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/osc_lib/tests/utils/test_tags.py 
new/osc-lib-2.0.0/osc_lib/tests/utils/test_tags.py
--- old/osc-lib-1.14.1/osc_lib/tests/utils/test_tags.py 2019-09-11 
16:28:13.000000000 +0200
+++ new/osc-lib-2.0.0/osc_lib/tests/utils/test_tags.py  2020-01-14 
17:55:57.000000000 +0100
@@ -19,6 +19,11 @@
 from osc_lib.utils import tags
 
 
+def help_enhancer(_h):
+    """A simple helper to validate the ``enhance_help`` kwarg."""
+    return ''.join(reversed(_h))
+
+
 class TestTags(test_utils.TestCase):
 
     def test_add_tag_filtering_option_to_parser(self):
@@ -169,3 +174,134 @@
         tags.update_tags_for_unset(mock_client, mock_obj, mock_parsed_args)
         mock_client.set_tags.assert_called_once_with(
             mock_obj, ['tag1'])
+
+
+class TestTagHelps(test_utils.TestCase):
+
+    def _test_tag_method_help(self, meth, exp_normal, exp_enhanced):
+        """Vet the help text of the options added by the tag filtering helpers.
+
+        :param meth: One of the ``add_tag_*`` methods.
+        :param exp_normal: Expected help output without ``enhance_help``.
+        :param exp_enhanced: Expected output with ``enhance_help`` set to
+            ``help_enhancer``
+        """
+        parser = argparse.ArgumentParser()
+        meth(parser, 'test')
+        self.assertEqual(exp_normal, parser.format_help())
+
+        parser = argparse.ArgumentParser()
+        meth(parser, 'test', enhance_help=help_enhancer)
+        self.assertEqual(exp_enhanced, parser.format_help())
+
+    def test_add_tag_filtering_option_to_parser(self):
+        self._test_tag_method_help(
+            tags.add_tag_filtering_option_to_parser,
+            """\
+usage: run.py [-h] [--tags <tag>[,<tag>,...]] [--any-tags <tag>[,<tag>,...]]
+              [--not-tags <tag>[,<tag>,...]]
+              [--not-any-tags <tag>[,<tag>,...]]
+
+optional arguments:
+  -h, --help            show this help message and exit
+  --tags <tag>[,<tag>,...]
+                        List test which have all given tag(s) (Comma-separated
+                        list of tags)
+  --any-tags <tag>[,<tag>,...]
+                        List test which have any given tag(s) (Comma-separated
+                        list of tags)
+  --not-tags <tag>[,<tag>,...]
+                        Exclude test which have all given tag(s) (Comma-
+                        separated list of tags)
+  --not-any-tags <tag>[,<tag>,...]
+                        Exclude test which have any given tag(s) (Comma-
+                        separated list of tags)
+""",
+            """\
+usage: run.py [-h] [--tags <tag>[,<tag>,...]] [--any-tags <tag>[,<tag>,...]]
+              [--not-tags <tag>[,<tag>,...]]
+              [--not-any-tags <tag>[,<tag>,...]]
+
+optional arguments:
+  -h, --help            show this help message and exit
+  --tags <tag>[,<tag>,...]
+                        )sgat fo tsil detarapes-ammoC( )s(gat nevig lla evah
+                        hcihw tset tsiL
+  --any-tags <tag>[,<tag>,...]
+                        )sgat fo tsil detarapes-ammoC( )s(gat nevig yna evah
+                        hcihw tset tsiL
+  --not-tags <tag>[,<tag>,...]
+                        )sgat fo tsil detarapes-ammoC( )s(gat nevig lla evah
+                        hcihw tset edulcxE
+  --not-any-tags <tag>[,<tag>,...]
+                        )sgat fo tsil detarapes-ammoC( )s(gat nevig yna evah
+                        hcihw tset edulcxE
+""")
+
+    def test_add_tag_option_to_parser_for_create(self):
+        self._test_tag_method_help(
+            tags.add_tag_option_to_parser_for_create,
+            """\
+usage: run.py [-h] [--tag <tag> | --no-tag]
+
+optional arguments:
+  -h, --help   show this help message and exit
+  --tag <tag>  Tag to be added to the test (repeat option to set multiple
+               tags)
+  --no-tag     No tags associated with the test
+""",
+            """\
+usage: run.py [-h] [--tag <tag> | --no-tag]
+
+optional arguments:
+  -h, --help   show this help message and exit
+  --tag <tag>  )sgat elpitlum tes ot noitpo taeper( tset eht ot dedda eb ot
+               gaT
+  --no-tag     tset eht htiw detaicossa sgat oN
+""")
+
+    def test_add_tag_option_to_parser_for_set(self):
+        self._test_tag_method_help(
+            tags.add_tag_option_to_parser_for_set,
+            """\
+usage: run.py [-h] [--tag <tag>] [--no-tag]
+
+optional arguments:
+  -h, --help   show this help message and exit
+  --tag <tag>  Tag to be added to the test (repeat option to set multiple
+               tags)
+  --no-tag     Clear tags associated with the test. Specify both --tag and
+               --no-tag to overwrite current tags
+""",
+            """\
+usage: run.py [-h] [--tag <tag>] [--no-tag]
+
+optional arguments:
+  -h, --help   show this help message and exit
+  --tag <tag>  )sgat elpitlum tes ot noitpo taeper( tset eht ot dedda eb ot
+               gaT
+  --no-tag     sgat tnerruc etirwrevo ot gat-on-- dna gat-- htob yficepS .tset
+               eht htiw detaicossa sgat raelC
+""")
+
+    def test_add_tag_option_to_parser_for_unset(self):
+        self._test_tag_method_help(
+            tags.add_tag_option_to_parser_for_unset,
+            """\
+usage: run.py [-h] [--tag <tag> | --all-tag]
+
+optional arguments:
+  -h, --help   show this help message and exit
+  --tag <tag>  Tag to be removed from the test (repeat option to remove
+               multiple tags)
+  --all-tag    Clear all tags associated with the test
+""",
+            """\
+usage: run.py [-h] [--tag <tag> | --all-tag]
+
+optional arguments:
+  -h, --help   show this help message and exit
+  --tag <tag>  )sgat elpitlum evomer ot noitpo taeper( tset eht morf devomer
+               eb ot gaT
+  --all-tag    tset eht htiw detaicossa sgat lla raelC
+""")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/osc_lib/utils/tags.py 
new/osc-lib-2.0.0/osc_lib/utils/tags.py
--- old/osc-lib-1.14.1/osc_lib/utils/tags.py    2019-09-11 16:28:13.000000000 
+0200
+++ new/osc-lib-2.0.0/osc_lib/utils/tags.py     2020-01-14 17:55:57.000000000 
+0100
@@ -22,39 +22,49 @@
         setattr(namespace, self.dest, values.split(','))
 
 
-def add_tag_filtering_option_to_parser(parser, resource_name):
+def add_tag_filtering_option_to_parser(
+        parser, resource_name, enhance_help=lambda _h: _h):
     """Add tag filtering options to a parser.
 
     :param parser: argparse.Argument parser object.
     :param resource_name: Description of the object being filtered.
+    :param enhance_help: A callable accepting a single parameter, the
+        (translated) help string, and returning a (translated) help string. May
+        be used by a caller wishing to add qualifying text, such as "Applies to
+        version XYZ only", to the help strings for all options produced by this
+        method.
     """
     parser.add_argument(
         '--tags',
         metavar='<tag>[,<tag>,...]',
         action=_CommaListAction,
-        help=_('List %s which have all given tag(s) '
-               '(Comma-separated list of tags)') % resource_name
+        help=enhance_help(
+            _('List %s which have all given tag(s) '
+              '(Comma-separated list of tags)') % resource_name)
     )
     parser.add_argument(
         '--any-tags',
         metavar='<tag>[,<tag>,...]',
         action=_CommaListAction,
-        help=_('List %s which have any given tag(s) '
-               '(Comma-separated list of tags)') % resource_name
+        help=enhance_help(
+            _('List %s which have any given tag(s) '
+              '(Comma-separated list of tags)') % resource_name)
     )
     parser.add_argument(
         '--not-tags',
         metavar='<tag>[,<tag>,...]',
         action=_CommaListAction,
-        help=_('Exclude %s which have all given tag(s) '
-               '(Comma-separated list of tags)') % resource_name
+        help=enhance_help(
+            _('Exclude %s which have all given tag(s) '
+              '(Comma-separated list of tags)') % resource_name)
     )
     parser.add_argument(
         '--not-any-tags',
         metavar='<tag>[,<tag>,...]',
         action=_CommaListAction,
-        help=_('Exclude %s which have any given tag(s) '
-               '(Comma-separated list of tags)') % resource_name
+        help=enhance_help(
+            _('Exclude %s which have any given tag(s) '
+              '(Comma-separated list of tags)') % resource_name)
     )
 
 
@@ -77,11 +87,17 @@
         args['not_any_tags'] = ','.join(parsed_args.not_any_tags)
 
 
-def add_tag_option_to_parser_for_create(parser, resource_name):
+def add_tag_option_to_parser_for_create(
+        parser, resource_name, enhance_help=lambda _h: _h):
     """Add tag options to a parser for create commands.
 
     :param parser: argparse.Argument parser object.
     :param resource_name: Description of the object being filtered.
+    :param enhance_help: A callable accepting a single parameter, the
+        (translated) help string, and returning a (translated) help string. May
+        be used by a caller wishing to add qualifying text, such as "Applies to
+        version XYZ only", to the help strings for all options produced by this
+        method.
     """
     tag_group = parser.add_mutually_exclusive_group()
     tag_group.add_argument(
@@ -89,43 +105,58 @@
         action='append',
         dest='tags',
         metavar='<tag>',
-        help=_("Tag to be added to the %s "
-               "(repeat option to set multiple tags)") % resource_name
+        help=enhance_help(
+            _("Tag to be added to the %s "
+              "(repeat option to set multiple tags)") % resource_name)
     )
     tag_group.add_argument(
         '--no-tag',
         action='store_true',
-        help=_("No tags associated with the %s") % resource_name
+        help=enhance_help(_("No tags associated with the %s") % resource_name)
     )
 
 
-def add_tag_option_to_parser_for_set(parser, resource_name):
+def add_tag_option_to_parser_for_set(
+        parser, resource_name, enhance_help=lambda _h: _h):
     """Add tag options to a parser for set commands.
 
     :param parser: argparse.Argument parser object.
     :param resource_name: Description of the object being filtered.
+    :param enhance_help: A callable accepting a single parameter, the
+        (translated) help string, and returning a (translated) help string. May
+        be used by a caller wishing to add qualifying text, such as "Applies to
+        version XYZ only", to the help strings for all options produced by this
+        method.
     """
     parser.add_argument(
         '--tag',
         action='append',
         dest='tags',
         metavar='<tag>',
-        help=_("Tag to be added to the %s "
-               "(repeat option to set multiple tags)") % resource_name
+        help=enhance_help(
+            _("Tag to be added to the %s "
+              "(repeat option to set multiple tags)") % resource_name)
     )
     parser.add_argument(
         '--no-tag',
         action='store_true',
-        help=_("Clear tags associated with the %s. Specify both "
-               "--tag and --no-tag to overwrite current tags") % resource_name
+        help=enhance_help(
+            _("Clear tags associated with the %s. Specify both "
+              "--tag and --no-tag to overwrite current tags") % resource_name)
     )
 
 
-def add_tag_option_to_parser_for_unset(parser, resource_name):
+def add_tag_option_to_parser_for_unset(
+        parser, resource_name, enhance_help=lambda _h: _h):
     """Add tag options to a parser for set commands.
 
     :param parser: argparse.Argument parser object.
     :param resource_name: Description of the object being filtered.
+    :param enhance_help: A callable accepting a single parameter, the
+        (translated) help string, and returning a (translated) help string. May
+        be used by a caller wishing to add qualifying text, such as "Applies to
+        version XYZ only", to the help strings for all options produced by this
+        method.
     """
     tag_group = parser.add_mutually_exclusive_group()
     tag_group.add_argument(
@@ -133,12 +164,14 @@
         action='append',
         dest='tags',
         metavar='<tag>',
-        help=_("Tag to be removed from the %s "
-               "(repeat option to remove multiple tags)") % resource_name)
+        help=enhance_help(
+            _("Tag to be removed from the %s "
+              "(repeat option to remove multiple tags)") % resource_name))
     tag_group.add_argument(
         '--all-tag',
         action='store_true',
-        help=_("Clear all tags associated with the %s") % resource_name)
+        help=enhance_help(
+            _("Clear all tags associated with the %s") % resource_name))
 
 
 def update_tags_for_set(client, obj, parsed_args):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/osc_lib.egg-info/PKG-INFO 
new/osc-lib-2.0.0/osc_lib.egg-info/PKG-INFO
--- old/osc-lib-1.14.1/osc_lib.egg-info/PKG-INFO        2019-09-11 
16:29:05.000000000 +0200
+++ new/osc-lib-2.0.0/osc_lib.egg-info/PKG-INFO 2020-01-14 17:56:40.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: osc-lib
-Version: 1.14.1
+Version: 2.0.0
 Summary: OpenStackClient Library
 Home-page: https://docs.openstack.org/osc-lib/latest/
 Author: OpenStack
@@ -78,8 +78,6 @@
 Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Programming Language :: Python
-Classifier: Programming Language :: Python :: 2
-Classifier: Programming Language :: Python :: 2.7
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/osc_lib.egg-info/SOURCES.txt 
new/osc-lib-2.0.0/osc_lib.egg-info/SOURCES.txt
--- old/osc-lib-1.14.1/osc_lib.egg-info/SOURCES.txt     2019-09-11 
16:29:05.000000000 +0200
+++ new/osc-lib-2.0.0/osc_lib.egg-info/SOURCES.txt      2020-01-14 
17:56:40.000000000 +0100
@@ -79,6 +79,7 @@
 osc_lib/utils/tags.py
 releasenotes/notes/.placeholder
 releasenotes/notes/1.0-summary-47dcce446d6a512b.yaml
+releasenotes/notes/add-KeyValueAppendAction-class-f830e71152d6b91e.yaml
 releasenotes/notes/add-MultiKeyValueCommaAction-class-01dd254a287d70d2.yaml
 releasenotes/notes/arg-precedence-1ba9fd6929650830.yaml
 releasenotes/notes/auth-type-none-d96760912605f822.yaml
@@ -87,6 +88,7 @@
 releasenotes/notes/bug-2004898-686577a07e791051.yaml
 releasenotes/notes/bug-2006480-436489d39643e76c.yaml
 releasenotes/notes/direct-openstacksdk-535a179f3c645cc0.yaml
+releasenotes/notes/drop-py2-support-60c93244107d5778.yaml
 releasenotes/notes/find-project-203bf867619c557e.yaml
 releasenotes/notes/keystone-to-keystone-9b2e55b051775322.yaml
 releasenotes/notes/none-auth-cli-48ab0e48d4852941.yaml
@@ -100,6 +102,7 @@
 releasenotes/source/queens.rst
 releasenotes/source/rocky.rst
 releasenotes/source/stein.rst
+releasenotes/source/train.rst
 releasenotes/source/unreleased.rst
 releasenotes/source/_static/.placeholder
 releasenotes/source/_templates/.placeholder
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/osc_lib.egg-info/pbr.json 
new/osc-lib-2.0.0/osc_lib.egg-info/pbr.json
--- old/osc-lib-1.14.1/osc_lib.egg-info/pbr.json        2019-09-11 
16:29:05.000000000 +0200
+++ new/osc-lib-2.0.0/osc_lib.egg-info/pbr.json 2020-01-14 17:56:40.000000000 
+0100
@@ -1 +1 @@
-{"git_version": "a0d9746", "is_release": true}
\ No newline at end of file
+{"git_version": "fea31fb", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/osc-lib-1.14.1/releasenotes/notes/add-KeyValueAppendAction-class-f830e71152d6b91e.yaml
 
new/osc-lib-2.0.0/releasenotes/notes/add-KeyValueAppendAction-class-f830e71152d6b91e.yaml
--- 
old/osc-lib-1.14.1/releasenotes/notes/add-KeyValueAppendAction-class-f830e71152d6b91e.yaml
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/osc-lib-2.0.0/releasenotes/notes/add-KeyValueAppendAction-class-f830e71152d6b91e.yaml
   2020-01-14 17:55:57.000000000 +0100
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add ``KeyValueAppendAction`` that allows key-value arguments to be 
specified
+    multiple times. For example: ``--property key1=value1 --property 
key1=value2``.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/osc-lib-1.14.1/releasenotes/notes/drop-py2-support-60c93244107d5778.yaml 
new/osc-lib-2.0.0/releasenotes/notes/drop-py2-support-60c93244107d5778.yaml
--- 
old/osc-lib-1.14.1/releasenotes/notes/drop-py2-support-60c93244107d5778.yaml    
    1970-01-01 01:00:00.000000000 +0100
+++ new/osc-lib-2.0.0/releasenotes/notes/drop-py2-support-60c93244107d5778.yaml 
2020-01-14 17:55:57.000000000 +0100
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    Python 2.7 support has been dropped. The minimum version of Python now
+    supported by osc-lib is Python 3.6.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/releasenotes/source/index.rst 
new/osc-lib-2.0.0/releasenotes/source/index.rst
--- old/osc-lib-1.14.1/releasenotes/source/index.rst    2019-09-11 
16:28:13.000000000 +0200
+++ new/osc-lib-2.0.0/releasenotes/source/index.rst     2020-01-14 
17:55:57.000000000 +0100
@@ -6,6 +6,7 @@
    :maxdepth: 1
 
    unreleased
+   train
    stein
    rocky
    queens
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/releasenotes/source/train.rst 
new/osc-lib-2.0.0/releasenotes/source/train.rst
--- old/osc-lib-1.14.1/releasenotes/source/train.rst    1970-01-01 
01:00:00.000000000 +0100
+++ new/osc-lib-2.0.0/releasenotes/source/train.rst     2020-01-14 
17:55:57.000000000 +0100
@@ -0,0 +1,6 @@
+==========================
+Train Series Release Notes
+==========================
+
+.. release-notes::
+   :branch: stable/train
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/setup.cfg new/osc-lib-2.0.0/setup.cfg
--- old/osc-lib-1.14.1/setup.cfg        2019-09-11 16:29:05.000000000 +0200
+++ new/osc-lib-2.0.0/setup.cfg 2020-01-14 17:56:40.000000000 +0100
@@ -13,8 +13,6 @@
        License :: OSI Approved :: Apache Software License
        Operating System :: POSIX :: Linux
        Programming Language :: Python
-       Programming Language :: Python :: 2
-       Programming Language :: Python :: 2.7
        Programming Language :: Python :: 3
        Programming Language :: Python :: 3.6
        Programming Language :: Python :: 3.7
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/osc-lib-1.14.1/tox.ini new/osc-lib-2.0.0/tox.ini
--- old/osc-lib-1.14.1/tox.ini  2019-09-11 16:28:13.000000000 +0200
+++ new/osc-lib-2.0.0/tox.ini   2020-01-14 17:55:57.000000000 +0100
@@ -1,9 +1,10 @@
 [tox]
 minversion = 2.0
-envlist = py27,py37,pep8
+envlist = py37,pep8
 skipdist = True
 
 [testenv]
+basepython = python3
 usedevelop = True
 install_command = pip install {opts} {packages}
 setenv = VIRTUAL_ENV={envdir}
@@ -18,7 +19,6 @@
 whitelist_externals = stestr
 
 [testenv:unit-tips]
-basepython = python3
 commands =
     pip install -q -e "git+file://{toxinidir}/../cliff#egg=cliff"
     pip install -q -e "git+file://{toxinidir}/../keystoneauth#egg=keystoneauth"
@@ -28,25 +28,20 @@
 whitelist_externals = stestr
 
 [testenv:pep8]
-basepython = python3
 commands = flake8
 
 [testenv:venv]
-basepython = python3
 commands = {posargs}
 
 [testenv:cover]
-basepython = python3
 commands =
     python setup.py test --coverage --coverage-package-name=osc_lib 
--testr-args='{posargs}'
     coverage report
 
 [testenv:debug]
-basepython = python3
 commands = oslo_debug_helper -t osc_lib/tests {posargs}
 
 [testenv:docs]
-basepython = python3
 deps =
   
-c{env:UPPER_CONSTRAINTS_FILE:https://opendev.org/openstack/requirements/raw/upper-constraints.txt}
   -r{toxinidir}/requirements.txt
@@ -58,7 +53,6 @@
     sphinx-build -a -E -W -d doc/build/doctrees -b html doc/source 
doc/build/html
 
 [testenv:releasenotes]
-basepython = python3
 commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html 
releasenotes/source releasenotes/build/html
 
 [flake8]
@@ -69,7 +63,6 @@
 ignore = __
 
 [testenv:lower-constraints]
-basepython = python3
 deps =
   -c{toxinidir}/lower-constraints.txt
   -r{toxinidir}/test-requirements.txt


Reply via email to