diff -pruN 2.2.0-3/debian/changelog 2.3.0-0ubuntu1/debian/changelog
--- 2.2.0-3/debian/changelog	2020-11-20 22:54:38.000000000 +0000
+++ 2.3.0-0ubuntu1/debian/changelog	2021-11-16 21:05:46.000000000 +0000
@@ -1,39 +1,27 @@
-python-debtcollector (2.2.0-3) unstable; urgency=medium
+python-debtcollector (2.3.0-0ubuntu1) jammy; urgency=medium
 
-  * Added Restrictions: superficial to d/tests/control (Closes: #974524).
+  * New upstream release for OpenStack Yoga.
+  * d/p/sphinx_reproducible_build.patch: Rebased.
+  * d/control: Align (Build-)Depends with upstream.
+  * d/rules: Switch to pybuild and debhelper-compat 13.
+  * d/rules: Run tests directly after override_dh_auto_install. This is
+    necessary after upstream switch from pbr to importlib_metadata.
 
- -- Thomas Goirand <zigo@debian.org>  Fri, 20 Nov 2020 23:54:38 +0100
+ -- Corey Bryant <corey.bryant@canonical.com>  Tue, 16 Nov 2021 16:05:46 -0500
 
-python-debtcollector (2.2.0-2) unstable; urgency=medium
+python-debtcollector (2.2.0-0ubuntu1) groovy; urgency=medium
 
-  * Uploading to unstable.
-  * Add a debian/salsa-ci.yml and fixed watch file.
+  * New upstream release for OpenStack Victoria.
 
- -- Thomas Goirand <zigo@debian.org>  Wed, 14 Oct 2020 10:50:11 +0200
+ -- Chris MacNaughton <chris.macnaughton@canonical.com>  Thu, 03 Sep 2020 06:58:19 +0000
 
-python-debtcollector (2.2.0-1) experimental; urgency=medium
+python-debtcollector (2.0.0-0ubuntu1) focal; urgency=medium
 
-  * New upstream release.
+  * d/gbp.conf: Update gbp configuration file.
+  * d/control: Update Vcs-* links and maintainers.
+  * New upstream release for OpenStack Ussuri.
 
- -- Thomas Goirand <zigo@debian.org>  Mon, 07 Sep 2020 14:16:53 +0200
-
-python-debtcollector (2.0.1-2) unstable; urgency=medium
-
-  * Uploading to unstable.
-
- -- Thomas Goirand <zigo@debian.org>  Fri, 08 May 2020 09:58:41 +0200
-
-python-debtcollector (2.0.1-1) experimental; urgency=medium
-
-  * New upstream release.
-
- -- Thomas Goirand <zigo@debian.org>  Tue, 07 Apr 2020 16:39:35 +0200
-
-python-debtcollector (2.0.0-1) experimental; urgency=medium
-
-  * New upstream release.
-
- -- Thomas Goirand <zigo@debian.org>  Tue, 31 Mar 2020 15:12:54 +0200
+ -- Corey Bryant <corey.bryant@canonical.com>  Thu, 12 Mar 2020 16:26:10 -0400
 
 python-debtcollector (1.22.0-3) unstable; urgency=medium
 
diff -pruN 2.2.0-3/debian/control 2.3.0-0ubuntu1/debian/control
--- 2.2.0-3/debian/control	2020-11-20 22:54:38.000000000 +0000
+++ 2.3.0-0ubuntu1/debian/control	2021-11-16 21:05:46.000000000 +0000
@@ -1,11 +1,12 @@
 Source: python-debtcollector
 Section: python
 Priority: optional
-Maintainer: Debian OpenStack <team+openstack@tracker.debian.org>
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: Debian OpenStack <team+openstack@tracker.debian.org>
 Uploaders:
  Thomas Goirand <zigo@debian.org>,
 Build-Depends:
- debhelper-compat (= 9),
+ debhelper-compat (= 13),
  dh-python,
  openstack-pkg-tools,
  python3-all,
@@ -15,16 +16,16 @@ Build-Depends:
 Build-Depends-Indep:
  python3-coverage,
  python3-fixtures,
- python3-hacking,
+ python3-importlib-metadata,
  python3-openstackdocstheme,
  python3-six,
- python3-stestr <!nocheck>,
- python3-testtools <!nocheck>,
+ python3-stestr,
+ python3-testtools,
  python3-wrapt,
  subunit,
 Standards-Version: 4.4.1
-Vcs-Browser: https://salsa.debian.org/openstack-team/libs/python-debtcollector
-Vcs-Git: https://salsa.debian.org/openstack-team/libs/python-debtcollector.git
+Vcs-Browser: https://git.launchpad.net/~ubuntu-server-dev/ubuntu/+source/python-debtcollector
+Vcs-Git: https://git.launchpad.net/~ubuntu-server-dev/ubuntu/+source/python-debtcollector
 Homepage: http://www.openstack.org/
 
 Package: python-debtcollector-doc
@@ -43,9 +44,9 @@ Description: collection of patterns to c
 Package: python3-debtcollector
 Architecture: all
 Depends:
- python3-pbr,
- python3-six,
- python3-wrapt,
+ python3-pbr (>= 2.0.0),
+ python3-six (>= 1.10.0),
+ python3-wrapt (>= 1.7.0),
  ${misc:Depends},
  ${python3:Depends},
 Suggests:
diff -pruN 2.2.0-3/debian/gbp.conf 2.3.0-0ubuntu1/debian/gbp.conf
--- 2.2.0-3/debian/gbp.conf	1970-01-01 00:00:00.000000000 +0000
+++ 2.3.0-0ubuntu1/debian/gbp.conf	2021-11-16 21:05:46.000000000 +0000
@@ -0,0 +1,7 @@
+[DEFAULT]
+debian-branch = master
+upstream-tag = %(version)s
+pristine-tar = True
+
+[buildpackage]
+export-dir = ../build-area
diff -pruN 2.2.0-3/debian/patches/sphinx_reproducible_build.patch 2.3.0-0ubuntu1/debian/patches/sphinx_reproducible_build.patch
--- 2.2.0-3/debian/patches/sphinx_reproducible_build.patch	2020-11-20 22:54:38.000000000 +0000
+++ 2.3.0-0ubuntu1/debian/patches/sphinx_reproducible_build.patch	2021-11-16 21:05:46.000000000 +0000
@@ -5,16 +5,15 @@ Last-Update: 2018-08-22
 
 --- a/doc/source/conf.py
 +++ b/doc/source/conf.py
-@@ -40,7 +40,11 @@
- 
+@@ -49,6 +49,11 @@
  # General information about the project.
- project = u'debtcollector'
--copyright = u'%s, OpenStack Foundation' % datetime.date.today().year
+ project = 'debtcollector'
+ copyright = '%s, OpenStack Foundation' % datetime.date.today().year
 +if 'SOURCE_DATE_EPOCH' in os.environ:
 +    this_year = datetime.datetime.utcfromtimestamp(float(os.environ.get('SOURCE_DATE_EPOCH'))).year
 +else:
 +    this_year = datetime.date.today().year
-+copyright = u'%s, OpenStack Foundation' % this_year
++copyright = '%s, OpenStack Foundation' % this_year
  
  # If true, '()' will be appended to :func: etc. cross-reference text.
  add_function_parentheses = True
diff -pruN 2.2.0-3/debian/rules 2.3.0-0ubuntu1/debian/rules
--- 2.2.0-3/debian/rules	2020-11-20 22:54:38.000000000 +0000
+++ 2.3.0-0ubuntu1/debian/rules	2021-11-16 21:05:46.000000000 +0000
@@ -1,10 +1,11 @@
 #!/usr/bin/make -f
 
+export PYBUILD_NAME=debcollector
 UPSTREAM_GIT := https://github.com/openstack/debtcollector.git
 include /usr/share/openstack-pkg-tools/pkgos.make
 
 %:
-	dh $@ --buildsystem=python_distutils --with python3,sphinxdoc
+	dh $@ --buildsystem=pybuild --with python3,sphinxdoc
 
 override_dh_auto_clean:
 	rm -rf build
@@ -14,8 +15,6 @@ override_dh_auto_build:
 
 override_dh_auto_install:
 	pkgos-dh_auto_install --no-py2
-
-override_dh_auto_test:
 ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
 	pkgos-dh_auto_test --no-py2
 endif
@@ -23,5 +22,5 @@ endif
 override_dh_sphinxdoc:
 ifeq (,$(findstring nodoc, $(DEB_BUILD_OPTIONS)))
 	PYTHONPATH=. python3 -m sphinx -b html doc/source debian/python-debtcollector-doc/usr/share/doc/python-debtcollector-doc/html
-	dh_sphinxdoc -O--buildsystem=python_distutils
+	dh_sphinxdoc -O--buildsystem=pybuild
 endif
diff -pruN 2.2.0-3/debian/salsa-ci.yml 2.3.0-0ubuntu1/debian/salsa-ci.yml
--- 2.2.0-3/debian/salsa-ci.yml	2020-11-20 22:54:38.000000000 +0000
+++ 2.3.0-0ubuntu1/debian/salsa-ci.yml	1970-01-01 00:00:00.000000000 +0000
@@ -1,3 +0,0 @@
-include:
-  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/salsa-ci.yml
-  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/pipeline-jobs.yml
diff -pruN 2.2.0-3/debian/tests/control 2.3.0-0ubuntu1/debian/tests/control
--- 2.2.0-3/debian/tests/control	2020-11-20 22:54:38.000000000 +0000
+++ 2.3.0-0ubuntu1/debian/tests/control	2021-11-16 21:05:46.000000000 +0000
@@ -1,4 +1,3 @@
-Restrictions: superficial
 Depends:
  python3-debtcollector,
 Test-Command: cd "$AUTOPKGTEST_TMP" ; python3 -c "import debtcollector; print(debtcollector.__version__)"
diff -pruN 2.2.0-3/debian/watch 2.3.0-0ubuntu1/debian/watch
--- 2.2.0-3/debian/watch	2020-11-20 22:54:38.000000000 +0000
+++ 2.3.0-0ubuntu1/debian/watch	2021-11-16 21:05:46.000000000 +0000
@@ -1,3 +1,3 @@
 version=3
-opts="uversionmangle=s/\.0rc/~rc/;s/\.0b1/~b1/;s/\.0b2/~b2/;s/\.0b3/~b3/" \
-https://github.com/openstack/debtcollector/tags .*/(\d[brc\d\.]+)\.tar\.gz
+opts="uversionmangle=s/\.(b|rc)/~$1/" \
+https://github.com/openstack/debtcollector/tags .*/(\d[\d\.]+)\.tar\.gz
diff -pruN 2.2.0-3/debtcollector/__init__.py 2.3.0-0ubuntu1/debtcollector/__init__.py
--- 2.2.0-3/debtcollector/__init__.py	2020-06-10 15:05:45.000000000 +0000
+++ 2.3.0-0ubuntu1/debtcollector/__init__.py	2021-07-15 11:52:57.000000000 +0000
@@ -12,12 +12,16 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-import pbr.version
+try:
+    # For Python 3.8 and later
+    import importlib.metadata as importlib_metadata
+except ImportError:
+    # For everyone else
+    import importlib_metadata
 
 from debtcollector import _utils
 
-__version__ = pbr.version.VersionInfo(
-    'debtcollector').version_string()
+__version__ = importlib_metadata.version('debtcollector')
 
 
 def deprecate(prefix, postfix=None, message=None,
diff -pruN 2.2.0-3/debtcollector/tests/test_deprecation.py 2.3.0-0ubuntu1/debtcollector/tests/test_deprecation.py
--- 2.2.0-3/debtcollector/tests/test_deprecation.py	2020-06-10 15:05:45.000000000 +0000
+++ 2.3.0-0ubuntu1/debtcollector/tests/test_deprecation.py	2021-07-15 11:52:57.000000000 +0000
@@ -357,8 +357,8 @@ class MovedMethodTest(test_base.TestCase
         self.assertEqual(0, len(capture))
 
     def test_keeps_argspec(self):
-        self.assertEqual(inspect.getargspec(KittyKat.supermeow),
-                         inspect.getargspec(KittyKat.meow))
+        self.assertEqual(inspect.getfullargspec(KittyKat.supermeow),
+                         inspect.getfullargspec(KittyKat.meow))
 
 
 class RenamedKwargTest(test_base.TestCase):
@@ -416,8 +416,8 @@ class RenamedKwargTest(test_base.TestCas
 
     def test_argspec(self):
         # The decorated function keeps its argspec.
-        self.assertEqual(inspect.getargspec(blip_blop_unwrapped),
-                         inspect.getargspec(blip_blop))
+        self.assertEqual(inspect.getfullargspec(blip_blop_unwrapped),
+                         inspect.getfullargspec(blip_blop))
 
 
 class UpdatedArgsTest(test_base.TestCase):
@@ -438,8 +438,8 @@ class UpdatedArgsTest(test_base.TestCase
         self.assertEqual(0, len(capture))
 
     def test_argspec_preserved(self):
-        self.assertEqual(inspect.getargspec(blip_blop_blip_unwrapped),
-                         inspect.getargspec(blip_blop_blip))
+        self.assertEqual(inspect.getfullargspec(blip_blop_blip_unwrapped),
+                         inspect.getfullargspec(blip_blop_blip))
 
 
 class RemovalTests(test_base.TestCase):
@@ -452,8 +452,8 @@ class RemovalTests(test_base.TestCase):
     def test_function_keeps_argspec(self):
         # The decorated function keeps its argspec.
         self.assertEqual(
-            inspect.getargspec(crimson_lightning_unwrapped),
-            inspect.getargspec(crimson_lightning))
+            inspect.getfullargspec(crimson_lightning_unwrapped),
+            inspect.getfullargspec(crimson_lightning))
 
     def test_deprecated_kwarg(self):
 
@@ -481,8 +481,8 @@ class RemovalTests(test_base.TestCase):
         def f_unwrapped(b=2):
             return b
 
-        self.assertEqual(inspect.getargspec(f_unwrapped),
-                         inspect.getargspec(f))
+        self.assertEqual(inspect.getfullargspec(f_unwrapped),
+                         inspect.getfullargspec(f))
 
     def test_pending_deprecated_kwarg(self):
 
diff -pruN 2.2.0-3/doc/source/conf.py 2.3.0-0ubuntu1/doc/source/conf.py
--- 2.2.0-3/doc/source/conf.py	2020-06-10 15:05:45.000000000 +0000
+++ 2.3.0-0ubuntu1/doc/source/conf.py	2021-07-15 11:52:57.000000000 +0000
@@ -1,4 +1,6 @@
 # -*- coding: utf-8 -*-
+# Copyright (C) 2020 Red Hat, Inc.
+#
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
@@ -45,8 +47,8 @@ source_suffix = '.rst'
 master_doc = 'index'
 
 # General information about the project.
-project = u'debtcollector'
-copyright = u'%s, OpenStack Foundation' % datetime.date.today().year
+project = 'debtcollector'
+copyright = '%s, OpenStack Foundation' % datetime.date.today().year
 
 # If true, '()' will be appended to :func: etc. cross-reference text.
 add_function_parentheses = True
@@ -77,13 +79,10 @@ htmlhelp_basename = '%sdoc' % project
 latex_documents = [
     ('index',
      '%s.tex' % project,
-     u'%s Documentation' % project,
-     u'OpenStack Foundation', 'manual'),
+     '%s Documentation' % project,
+     'OpenStack Foundation', 'manual'),
 ]
 
-# Example configuration for intersphinx: refer to the Python standard library.
-#intersphinx_mapping = {'http://docs.python.org/': None}
-
 # -- Options for autoddoc ----------------------------------------------------
 
 # Keep source order
diff -pruN 2.2.0-3/.gitignore 2.3.0-0ubuntu1/.gitignore
--- 2.2.0-3/.gitignore	2020-06-10 15:05:45.000000000 +0000
+++ 2.3.0-0ubuntu1/.gitignore	2021-07-15 11:52:57.000000000 +0000
@@ -57,3 +57,5 @@ ChangeLog
 
 # reno build
 releasenotes/build
+RELEASENOTES.rst
+releasenotes/notes/reno.cache
diff -pruN 2.2.0-3/lower-constraints.txt 2.3.0-0ubuntu1/lower-constraints.txt
--- 2.2.0-3/lower-constraints.txt	2020-06-10 15:05:45.000000000 +0000
+++ 2.3.0-0ubuntu1/lower-constraints.txt	1970-01-01 00:00:00.000000000 +0000
@@ -1,48 +0,0 @@
-alabaster==0.7.10
-Babel==2.3.4
-chardet==3.0.4
-cliff==3.2.0
-cmd2==0.8.9
-coverage==4.0
-doc8==0.8.1
-docutils==0.11
-dulwich==0.15.0
-entrypoints==0.3
-extras==1.0.0
-fixtures==3.0.0
-future==0.18.2
-imagesize==0.7.1
-Jinja2==2.10
-linecache2==1.0.0
-MarkupSafe==1.0
-openstackdocstheme==2.2.1
-packaging==20.4
-pbr==2.0.0
-prettytable==0.7.2
-Pygments==2.2.0
-pyparsing==2.4.7
-pyperclip==1.8.0
-python-mimeparse==1.6.0
-python-subunit==1.0.0
-pytz==2013.6
-PyYAML==3.12
-reno==3.1.0
-requests==2.14.2
-restructuredtext-lint==1.1.1
-six==1.10.0
-snowballstemmer==1.2.1
-Sphinx==2.0.0
-sphinxcontrib-applehelp==1.0.2
-sphinxcontrib-devhelp==1.0.2
-sphinxcontrib-htmlhelp==1.0.3
-sphinxcontrib-jsmath==1.0.1
-sphinxcontrib-qthelp==1.0.3
-sphinxcontrib-serializinghtml==1.1.4
-stestr==2.0.0
-stevedore==1.20.0
-testtools==2.2.0
-traceback2==1.4.0
-unittest2==1.1.0
-voluptuous==0.11.7
-wcwidth==0.2.4
-wrapt==1.7.0
diff -pruN 2.2.0-3/.pre-commit-config.yaml 2.3.0-0ubuntu1/.pre-commit-config.yaml
--- 2.2.0-3/.pre-commit-config.yaml	1970-01-01 00:00:00.000000000 +0000
+++ 2.3.0-0ubuntu1/.pre-commit-config.yaml	2021-07-15 11:52:57.000000000 +0000
@@ -0,0 +1,39 @@
+# We from the Oslo project decided to pin repos based on the
+# commit hash instead of the version tag to prevend arbitrary
+# code from running in developer's machines.  To update to a
+# newer version, run `pre-commit autoupdate` and then replace
+# the newer versions with their commit hash.
+
+default_language_version:
+  python: python3
+
+repos:
+  - repo: https://github.com/pre-commit/pre-commit-hooks
+    rev: 9136088a246768144165fcc3ecc3d31bb686920a # v3.3.0
+    hooks:
+      - id: trailing-whitespace
+      # Replaces or checks mixed line ending
+      - id: mixed-line-ending
+        args: ['--fix', 'lf']
+        exclude: '.*\.(svg)$'
+      # Forbid files which have a UTF-8 byte-order marker
+      - id: check-byte-order-marker
+      # Checks that non-binary executables have a proper shebang
+      - id: check-executables-have-shebangs
+      # Check for files that contain merge conflict strings.
+      - id: check-merge-conflict
+      # Check for debugger imports and py37+ breakpoint()
+      # calls in python source
+      - id: debug-statements
+      - id: check-yaml
+        files: .*\.(yaml|yml)$
+  - repo: local
+    hooks:
+      - id: flake8
+        name: flake8
+        additional_dependencies:
+          - hacking>=3.0.1,<3.1.0
+        language: python
+        entry: flake8
+        files: '^.*\.py$'
+        exclude: '^(doc|releasenotes|tools)/.*$'
diff -pruN 2.2.0-3/releasenotes/source/conf.py 2.3.0-0ubuntu1/releasenotes/source/conf.py
--- 2.2.0-3/releasenotes/source/conf.py	2020-06-10 15:05:45.000000000 +0000
+++ 2.3.0-0ubuntu1/releasenotes/source/conf.py	2021-07-15 11:52:57.000000000 +0000
@@ -58,8 +58,8 @@ source_suffix = '.rst'
 master_doc = 'index'
 
 # General information about the project.
-project = u'debtcollector Release Notes'
-copyright = u'2016, debtcollector Developers'
+project = 'debtcollector Release Notes'
+copyright = '2016, debtcollector Developers'
 
 # Release notes do not need a version number in the title, they
 # cover multiple releases.
@@ -206,8 +206,8 @@ latex_elements = {
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
     ('index', 'debtcollectorReleaseNotes.tex',
-     u'debtcollector Release Notes Documentation',
-     u'debtcollector Developers', 'manual'),
+     'debtcollector Release Notes Documentation',
+     'debtcollector Developers', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
@@ -237,8 +237,8 @@ latex_documents = [
 # (source start file, name, description, authors, manual section).
 man_pages = [
     ('index', 'debtcollectorReleaseNotes',
-     u'debtcollector Release Notes Documentation',
-     [u'debtcollector Developers'], 1)
+     'debtcollector Release Notes Documentation',
+     ['debtcollector Developers'], 1)
 ]
 
 # If true, show URL addresses after external links.
@@ -252,8 +252,8 @@ man_pages = [
 #  dir menu entry, description, category)
 texinfo_documents = [
     ('index', 'debtcollectorReleaseNotes',
-     u'debtcollector Release Notes Documentation',
-     u'debtcollector Developers', 'debtcollectorReleaseNotes',
+     'debtcollector Release Notes Documentation',
+     'debtcollector Developers', 'debtcollectorReleaseNotes',
      'One line description of project.',
      'Miscellaneous'),
 ]
diff -pruN 2.2.0-3/releasenotes/source/index.rst 2.3.0-0ubuntu1/releasenotes/source/index.rst
--- 2.2.0-3/releasenotes/source/index.rst	2020-06-10 15:05:45.000000000 +0000
+++ 2.3.0-0ubuntu1/releasenotes/source/index.rst	2021-07-15 11:52:57.000000000 +0000
@@ -6,6 +6,7 @@
    :maxdepth: 1
 
    unreleased
+   victoria
    ussuri
    train
    stein
diff -pruN 2.2.0-3/releasenotes/source/victoria.rst 2.3.0-0ubuntu1/releasenotes/source/victoria.rst
--- 2.2.0-3/releasenotes/source/victoria.rst	1970-01-01 00:00:00.000000000 +0000
+++ 2.3.0-0ubuntu1/releasenotes/source/victoria.rst	2021-07-15 11:52:57.000000000 +0000
@@ -0,0 +1,6 @@
+=============================
+Victoria Series Release Notes
+=============================
+
+.. release-notes::
+   :branch: stable/victoria
diff -pruN 2.2.0-3/requirements.txt 2.3.0-0ubuntu1/requirements.txt
--- 2.2.0-3/requirements.txt	2020-06-10 15:05:45.000000000 +0000
+++ 2.3.0-0ubuntu1/requirements.txt	2021-07-15 11:52:57.000000000 +0000
@@ -3,5 +3,6 @@
 # process, which may cause wedges in the gate later.
 
 pbr!=2.1.0,>=2.0.0 # Apache-2.0
+importlib_metadata>=1.7.0;python_version<'3.8' # Apache-2.0
 six>=1.10.0 # MIT
 wrapt>=1.7.0 # BSD License
diff -pruN 2.2.0-3/setup.cfg 2.3.0-0ubuntu1/setup.cfg
--- 2.2.0-3/setup.cfg	2020-06-10 15:05:45.000000000 +0000
+++ 2.3.0-0ubuntu1/setup.cfg	2021-07-15 11:52:57.000000000 +0000
@@ -1,12 +1,12 @@
 [metadata]
 name = debtcollector
 summary = A collection of Python deprecation patterns and strategies that help you collect your technical debt in a non-destructive manner.
-description-file =
+description_file =
     README.rst
 author = OpenStack
-author-email = openstack-discuss@lists.openstack.org
-home-page =  https://docs.openstack.org/debtcollector/latest
-python-requires = >=3.6
+author_email = openstack-discuss@lists.openstack.org
+home_page =  https://docs.openstack.org/debtcollector/latest
+python_requires = >=3.6
 classifier =
     Environment :: OpenStack
     Intended Audience :: Information Technology
diff -pruN 2.2.0-3/test-requirements.txt 2.3.0-0ubuntu1/test-requirements.txt
--- 2.2.0-3/test-requirements.txt	2020-06-10 15:05:45.000000000 +0000
+++ 2.3.0-0ubuntu1/test-requirements.txt	2021-07-15 11:52:57.000000000 +0000
@@ -13,3 +13,5 @@ testtools>=2.2.0 # MIT
 fixtures>=3.0.0 # Apache-2.0/BSD
 doc8>=0.8.1 # Apache-2.0
 reno>=3.1.0 # Apache-2.0
+
+pre-commit>=2.6.0 # MIT
diff -pruN 2.2.0-3/tox.ini 2.3.0-0ubuntu1/tox.ini
--- 2.2.0-3/tox.ini	2020-06-10 15:05:45.000000000 +0000
+++ 2.3.0-0ubuntu1/tox.ini	2021-07-15 11:52:57.000000000 +0000
@@ -1,6 +1,6 @@
 [tox]
 minversion = 3.2.0
-envlist = py37,pep8
+envlist = py3,pep8
 ignore_basepython_conflict = True
 
 [testenv]
@@ -8,7 +8,7 @@ basepython = python3
 setenv =
     VIRTUAL_ENV={envdir}
 deps =
- -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+ -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
  -r{toxinidir}/test-requirements.txt
  -r{toxinidir}/requirements.txt
 commands =
@@ -19,7 +19,7 @@ commands = oslo_debug_helper {posargs}
 
 [testenv:pep8]
 commands =
-    flake8
+    pre-commit run -a
     sphinx-build -b doctest doc/source doc/build
     doc8 --ignore-path "doc/source/history.rst" doc/source
 
@@ -47,8 +47,3 @@ exclude=.venv,.git,.tox,dist,doc,*lib/py
 [testenv:releasenotes]
 commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
 
-[testenv:lower-constraints]
-deps =
-  -c{toxinidir}/lower-constraints.txt
-  -r{toxinidir}/test-requirements.txt
-  -r{toxinidir}/requirements.txt
diff -pruN 2.2.0-3/.zuul.yaml 2.3.0-0ubuntu1/.zuul.yaml
--- 2.2.0-3/.zuul.yaml	2020-06-10 15:05:45.000000000 +0000
+++ 2.3.0-0ubuntu1/.zuul.yaml	2021-07-15 11:52:57.000000000 +0000
@@ -2,8 +2,7 @@
     templates:
       - check-requirements
       - lib-forward-testing-python3
-      - openstack-lower-constraints-jobs
-      - openstack-python3-victoria-jobs
+      - openstack-python3-wallaby-jobs
       - periodic-stable-jobs
       - publish-openstack-docs-pti
       - release-notes-jobs-python3
