diff -pruN 2.4.0-3/debian/changelog 2.5.1-2/debian/changelog
--- 2.4.0-3/debian/changelog	2021-12-22 22:47:27.000000000 +0000
+++ 2.5.1-2/debian/changelog	2022-03-25 09:41:48.000000000 +0000
@@ -1,3 +1,17 @@
+python-heatclient (2.5.1-2) unstable; urgency=medium
+
+  * Uploading to unstable.
+
+ -- Thomas Goirand <zigo@debian.org>  Fri, 25 Mar 2022 10:41:48 +0100
+
+python-heatclient (2.5.1-1) experimental; urgency=medium
+
+  * New upstream release.
+  * Add autopkgtest.
+  * Removed fix-import-from-collections.patch applied upstream.
+
+ -- Thomas Goirand <zigo@debian.org>  Fri, 25 Feb 2022 15:53:52 +0100
+
 python-heatclient (2.4.0-3) unstable; urgency=medium
 
   * Add fix-import-from-collections.patch (Closes: #1002377).
diff -pruN 2.4.0-3/debian/patches/fix-import-from-collections.patch 2.5.1-2/debian/patches/fix-import-from-collections.patch
--- 2.4.0-3/debian/patches/fix-import-from-collections.patch	2021-12-22 22:47:27.000000000 +0000
+++ 2.5.1-2/debian/patches/fix-import-from-collections.patch	1970-01-01 00:00:00.000000000 +0000
@@ -1,21 +0,0 @@
-Description: Fix import from collections
-Author: Thomas Goirand <zigo@debian.org>
-Bug-Debian: https://bugs.debian.org/1002377
-Forwarded: no
-Last-Update: 2021-12-22
-
---- python-heatclient-2.4.0.orig/heatclient/common/template_utils.py
-+++ python-heatclient-2.4.0/heatclient/common/template_utils.py
-@@ -203,10 +203,10 @@ def deep_update(old, new):
-         old = {}
- 
-     for k, v in new.items():
--        if isinstance(v, collections.Mapping):
-+        if isinstance(v, collections.abc.Mapping):
-             r = deep_update(old.get(k, {}), v)
-             old[k] = r
--        elif v is None and isinstance(old.get(k), collections.Mapping):
-+        elif v is None and isinstance(old.get(k), collections.abc.Mapping):
-             # Don't override empty data, to work around yaml syntax issue
-             pass
-         else:
diff -pruN 2.4.0-3/debian/patches/series 2.5.1-2/debian/patches/series
--- 2.4.0-3/debian/patches/series	2021-12-22 22:47:27.000000000 +0000
+++ 2.5.1-2/debian/patches/series	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-fix-import-from-collections.patch
diff -pruN 2.4.0-3/debian/tests/control 2.5.1-2/debian/tests/control
--- 2.4.0-3/debian/tests/control	1970-01-01 00:00:00.000000000 +0000
+++ 2.5.1-2/debian/tests/control	2022-03-25 09:41:48.000000000 +0000
@@ -0,0 +1,5 @@
+Tests: unittests
+Depends:
+ @,
+ @builddeps@,
+Restrictions: allow-stderr needs-root
diff -pruN 2.4.0-3/debian/tests/unittests 2.5.1-2/debian/tests/unittests
--- 2.4.0-3/debian/tests/unittests	1970-01-01 00:00:00.000000000 +0000
+++ 2.5.1-2/debian/tests/unittests	2022-03-25 09:41:48.000000000 +0000
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+set -e
+
+pkgos-dh_auto_test --no-py2 'heatclient\.tests.*'
diff -pruN 2.4.0-3/heatclient/common/template_utils.py 2.5.1-2/heatclient/common/template_utils.py
--- 2.4.0-3/heatclient/common/template_utils.py	2021-07-06 12:24:33.000000000 +0000
+++ 2.5.1-2/heatclient/common/template_utils.py	2022-02-07 07:47:19.000000000 +0000
@@ -13,7 +13,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import collections
+from collections import abc
 from oslo_serialization import jsonutils
 import six
 from six.moves.urllib import error
@@ -203,10 +203,10 @@ def deep_update(old, new):
         old = {}
 
     for k, v in new.items():
-        if isinstance(v, collections.Mapping):
+        if isinstance(v, abc.Mapping):
             r = deep_update(old.get(k, {}), v)
             old[k] = r
-        elif v is None and isinstance(old.get(k), collections.Mapping):
+        elif v is None and isinstance(old.get(k), abc.Mapping):
             # Don't override empty data, to work around yaml syntax issue
             pass
         else:
diff -pruN 2.4.0-3/heatclient/tests/functional/osc/v1/test_readonly.py 2.5.1-2/heatclient/tests/functional/osc/v1/test_readonly.py
--- 2.4.0-3/heatclient/tests/functional/osc/v1/test_readonly.py	2021-07-06 12:24:33.000000000 +0000
+++ 2.5.1-2/heatclient/tests/functional/osc/v1/test_readonly.py	2022-02-07 07:47:19.000000000 +0000
@@ -91,7 +91,7 @@ class SimpleReadOnlyOpenStackClientTest(
     def test_openstack_resource_type_show(self):
         rsrc_schema = self.openstack('orchestration resource type show '
                                      'OS::Heat::RandomString')
-        self.assertIsInstance(yaml.load(rsrc_schema), dict)
+        self.assertIsInstance(yaml.safe_load(rsrc_schema), dict)
 
     def _template_validate(self, templ_name, parms):
         heat_template_path = self.get_template_path(templ_name)
diff -pruN 2.4.0-3/lower-constraints.txt 2.5.1-2/lower-constraints.txt
--- 2.4.0-3/lower-constraints.txt	2021-07-06 12:24:33.000000000 +0000
+++ 2.5.1-2/lower-constraints.txt	2022-02-07 07:47:19.000000000 +0000
@@ -8,9 +8,9 @@ cmd2==0.8.0
 coverage==4.0
 cryptography==2.7
 debtcollector==1.2.0
-decorator==3.4.0
+decorator==4.3.0
 deprecation==1.0
-docutils==0.11
+docutils==0.13.1
 dogpile.cache==0.6.2
 dulwich==0.15.0
 extras==1.0.0
@@ -31,7 +31,7 @@ linecache2==1.0.0
 MarkupSafe==1.0
 mccabe==0.6.0
 monotonic==0.6
-msgpack-python==0.4.0
+msgpack-python==0.5.6
 munch==2.1.0
 netaddr==0.7.18
 netifaces==0.10.4
@@ -69,7 +69,7 @@ python-novaclient==9.1.0
 python-openstackclient==3.12.0
 python-subunit==1.0.0
 python-swiftclient==3.2.0
-pytz==2013.6
+pytz==2018.3
 PyYAML==3.13
 requests-mock==1.2.0
 requests==2.14.2
diff -pruN 2.4.0-3/releasenotes/source/index.rst 2.5.1-2/releasenotes/source/index.rst
--- 2.4.0-3/releasenotes/source/index.rst	2021-07-06 12:24:33.000000000 +0000
+++ 2.5.1-2/releasenotes/source/index.rst	2022-02-07 07:47:19.000000000 +0000
@@ -7,6 +7,7 @@ Welcome to Python-heatclient releasenote
    :caption: Contents:
 
    unreleased
+   xena
    wallaby
    victoria
    ussuri
diff -pruN 2.4.0-3/releasenotes/source/xena.rst 2.5.1-2/releasenotes/source/xena.rst
--- 2.4.0-3/releasenotes/source/xena.rst	1970-01-01 00:00:00.000000000 +0000
+++ 2.5.1-2/releasenotes/source/xena.rst	2022-02-07 07:47:19.000000000 +0000
@@ -0,0 +1,6 @@
+=========================
+Xena Series Release Notes
+=========================
+
+.. release-notes::
+   :branch: stable/xena
diff -pruN 2.4.0-3/setup.cfg 2.5.1-2/setup.cfg
--- 2.4.0-3/setup.cfg	2021-07-06 12:24:33.000000000 +0000
+++ 2.5.1-2/setup.cfg	2022-02-07 07:47:19.000000000 +0000
@@ -2,12 +2,12 @@
 name = python-heatclient
 url = http://launchpad.net/python-heatclient
 summary = OpenStack Orchestration API Client Library
-description-file =
+description_file =
     README.rst
 author = OpenStack
-author-email = openstack-discuss@lists.openstack.org
-home-page = https://docs.openstack.org/python-heatclient/latest
-python-requires = >=3.6
+author_email = openstack-discuss@lists.openstack.org
+home_page = https://docs.openstack.org/python-heatclient/latest
+python_requires = >=3.6
 classifier =
     Development Status :: 5 - Production/Stable
     Environment :: Console
@@ -21,6 +21,7 @@ classifier =
     Programming Language :: Python :: 3.6
     Programming Language :: Python :: 3.7
     Programming Language :: Python :: 3.8
+    Programming Language :: Python :: 3.9
     Programming Language :: Python :: 3 :: Only
     Programming Language :: Python :: Implementation :: CPython
 
diff -pruN 2.4.0-3/tox.ini 2.5.1-2/tox.ini
--- 2.4.0-3/tox.ini	2021-07-06 12:24:33.000000000 +0000
+++ 2.5.1-2/tox.ini	2022-02-07 07:47:19.000000000 +0000
@@ -1,5 +1,5 @@
 [tox]
-envlist = pypy,py38,pep8
+envlist = pypy,py39,pep8
 ignore_basepython_conflict = true
 minversion = 3.1.0
 skipsdist = True
diff -pruN 2.4.0-3/.zuul.yaml 2.5.1-2/.zuul.yaml
--- 2.4.0-3/.zuul.yaml	2021-07-06 12:24:33.000000000 +0000
+++ 2.5.1-2/.zuul.yaml	2022-02-07 07:47:19.000000000 +0000
@@ -21,7 +21,7 @@
     templates:
       - openstack-cover-jobs
       - openstack-lower-constraints-jobs
-      - openstack-python3-xena-jobs
+      - openstack-python3-yoga-jobs
       - check-requirements
       - openstackclient-plugin-jobs
       - publish-openstack-docs-pti
