diff -pruN 2.6.1-3/.gitignore 2.7.0+git2025070815.d254dc4-0ubuntu1/.gitignore
--- 2.6.1-3/.gitignore	2025-02-15 06:20:11.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/.gitignore	1970-01-01 00:00:00.000000000 +0000
@@ -1,63 +0,0 @@
-# Add patterns in here to exclude files created by tools integrated with this
-# repository, such as test frameworks from the project's recommended workflow,
-# rendered documentation and package builds.
-#
-# Don't add patterns to exclude files created by preferred personal tools
-# (editors, IDEs, your operating system itself even). These should instead be
-# maintained outside the repository, for example in a ~/.gitignore file added
-# with:
-#
-# git config --global core.excludesfile '~/.gitignore'
-
-# Bytecompiled Python
-*.py[cod]
-
-# C extensions
-*.so
-
-# Packages
-*.egg
-*.egg-info
-dist
-build
-eggs
-parts
-bin
-var
-sdist
-develop-eggs
-.installed.cfg
-lib
-lib64
-
-# Installer logs
-pip-log.txt
-
-# Unit test / coverage reports
-.coverage
-.tox
-nosetests.xml
-.testrepository
-.stestr
-
-# Translations
-*.mo
-
-# Complexity
-output/*.html
-output/*/index.html
-
-# Sphinx
-doc/build
-doc/source/reference/api/
-.doctrees
-
-# pbr generates these
-AUTHORS
-ChangeLog
-
-# reno generate these
-RELEASENOTES.rst
-releasenotes/build
-releasenotes/notes/reno.cache
-
diff -pruN 2.6.1-3/.gitreview 2.7.0+git2025070815.d254dc4-0ubuntu1/.gitreview
--- 2.6.1-3/.gitreview	2025-02-15 06:20:11.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/.gitreview	1970-01-01 00:00:00.000000000 +0000
@@ -1,4 +0,0 @@
-[gerrit]
-host=review.opendev.org
-port=29418
-project=openstack/oslo.limit.git
diff -pruN 2.6.1-3/AUTHORS 2.7.0+git2025070815.d254dc4-0ubuntu1/AUTHORS
--- 2.6.1-3/AUTHORS	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/AUTHORS	2025-07-08 22:30:10.000000000 +0000
@@ -0,0 +1,39 @@
+Andreas Jaeger <aj@suse.com>
+Ben Nemec <bnemec@redhat.com>
+Colleen Murphy <colleen.murphy@suse.com>
+Colleen Murphy <colleen.murphy@suse.de>
+Corey Bryant <corey.bryant@canonical.com>
+Dan Smith <dansmith@redhat.com>
+Daniel Bengtsson <dbengt@redhat.com>
+Doug Hellmann <doug@doughellmann.com>
+Ghanshyam <gmann@ghanshyammann.com>
+Ghanshyam Mann <gmann@ghanshyammann.com>
+Hervé Beraud <hberaud@redhat.com>
+John Garbutt <john.garbutt@stackhpc.com>
+John Garbutt <john@johngarbutt.com>
+Lance Bragstad <lbragstad@gmail.com>
+Moisés Guimarães de Medeiros <moguimar@redhat.com>
+OpenStack Release Bot <infra-root@openstack.org>
+Piotr Korthals <pkorthals@task.gda.pl>
+Sean McGinnis <sean.mcginnis@gmail.com>
+Takashi Kajinami <kajinamit@oss.nttdata.com>
+Takashi Kajinami <tkajinam@redhat.com>
+Victor Coutellier <victor.coutellier@gmail.com>
+Vieri <15050873171@163.com>
+Vishakha Agarwal <agarwalvishakha18@gmail.com>
+ZhijunWei <wzj334965317@outlook.com>
+ZhongShengping <chdzsp@163.com>
+caoyuan <cao.yuan@99cloud.net>
+gujin <gu.jin@99cloud.net>
+huang.zhiping <huang.zhiping@99cloud.net>
+jacky06 <zhang.min@99cloud.net>
+likui <likui@yovole.com>
+maaoyu <maaoyu@inspur.com>
+melanie witt <melwittt@gmail.com>
+melissaml <ma.lei@99cloud.net>
+wangxiyuan <wangxiyuan@huawei.com>
+wangzihao <wangzihao@yovole.com>
+wu.shiming <wushiming@yovole.com>
+xuanyandong <xuanyandong@inspur.com>
+zhangzs <zhangzhaoshan@inspur.com>
+zhoulinhui <df.some@foxmail.com>
diff -pruN 2.6.1-3/ChangeLog 2.7.0+git2025070815.d254dc4-0ubuntu1/ChangeLog
--- 2.6.1-3/ChangeLog	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/ChangeLog	2025-07-08 22:30:10.000000000 +0000
@@ -0,0 +1,230 @@
+CHANGES
+=======
+
+* add pyproject.toml to support pip 23.1
+
+2.7.0
+-----
+
+* Fix ignored KSA adapter options
+* tox: Remove basepython
+* Added ability to select identity interface
+* Update master for stable/2025.1
+* Call Keystone API once to get (registered\_)limits
+
+2.6.1
+-----
+
+* Skip installation to speed up pep8
+* reno: Update master for unmaintained/2023.1
+
+2.6.0
+-----
+
+* Add note about requirements lower bounds
+* Bump min openstacksdk to use name filter for service
+* Run pyupgrade to clean up Python 2 syntaxes
+* pre-commit: Bump versions
+* Declare Python 3.12 support
+* Update master for stable/2024.2
+* Query endpoint id from keystone
+
+2.5.0
+-----
+
+* reno: Update master for unmaintained/zed
+* Remove old excludes
+* Update master for stable/2024.1
+* reno: Update master for unmaintained/xena
+* reno: Update master for unmaintained/wallaby
+* reno: Update master for unmaintained/victoria
+
+2.4.0
+-----
+
+* reno: Update master for unmaintained/yoga
+* Bump hacking
+* Update python classifier in setup.cfg
+
+2.3.0
+-----
+
+* Add openstack-cover-jobs to .zuul.yaml
+* Fix up tox -e cover to use coverage
+* Ensure endpoint\_id is set
+* Update master for stable/2023.2
+
+2.2.0
+-----
+
+* Bump bandit
+* Revert "Moves supported python runtimes from version 3.8 to 3.10"
+* Moves supported python runtimes from version 3.8 to 3.10
+* Update master for stable/2023.1
+
+2.1.0
+-----
+
+* Add Python3 antelope unit tests
+* Update master for stable/zed
+
+2.0.1
+-----
+
+* Fix formatting of release list
+
+2.0.0
+-----
+
+* Drop python3.6/3.7 support in testing runtime
+
+1.6.0
+-----
+
+* Move Enforcer caching closer to limit retrieval
+* Add Python3 zed unit tests
+* Update master for stable/yoga
+* Add documentation for config options
+* oslo-config-generator: Fix ValueError
+
+1.5.0
+-----
+
+* Add interfaces for getting limits without enforcing
+* Allow project\_id=None for enforce/calculate
+* Make calculate\_usage() work if limits are missing
+* Add caching of limits in Enforcer
+* Add auth plugin options to options list
+* Add Python3 yoga unit tests
+* Update master for stable/xena
+* setup.cfg: Replace dashes with underscores
+* Changed minversion in tox to 3.18.0
+
+1.4.0
+-----
+
+* Add a test fixture
+* Add Enforcer.calculate\_usage()
+* Upgrade the pre-commit-hooks version
+* Add Python3 xena unit tests
+* Update master for stable/wallaby
+* Fix requirements issues
+* Use TOX\_CONSTRAINTS\_FILE
+* remove unicode from code
+* add py38 matedata
+
+1.3.0
+-----
+
+* Use py3 as the default runtime for tox
+* Fix hacking min version to 3.0.1
+* Remove install unnecessary packages
+* Add Python3 wallaby unit tests
+* Update master for stable/victoria
+* Adding pre-commit
+
+1.2.1
+-----
+
+* Bump bandit version
+
+1.2.0
+-----
+
+
+1.1.0
+-----
+
+* Add debug tox environment
+* Add user guide about how to add a new service
+* Switch to newer openstackdocstheme and reno versions
+* Remove the unused coding style modules
+* Remove translation sections from setup.cfg
+* Align contributing doc with oslo's policy
+* Add release notes links to doc index
+* Add Python3 victoria unit tests
+* Update master for stable/ussuri
+
+1.0.2
+-----
+
+* Update to hacking 3.0
+* Update hacking for Python3
+* Use unittest.mock instead of third party mock
+* Update the minversion parameter
+* ignore reno generated artifacts
+* drop use of six
+
+1.0.1
+-----
+
+* oslo.limit mistakenly released as 1.0.0 (release note)
+* remove outdated header
+
+1.0.0
+-----
+
+* [ussuri][goal] Drop python 2.7 support and testing
+* Trivial cleanup for tox
+
+0.3.0
+-----
+
+* Add devstack job to .zuul.conf
+* Add flat enforcer
+* Fetch unified limits from keystone
+* Pick between Flat and StrictTwoLevel enforcement
+* Add ksa connection logic
+* tox: Keeping going with docs
+
+0.2.0
+-----
+
+* Update master for stable/train
+
+0.1.1
+-----
+
+* Add Python 3 Train unit tests
+
+0.1.0
+-----
+
+* Rename filter\_resource resource\_filters
+* Add skeleton enforce() method to Enforcer
+* Remove \_\_enter\_\_ and \_\_exit\_\_ methods from Enforcer
+* Remove verification functionality
+* Remove ProjectClaim object from oslo.limit
+* Sync Sphinx requirement
+* Replace git.openstack.org URLs with opendev.org URLs
+* OpenDev Migration Patch
+* Update the min version of tox
+* Drop py35 jobs
+* Add py36 and py37 tox envs
+* Add python3.7 job on Stein+
+* add python 3.7 unit test job
+* Update hacking version
+* fix the url in doc
+* Use template for lower-constraints
+* Update mailinglist from dev to discuss
+* Clean up .gitignore references to personal tools
+* Fix doc grammar/spelling nits
+* Use openstackdocstheme for documentation
+* Add a conceptual overview to docs
+* Render API reference documentation
+* Ignore documentation builds
+* Add opts file
+* add lib-forward-testing-python3 test job
+* add python 3.6 unit test job
+* import zuul job settings from project-config
+* fix doc gate
+* ADD i18n file
+* Fix CI
+* Add .zuul.yaml
+* Implement basic Enforcer context manager
+* Implement ProjectClaim objects
+* Convert tox.ini to using stestr
+* Update url in HACKING.rst
+* fix tox python3 overrides
+* Init repo
+* Added .gitreview
diff -pruN 2.6.1-3/PKG-INFO 2.7.0+git2025070815.d254dc4-0ubuntu1/PKG-INFO
--- 2.6.1-3/PKG-INFO	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/PKG-INFO	2025-07-08 22:30:10.583525000 +0000
@@ -0,0 +1,67 @@
+Metadata-Version: 2.2
+Name: oslo.limit
+Version: 2.7.1.dev2
+Summary: Limit enforcement library to assist with quota calculation.
+Home-page: https://docs.openstack.org/oslo.limit/latest/
+Author: OpenStack
+Author-email: openstack-discuss@lists.openstack.org
+Classifier: Environment :: OpenStack
+Classifier: Intended Audience :: Information Technology
+Classifier: Intended Audience :: System Administrators
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Operating System :: POSIX :: Linux
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3 :: Only
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Requires-Python: >=3.8
+License-File: LICENSE
+Requires-Dist: keystoneauth1>=3.9.0
+Requires-Dist: oslo.config>=5.2.0
+Requires-Dist: oslo.i18n>=3.15.3
+Requires-Dist: oslo.log>=3.44.0
+Requires-Dist: openstacksdk>=0.47.0
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: home-page
+Dynamic: requires-dist
+Dynamic: requires-python
+Dynamic: summary
+
+========================
+Team and repository tags
+========================
+
+.. image:: https://governance.openstack.org/tc/badges/oslo.limit.svg
+    :target: https://governance.openstack.org/tc/reference/tags/index.html
+
+
+==========
+oslo.limit
+==========
+
+.. image:: https://img.shields.io/pypi/v/oslo.limit.svg
+    :target: https://pypi.python.org/pypi/oslo.limit/
+    :alt: Latest Version
+
+.. image:: https://img.shields.io/pypi/dm/oslo.limit.svg
+    :target: https://pypi.python.org/pypi/oslo.limit/
+    :alt: Downloads
+
+
+
+Oslo.limit is the limit enforcement library to assist with quota calculation.
+It aims to provide support for quota enforcement across all OpenStack services.
+
+* Free software: Apache license
+* Documentation: https://docs.openstack.org/oslo.limit/latest/
+* Source: http://opendev.org/openstack/oslo.limit
+* Bugs: http://bugs.launchpad.net/oslo.limit
+
diff -pruN 2.6.1-3/RELEASENOTES.rst 2.7.0+git2025070815.d254dc4-0ubuntu1/RELEASENOTES.rst
--- 2.6.1-3/RELEASENOTES.rst	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/RELEASENOTES.rst	2025-07-08 22:30:10.000000000 +0000
@@ -0,0 +1,147 @@
+==========
+oslo.limit
+==========
+
+.. _oslo.limit_2.7.0:
+
+2.7.0
+=====
+
+.. _oslo.limit_2.7.0_Bug Fixes:
+
+Bug Fixes
+---------
+
+.. releasenotes/notes/fix-ignored-ksa-adapter-options-e120fac9a6fd35f7.yaml @ b'f351266cba76cf9aa7791432611088134edaf943'
+
+- Fix ignored keystoneauth adapter options such as valid_interfaces.
+
+
+.. _oslo.limit_1.0.1:
+
+1.0.1
+=====
+
+.. _oslo.limit_1.0.1_Critical Issues:
+
+Critical Issues
+---------------
+
+.. releasenotes/notes/pre-stable-version-warning-83dbfc9427a22725.yaml @ b'64b78b78785f132efbf43e54c2f0415bd2847c06'
+
+- oslo.limit mistakenly released as 1.0.0. This library is still
+  under heavy development and the API isn't stabilized yet so oslo.limit
+  isn't actually ready to be consumed yet.
+  This library is still a pre-1.0.
+  For further reading about this issue please take a look to the
+  mailing list discussion [1]
+  
+  [1] http://lists.openstack.org/pipermail/openstack-discuss/2020-February/012606.html
+
+
+.. _oslo.limit_1.0.0:
+
+1.0.0
+=====
+
+.. _oslo.limit_1.0.0_Upgrade Notes:
+
+Upgrade Notes
+-------------
+
+.. releasenotes/notes/drop-python27-support-7c1d29f348060147.yaml @ b'188ee761778f63fc53f15076b7a6611f87538acc'
+
+- Support for Python 2.7 has been dropped. The minimum version of Python now
+  supported is Python 3.6.
+
+
+.. _oslo.limit_1.5.1:
+
+1.5.1
+=====
+
+.. _oslo.limit_1.5.1_Bug Fixes:
+
+Bug Fixes
+---------
+
+.. releasenotes/notes/bug-1962406-e239d60400c726c8.yaml @ b'594aff58952e35a8f0c578cd21c9754db32d2bd4'
+
+- `bug 1962406` <https://bugs.launchpad.net/oslo.limit/+bug/1962406>`_:
+  Fixed the wrong format of options data, which was causing failure with
+  ``oslo-config-generator`` command if the ``oslo.limit`` entry point is
+  included.
+
+
+.. _oslo.limit_1.5.0:
+
+1.5.0
+=====
+
+.. _oslo.limit_1.5.0_New Features:
+
+New Features
+------------
+
+.. releasenotes/notes/enforcer-limit-caching-fb59725aad88b039.yaml @ b'43683f543ec196502ed13192518e4eb89be8868c'
+
+- ``Enforcer`` objects now cache limits by default for the lifetime of the
+  object to provide improved performance when multiple calls of ``enforce()``
+  are needed. This behavior is controlled by the boolean ``cache`` keyword
+  argument to the ``__init__`` method.
+
+
+.. _oslo.limit_1.6.0:
+
+1.6.0
+=====
+
+.. _oslo.limit_1.6.0_Bug Fixes:
+
+Bug Fixes
+---------
+
+.. releasenotes/notes/bug-1962406-e239d60400c726c8.yaml @ b'ce5aa7dccad4b95db6758c988287a07574ddb918'
+
+- `bug 1962406` <https://bugs.launchpad.net/oslo.limit/+bug/1962406>`_:
+  Fixed the wrong format of options data, which was causing failure with
+  ``oslo-config-generator`` command if the ``oslo.limit`` entry point is
+  included.
+
+
+.. _oslo.limit_2.6.1-3:
+
+2.6.1-3
+=======
+
+.. _oslo.limit_2.6.1-3_Bug Fixes:
+
+Bug Fixes
+---------
+
+.. releasenotes/notes/fix-ignored-ksa-adapter-options-e120fac9a6fd35f7.yaml @ b'327977e0991fb292f4de1939f821958d1e8ff0c9'
+
+- Fix ignored keystoneauth adapter options such as valid_interfaces.
+
+
+.. _oslo.limit_2.6.0:
+
+2.6.0
+=====
+
+.. _oslo.limit_2.6.0_New Features:
+
+New Features
+------------
+
+.. releasenotes/notes/look-up-endpoint-id-from-keystone-9d8419673902c258.yaml @ b'9575a24796e019fd66f1bb1a5ef0bcbfc167351a'
+
+- The following options have been added to the ``[oslo_limit]`` section.
+  When these options are set instead of the ``endpoint_id`` option, endpoint
+  id is looked up from keystone API.
+  
+  - ``endpoint_service_name``
+  - ``endpoint_service_type``
+  - ``endpoint_region_name``
+  - ``endpoint_interface``
+
diff -pruN 2.6.1-3/debian/changelog 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/changelog
--- 2.6.1-3/debian/changelog	2025-03-28 09:21:29.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/changelog	2025-07-24 20:30:04.000000000 +0000
@@ -1,121 +1,111 @@
-python-oslo.limit (2.6.1-3) unstable; urgency=medium
+python-oslo.limit (2.7.0+git2025070815.d254dc4-0ubuntu1) questing; urgency=medium
 
-  * Uploading to unstable.
+  [ Guillaume Boutry ]
+  * d/gbp.conf, .launchpad.yaml: Sync from cloud-archive-tools for
+    flamingo.
 
- -- Thomas Goirand <zigo@debian.org>  Fri, 28 Mar 2025 10:21:29 +0100
+  [ Myles Penner ]
+  * New upstream release for OpenStack Flamingo. (LP: #2116155)
+  * d/watch: Add Flamingo key verification.
+  * d/u/signing-key.asc: Add Flamingo public key.
 
-python-oslo.limit (2.6.1-2) experimental; urgency=medium
+ -- Myles Penner <myles.penner@canonical.com>  Thu, 24 Jul 2025 16:30:04 -0400
 
-  * d/watch: switch to version=4 and mode=git.
+python-oslo.limit (2.6.1-0ubuntu1) plucky; urgency=medium
 
- -- Thomas Goirand <zigo@debian.org>  Tue, 25 Feb 2025 15:10:38 +0100
+  * New upstream release for OpenStack Epoxy.
 
-python-oslo.limit (2.6.1-1) experimental; urgency=medium
+ -- James Page <james.page@ubuntu.com>  Thu, 27 Feb 2025 12:50:35 +0000
 
-  * New upstream release.
-  * Removed hacking from build-depends.
+python-oslo.limit (2.6.0-0ubuntu1) plucky; urgency=medium
 
- -- Thomas Goirand <zigo@debian.org>  Mon, 24 Feb 2025 15:19:00 +0100
+  * d/gbp.conf, .launchpad.yaml: Sync from cloud-archive-tools for
+    epoxy.
+  * New upstream release for OpenStack Epoxy.
+  * d/control: Align (Build-)Depends with release.
 
-python-oslo.limit (2.5.0-3) unstable; urgency=medium
+ -- James Page <james.page@ubuntu.com>  Thu, 16 Jan 2025 12:06:58 +0000
 
-  * Switch to pybuild (Closes: #1090569).
+python-oslo.limit (2.5.0-0ubuntu1) oracular; urgency=medium
 
- -- Thomas Goirand <zigo@debian.org>  Thu, 19 Dec 2024 08:53:41 +0100
+  * d/gbp.conf: upstream-branch -> upstream-dalmatian.
+  * New upstream release for OpenStack Dalmatian.
 
-python-oslo.limit (2.5.0-2) unstable; urgency=medium
+ -- James Page <james.page@ubuntu.com>  Tue, 24 Sep 2024 13:59:59 +0100
 
-  * Uploading to unstable.
+python-oslo.limit (2.4.0-0ubuntu1) noble; urgency=medium
 
- -- Thomas Goirand <zigo@debian.org>  Thu, 19 Sep 2024 17:52:45 +0200
+  * New upstream release for OpenStack Caracal. 
 
-python-oslo.limit (2.5.0-1) experimental; urgency=medium
+ -- James Page <james.page@ubuntu.com>  Mon, 11 Mar 2024 11:19:26 +0000
 
-  * New upstream release.
+python-oslo.limit (2.3.0-0ubuntu1) noble; urgency=medium
 
- -- Thomas Goirand <zigo@debian.org>  Mon, 26 Aug 2024 16:33:49 +0200
+  [ Corey Bryant ]
+  * d/gbp.conf, .launchpad.yaml: Sync from cloud-archive-tools for
+    caracal.
 
-python-oslo.limit (2.4.0-2) unstable; urgency=medium
+  [ James Page ]
+  * New upstream release for OpenStack Caracal. 
 
-  * Uploading to unstable.
+ -- James Page <james.page@ubuntu.com>  Tue, 16 Jan 2024 17:25:48 +0000
 
- -- Thomas Goirand <zigo@debian.org>  Wed, 03 Apr 2024 16:33:51 +0200
+python-oslo.limit (2.2.0-0ubuntu1) mantic; urgency=medium
 
-python-oslo.limit (2.4.0-1) experimental; urgency=medium
+  * d/gbp.conf, .launchpad.yaml: Sync from cloud-archive-tools for
+    bobcat.
+  * New upstream release for OpenStack Bobcat.
 
-  * New upstream release.
+ -- Corey Bryant <corey.bryant@canonical.com>  Tue, 05 Sep 2023 15:29:20 -0400
 
- -- Thomas Goirand <zigo@debian.org>  Sat, 24 Feb 2024 21:44:14 +0100
+python-oslo.limit (2.1.0-0ubuntu1) lunar; urgency=medium
 
-python-oslo.limit (2.2.0-2) unstable; urgency=medium
+  * New upstream release for OpenStack Antelope.
+  * d/control: Align (Build-)Depends with upstream.
 
-  * Uploading to unstable.
+ -- Corey Bryant <corey.bryant@canonical.com>  Wed, 22 Feb 2023 14:15:08 -0500
 
- -- Thomas Goirand <zigo@debian.org>  Wed, 04 Oct 2023 13:24:10 +0200
+python-oslo.limit (2.0.1-0ubuntu1) kinetic; urgency=medium
 
-python-oslo.limit (2.2.0-1) experimental; urgency=medium
+  * New upstream release for OpenStack Zed.
 
-  * New upstream release.
+ -- Corey Bryant <corey.bryant@canonical.com>  Thu, 08 Sep 2022 20:19:43 -0400
 
- -- Thomas Goirand <zigo@debian.org>  Wed, 30 Aug 2023 12:44:25 +0200
+python-oslo.limit (2.0.0-0ubuntu1) kinetic; urgency=medium
 
-python-oslo.limit (2.1.0-3) unstable; urgency=medium
+  * New upstream release for OpenStack Zed.
 
-  * Cleans better (Closes: #1048034).
+ -- Corey Bryant <corey.bryant@canonical.com>  Wed, 13 Jul 2022 16:09:33 -0400
 
- -- Thomas Goirand <zigo@debian.org>  Mon, 21 Aug 2023 15:41:45 +0200
+python-oslo.limit (1.6.0-0ubuntu2) kinetic; urgency=medium
 
-python-oslo.limit (2.1.0-2) unstable; urgency=medium
+  * d/t/control, d/t/python-(o)stestr: Switch from ostestr to stestr.
 
-  * Uploading to unstable.
+ -- Corey Bryant <corey.bryant@canonical.com>  Wed, 08 Jun 2022 10:15:38 -0400
 
- -- Thomas Goirand <zigo@debian.org>  Mon, 19 Jun 2023 11:28:23 +0200
+python-oslo.limit (1.6.0-0ubuntu1) kinetic; urgency=medium
 
-python-oslo.limit (2.1.0-1) experimental; urgency=medium
+  * New upstream release for OpenStack Zed.
+  * d/control: Switch to debhelper compat 13.
+  * d/control: Update standards version to 4.6.1.
 
-  * New upstream release.
+ -- Corey Bryant <corey.bryant@canonical.com>  Tue, 31 May 2022 15:53:54 -0400
 
- -- Thomas Goirand <zigo@debian.org>  Wed, 22 Feb 2023 10:42:04 +0100
+python-oslo.limit (1.5.0-0ubuntu1) jammy; urgency=medium
 
-python-oslo.limit (2.0.1-2) unstable; urgency=medium
+  * d/copyright: Fix copyright upstream name and source.
+  * New upstream release for OpenStack Yoga.
 
-  * Uploading to unstable.
+ -- Corey Bryant <corey.bryant@canonical.com>  Wed, 02 Mar 2022 15:15:35 -0500
 
- -- Thomas Goirand <zigo@debian.org>  Fri, 23 Sep 2022 13:48:41 +0200
+python-oslo.limit (1.4.0-0ubuntu2) impish; urgency=medium
 
-python-oslo.limit (2.0.1-1) experimental; urgency=medium
+  * d/t/*: Add autopkgtests (LP: #1940427).
 
-  * New upstream release.
+ -- Corey Bryant <corey.bryant@canonical.com>  Wed, 25 Aug 2021 08:17:28 -0400
 
- -- Thomas Goirand <zigo@debian.org>  Mon, 29 Aug 2022 16:15:48 +0200
+python-oslo.limit (1.4.0-0ubuntu1) impish; urgency=medium
 
-python-oslo.limit (1.5.1-1) unstable; urgency=medium
+  * Initial release.
 
-  * New upstream release.
-
- -- Thomas Goirand <zigo@debian.org>  Fri, 13 May 2022 10:59:14 +0200
-
-python-oslo.limit (1.5.0-2) unstable; urgency=medium
-
-  * Uploading to unstable.
-  * Add autopkgtest.
-
- -- Thomas Goirand <zigo@debian.org>  Thu, 24 Mar 2022 15:56:50 +0100
-
-python-oslo.limit (1.5.0-1) experimental; urgency=medium
-
-  * New upstream release.
-
- -- Thomas Goirand <zigo@debian.org>  Mon, 21 Feb 2022 11:39:08 +0100
-
-python-oslo.limit (1.4.0-2) unstable; urgency=medium
-
-  * Uploading to unstable.
-
- -- Thomas Goirand <zigo@debian.org>  Wed, 29 Sep 2021 16:35:04 +0200
-
-python-oslo.limit (1.4.0-1) unstable; urgency=medium
-
-  * Initial release. (Closes: #994546)
-
- -- Thomas Goirand <zigo@debian.org>  Fri, 17 Sep 2021 16:31:55 +0200
+ -- Corey Bryant <corey.bryant@canonical.com>  Mon, 26 Jul 2021 14:07:16 -0400
diff -pruN 2.6.1-3/debian/control 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/control
--- 2.6.1-3/debian/control	2025-03-28 09:21:29.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/control	2025-07-24 20:30:04.000000000 +0000
@@ -1,59 +1,41 @@
 Source: python-oslo.limit
 Section: python
 Priority: optional
-Maintainer: Debian OpenStack <team+openstack@tracker.debian.org>
-Uploaders:
- Thomas Goirand <zigo@debian.org>,
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
 Build-Depends:
- debhelper-compat (= 11),
+ debhelper-compat (= 13),
  dh-python,
  openstack-pkg-tools,
  python3-all,
  python3-setuptools,
- python3-sphinx,
+ python3-sphinx (>= 2.0.0),
 Build-Depends-Indep:
- python3-fixtures,
- python3-keystoneauth1,
- python3-openstackdocstheme <!nodoc>,
- python3-openstacksdk,
- python3-oslo.config,
- python3-oslo.i18n,
- python3-oslo.log,
- python3-oslotest,
- python3-stestr,
- python3-subunit,
- python3-sphinxcontrib.apidoc <!nodoc>,
-Standards-Version: 4.5.1
-Vcs-Browser: https://salsa.debian.org/openstack-team/oslo/python-oslo.limit
-Vcs-Git: https://salsa.debian.org/openstack-team/oslo/python-oslo.limit.git
-Homepage: https://docs.openstack.org/oslo.limit/latest/
+ python3-fixtures (>= 3.0.0),
+ python3-keystoneauth1 (>= 3.9.0),
+ python3-openstackdocstheme (>= 2.2.1),
+ python3-openstacksdk (>= 0.47.0),
+ python3-oslo.config (>= 1:5.2.0),
+ python3-oslo.i18n (>= 3.15.3),
+ python3-oslo.log (>= 3.44.0),
+ python3-oslotest (>= 1:3.2.0),
+ python3-sphinxcontrib.apidoc (>= 0.2.0),
+ python3-stestr (>= 1.0.0),
+Standards-Version: 4.6.1
+Vcs-Git: https://git.launchpad.net/~ubuntu-openstack-dev/ubuntu/+source/python-oslo.limit
+Homepage: https://opendev.org/openstack/oslo.limit
 
 Package: python3-oslo.limit
 Architecture: all
 Depends:
- python3-keystoneauth1,
- python3-openstacksdk,
- python3-oslo.config,
- python3-oslo.i18n,
- python3-oslo.log,
+ python3-keystoneauth1 (>= 3.9.0),
+ python3-openstacksdk (>= 0.47.0),
+ python3-oslo.config (>= 1:5.2.0),
+ python3-oslo.i18n (>= 3.15.3),
+ python3-oslo.log (>= 3.44.0),
  ${misc:Depends},
  ${python3:Depends},
-Suggests:
- python-oslo.limit-doc,
-Description: OpenStack limit enforcement library to assist with quota calculation
- Oslo.limit is the limit enforcement library to assist with quota calculation.
- It aims to provide support for quota enforcement across all OpenStack services.
- It provides functions such as get_project_limits() and enforce_limits().
-
-Package: python-oslo.limit-doc
-Build-Profiles: <!nodoc>
-Section: doc
-Architecture: all
-Depends:
- ${misc:Depends},
- ${sphinxdoc:Depends},
-Description: OpenStack limit enforcement library to assist with quota calculation - doc
- Oslo.limit is the limit enforcement library to assist with quota calculation.
- It aims to provide support for quota enforcement across all OpenStack services.
+Description: OpenStack library for limit enforcement
+ Oslo.limit is the OpenStack library for limit enforcement. It is used to assist
+ with quota calculation.
  .
- This package contains the documentation.
+ This package contains the Python 3 module.
diff -pruN 2.6.1-3/debian/copyright 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/copyright
--- 2.6.1-3/debian/copyright	2025-03-28 09:21:29.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/copyright	2025-07-24 20:30:04.000000000 +0000
@@ -1,14 +1,14 @@
-Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 Upstream-Name: oslo.limit
-Source: https://docs.openstack.org/oslo.limit/latest/
+Source: https://opendev.org/openstack/oslo.limit
 
 Files: *
-Copyright: (c) 2010-2021, OpenStack Foundation <openstack-discuss@lists.openstack.org>
- (c) 2020-2021, Red Hat, Inc
+Copyright: (c) 2020-2021, Red Hat, Inc
+           (c) 2018, OpenStack Foundation
 License: Apache-2
 
 Files: debian/*
-Copyright: (c) 2019, Thomas Goirand <zigo@debian.org>
+Copyright: (c) 2021, Canonical Ltd.
 License: Apache-2
 
 License: Apache-2
diff -pruN 2.6.1-3/debian/gbp.conf 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/gbp.conf
--- 2.6.1-3/debian/gbp.conf	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/gbp.conf	2025-07-24 20:30:04.000000000 +0000
@@ -0,0 +1,9 @@
+[DEFAULT]
+debian-branch = master
+upstream-tag = %(version)s
+pristine-tar = True
+upstream-branch = upstream-flamingo
+
+[buildpackage]
+export-dir = ../build-area
+prebuild = [ ! -f .launchpad.yaml ] || rm .launchpad.yaml
diff -pruN 2.6.1-3/debian/python-oslo.limit-doc.doc-base 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/python-oslo.limit-doc.doc-base
--- 2.6.1-3/debian/python-oslo.limit-doc.doc-base	2025-03-28 09:21:29.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/python-oslo.limit-doc.doc-base	1970-01-01 00:00:00.000000000 +0000
@@ -1,9 +0,0 @@
-Document: python-oslo.limit-doc
-Title: oslo.limit Documentation
-Author: N/A
-Abstract: Sphinx documentation for oslo.limit
-Section: Programming/Python
-
-Format: HTML
-Index: /usr/share/doc/python-oslo.limit-doc/html/index.html
-Files: /usr/share/doc/python-oslo.limit-doc/html/*
diff -pruN 2.6.1-3/debian/python3-oslo.limit.install 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/python3-oslo.limit.install
--- 2.6.1-3/debian/python3-oslo.limit.install	2025-03-28 09:21:29.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/python3-oslo.limit.install	1970-01-01 00:00:00.000000000 +0000
@@ -1 +0,0 @@
-/usr
diff -pruN 2.6.1-3/debian/rules 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/rules
--- 2.6.1-3/debian/rules	2025-03-28 09:21:29.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/rules	2025-07-24 20:30:04.000000000 +0000
@@ -1,36 +1,6 @@
 #!/usr/bin/make -f
 
-UPSTREAM_GIT := https://github.com/openstack/oslo.limit.git
-include /usr/share/openstack-pkg-tools/pkgos.make
+export PYBUILD_NAME=oslo_limit
 
 %:
-	dh $@ --buildsystem=pybuild --with python3,sphinxdoc
-
-override_dh_auto_clean:
-	rm -rf build .stestr doc/source/reference/api *.egg-info
-	find . -iname '*.pyc' -delete
-	for i in $$(find . -type d -iname __pycache__) ; do rm -rf $$i ; done
-
-override_dh_auto_build:
-	echo "Do nothing..."
-
-override_dh_auto_install:
-	echo "Do nothing..."
-
-override_dh_install:
-	pkgos-dh_auto_install --no-py2 --in-tmp
-
-ifeq (,$(findstring nocheck, $(DEB_BUILD_OPTIONS)))
-	pkgos-dh_auto_test --no-py2
-endif
-
-	dh_install
-
-override_dh_auto_test:
-	echo "Do nothing..."
-
-override_dh_sphinxdoc:
-ifeq (,$(findstring nodoc, $(DEB_BUILD_OPTIONS)))
-	PYTHONPATH=. python3 -m sphinx -b html doc/source debian/python-oslo.limit-doc/usr/share/doc/python-oslo.limit-doc/html
-	dh_sphinxdoc
-endif
+	dh $@ --buildsystem=pybuild --with python3
diff -pruN 2.6.1-3/debian/source/options 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/source/options
--- 2.6.1-3/debian/source/options	2025-03-28 09:21:29.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/source/options	2025-07-24 20:30:04.000000000 +0000
@@ -1 +1,2 @@
 extend-diff-ignore = "^[^/]*[.]egg-info/"
+extend-diff-ignore = "^.launchpad.yaml"
diff -pruN 2.6.1-3/debian/tests/control 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/tests/control
--- 2.6.1-3/debian/tests/control	2025-03-28 09:21:29.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/tests/control	2025-07-24 20:30:04.000000000 +0000
@@ -1,5 +1,3 @@
-Tests: unittests
-Depends:
- @,
- @builddeps@,
-Restrictions: allow-stderr needs-root
+Tests: python-import, python-stestr
+Depends: @, @builddeps@
+Restrictions: allow-stderr
diff -pruN 2.6.1-3/debian/tests/python-import 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/tests/python-import
--- 2.6.1-3/debian/tests/python-import	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/tests/python-import	2025-07-24 20:30:04.000000000 +0000
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+MODULE_NAME=$(python3 setup.py --name | sed 's/\./_/g')
+
+for py in $(py3versions -r 2>/dev/null); do
+    cd "$AUTOPKGTEST_TMP"
+    echo "Testing with $py:"
+    $py -c "import $MODULE_NAME; print($MODULE_NAME)"
+done
diff -pruN 2.6.1-3/debian/tests/python-stestr 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/tests/python-stestr
--- 2.6.1-3/debian/tests/python-stestr	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/tests/python-stestr	2025-07-24 20:30:04.000000000 +0000
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+set -ex
+
+for py in $(py3versions -r 2>/dev/null); do
+    echo "Testing with $py:"
+    PYTHON=$py stestr run
+    rm -rf .stestr
+done
diff -pruN 2.6.1-3/debian/tests/unittests 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/tests/unittests
--- 2.6.1-3/debian/tests/unittests	2025-03-28 09:21:29.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/tests/unittests	1970-01-01 00:00:00.000000000 +0000
@@ -1,5 +0,0 @@
-#!/bin/sh
-
-set -e
-
-pkgos-dh_auto_test --no-py2 'oslo_limit\.tests.*'
diff -pruN 2.6.1-3/debian/upstream/signing-key.asc 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/upstream/signing-key.asc
--- 2.6.1-3/debian/upstream/signing-key.asc	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/upstream/signing-key.asc	2025-07-24 20:30:04.000000000 +0000
@@ -0,0 +1,34 @@
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+mDMEZ92jlhYJKwYBBAHaRw8BAQdAnSMr01EpuQHlcTQ8c0ENVDFs9mi/TdWB0IlG
+ZF1eC2S0Qk9wZW5TdGFjayBJbmZyYSAoMjAyNS4yL0ZsYW1pbmdvIEN5Y2xlKSA8
+aW5mcmEtcm9vdEBvcGVuc3RhY2sub3JnPoiWBBMWCAA+FiEExxsAfvl4h/2PtjZc
+60/W1hjmIYEFAmfdo5YCGwMFCQFj9QAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AA
+CgkQ60/W1hjmIYElLAEAkMjANVr+kVjZGp8KtliT+ySFAqoCQceuscYt7WmeD4wA
+/2gHNfFDJwkWn9JY9mCR2y7gwf6skTWl3ssPogTa84wDiHUEEBYIAB0WIQQiKE9p
+2ezN8994GXkccRrxk/+OVAUCZ92k6wAKCRAccRrxk/+OVMQGAQD0X/Eow2mK/YzZ
+rMO60g2KI767/rnKJWKFUTCZCfswxwD/WxuGjGRB98RZ9IbCcmaUvRqHf9812h60
+/RCoB4AtiwSJAjMEEAEKAB0WIQSXrklvwC3sn8NTsudI+ZYRQ0lYKQUCZ92vKwAK
+CRBI+ZYRQ0lYKdthD/wJh0uxw05WsmFwjuds82JdnH9ow3OdG/0bhds8eEvgYuQe
+ZEQ9/RC5hJ+SiV+/zclIaG+xYHW3VkZUgOmmLxRzmqFbWbDm5yKp7jTqM2zYB4Jx
+EiLB4dWHZFmrcqfkJ06nXVMjGkj73N+DqHWQ6hleaiE7tcbI++w1AN7niL0rW008
+iP8IHoWLh2dJxQlcheVdjCe0jEU3qO8KxhUTeARPD/Vp1CpJWlq9vWs9/bweMrtj
+FsQwxBiZcQ/0zXDnQFUKpbNDFjQZnjmmwTqhopquL5e5mZWr0NussI20JXyZHj7T
+N5ikDAFPf9iM1Apb+/g9njGUgYFEOgEJuDr1oLolZ+9+7uZrKGD1gmdY7pVG12Xn
+2QJ3rft/Wy8Obac+TdA+UoEYQu4LOUpUOmPOcXE/8/fTxybkQGOZm1Ufaddz+6ee
+uHBbIaxI1kh5MrxH5cIaEkvdjOGg+bMyq7C8CE8WgSEN/JiupEZYgDduOSuqGHDp
++9ydEkanNjGN+K4rXJ7ABBv9freINx5kmCAaDzXeIAL8n1/Rzd6Z/acOlC9omDM0
+mYKKIfLMp6Rp7SKnB37Tp0dKGP4r/SJsx5Sxn7XrktVJ1ht5ByipDD6VBN3+OQPx
+56pRLDCk9EFDjbOW0iKzyPx+Nya5G9CN9AqQXe1MlHsFn+q7DEUSmlGZfvtjN7g4
+BGfdo5YSCisGAQQBl1UBBQEBB0DHSvmmZUEZ94olzKZSHa2HBCWhrhOVNFn/0ag8
+KyY5fQMBCAeIfgQYFggAJhYhBMcbAH75eIf9j7Y2XOtP1tYY5iGBBQJn3aOWAhsM
+BQkBY/UAAAoJEOtP1tYY5iGB6XcA+wY0JUi2ZUqH0CRs4EfS6VML/7u08g8ZByN4
+DZ2htqOGAQDmGHHjpMhKz04eDXLpNO6UZ/Q6LnqEXztW8eBXVtiZALgzBGfdpHYW
+CSsGAQQB2kcPAQEHQKH/4Td8MRK/9UxGyPqWWaZl88m4xE48XM4kP6w3asRViO8E
+GBYIACAWIQTHGwB++XiH/Y+2NlzrT9bWGOYhgQUCZ92kdgIbAgCBCRDrT9bWGOYh
+gXYgBBkWCAAdFiEE3cFPzrMpT3Q4I7HG9zFcLOa3NF0FAmfdpHYACgkQ9zFcLOa3
+NF1xqwEA3muioM6tJtSbiCUCDau2QnalBkfov/A2FFIxvnyHbH0A/051M0O09Tcl
+E7tAieH8W63Jhg3n/GzKl36hXqh3ANML8kIA/0eu6JgK+F0s8iiy+sQecTD7W38B
+A8CSZ29ANdlMwzf7AP9araqMvKRpTMAzhQ+1Eluh8FmXQhzeZDhlIZ8DQDQ/CQ==
+=FVKc
+-----END PGP PUBLIC KEY BLOCK-----
diff -pruN 2.6.1-3/debian/watch 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/watch
--- 2.6.1-3/debian/watch	2025-03-28 09:21:29.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/debian/watch	2025-07-24 20:30:04.000000000 +0000
@@ -1,3 +1,3 @@
-version=4
-opts="mode=git,uversionmangle=s/\.0rc/~rc/;s/\.0b1/~b1/;s/\.0b2/~b2/;s/\.0b3/~b3/" \
-https://github.com/openstack/oslo.limit refs/tags/(\d[brc\d\.]+)
\ No newline at end of file
+version=3
+opts=uversionmangle=s/\.(b|rc)/~$1/,pgpsigurlmangle=s/$/.asc/ \
+    http://tarballs.openstack.org/oslo.limit/ oslo.limit-(\d.*)\.tar\.gz
diff -pruN 2.6.1-3/oslo.limit.egg-info/PKG-INFO 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/PKG-INFO
--- 2.6.1-3/oslo.limit.egg-info/PKG-INFO	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/PKG-INFO	2025-07-08 22:30:10.000000000 +0000
@@ -0,0 +1,67 @@
+Metadata-Version: 2.2
+Name: oslo.limit
+Version: 2.7.1.dev2
+Summary: Limit enforcement library to assist with quota calculation.
+Home-page: https://docs.openstack.org/oslo.limit/latest/
+Author: OpenStack
+Author-email: openstack-discuss@lists.openstack.org
+Classifier: Environment :: OpenStack
+Classifier: Intended Audience :: Information Technology
+Classifier: Intended Audience :: System Administrators
+Classifier: License :: OSI Approved :: Apache Software License
+Classifier: Operating System :: POSIX :: Linux
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3 :: Only
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Requires-Python: >=3.8
+License-File: LICENSE
+Requires-Dist: keystoneauth1>=3.9.0
+Requires-Dist: oslo.config>=5.2.0
+Requires-Dist: oslo.i18n>=3.15.3
+Requires-Dist: oslo.log>=3.44.0
+Requires-Dist: openstacksdk>=0.47.0
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: home-page
+Dynamic: requires-dist
+Dynamic: requires-python
+Dynamic: summary
+
+========================
+Team and repository tags
+========================
+
+.. image:: https://governance.openstack.org/tc/badges/oslo.limit.svg
+    :target: https://governance.openstack.org/tc/reference/tags/index.html
+
+
+==========
+oslo.limit
+==========
+
+.. image:: https://img.shields.io/pypi/v/oslo.limit.svg
+    :target: https://pypi.python.org/pypi/oslo.limit/
+    :alt: Latest Version
+
+.. image:: https://img.shields.io/pypi/dm/oslo.limit.svg
+    :target: https://pypi.python.org/pypi/oslo.limit/
+    :alt: Downloads
+
+
+
+Oslo.limit is the limit enforcement library to assist with quota calculation.
+It aims to provide support for quota enforcement across all OpenStack services.
+
+* Free software: Apache license
+* Documentation: https://docs.openstack.org/oslo.limit/latest/
+* Source: http://opendev.org/openstack/oslo.limit
+* Bugs: http://bugs.launchpad.net/oslo.limit
+
diff -pruN 2.6.1-3/oslo.limit.egg-info/SOURCES.txt 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/SOURCES.txt
--- 2.6.1-3/oslo.limit.egg-info/SOURCES.txt	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/SOURCES.txt	2025-07-08 22:30:10.000000000 +0000
@@ -0,0 +1,68 @@
+.converagerc
+.coveragerc
+.mailmap
+.pre-commit-config.yaml
+.stestr.conf
+.zuul.yaml
+AUTHORS
+CONTRIBUTING.rst
+ChangeLog
+HACKING.rst
+LICENSE
+README.rst
+pyproject.toml
+requirements.txt
+setup.cfg
+setup.py
+test-requirements.txt
+tox.ini
+doc/requirements.txt
+doc/source/conf.py
+doc/source/index.rst
+doc/source/contributor/index.rst
+doc/source/install/index.rst
+doc/source/reference/index.rst
+doc/source/reference/opts.rst
+doc/source/user/index.rst
+doc/source/user/testing.rst
+doc/source/user/usage.rst
+oslo.limit.egg-info/PKG-INFO
+oslo.limit.egg-info/SOURCES.txt
+oslo.limit.egg-info/dependency_links.txt
+oslo.limit.egg-info/entry_points.txt
+oslo.limit.egg-info/not-zip-safe
+oslo.limit.egg-info/pbr.json
+oslo.limit.egg-info/requires.txt
+oslo.limit.egg-info/top_level.txt
+oslo_limit/__init__.py
+oslo_limit/_i18n.py
+oslo_limit/exception.py
+oslo_limit/fixture.py
+oslo_limit/limit.py
+oslo_limit/opts.py
+oslo_limit/tests/__init__.py
+oslo_limit/tests/test_fixture.py
+oslo_limit/tests/test_limit.py
+releasenotes/notes/bug-1962406-e239d60400c726c8.yaml
+releasenotes/notes/drop-python27-support-7c1d29f348060147.yaml
+releasenotes/notes/enforcer-limit-caching-fb59725aad88b039.yaml
+releasenotes/notes/fix-ignored-ksa-adapter-options-e120fac9a6fd35f7.yaml
+releasenotes/notes/look-up-endpoint-id-from-keystone-9d8419673902c258.yaml
+releasenotes/notes/pre-stable-version-warning-83dbfc9427a22725.yaml
+releasenotes/source/2023.1.rst
+releasenotes/source/2023.2.rst
+releasenotes/source/2024.1.rst
+releasenotes/source/2024.2.rst
+releasenotes/source/2025.1.rst
+releasenotes/source/conf.py
+releasenotes/source/index.rst
+releasenotes/source/train.rst
+releasenotes/source/unreleased.rst
+releasenotes/source/ussuri.rst
+releasenotes/source/victoria.rst
+releasenotes/source/wallaby.rst
+releasenotes/source/xena.rst
+releasenotes/source/yoga.rst
+releasenotes/source/zed.rst
+releasenotes/source/_static/.placeholder
+releasenotes/source/_templates/.placeholder
\ No newline at end of file
diff -pruN 2.6.1-3/oslo.limit.egg-info/dependency_links.txt 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/dependency_links.txt
--- 2.6.1-3/oslo.limit.egg-info/dependency_links.txt	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/dependency_links.txt	2025-07-08 22:30:10.000000000 +0000
@@ -0,0 +1 @@
+
diff -pruN 2.6.1-3/oslo.limit.egg-info/entry_points.txt 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/entry_points.txt
--- 2.6.1-3/oslo.limit.egg-info/entry_points.txt	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/entry_points.txt	2025-07-08 22:30:10.000000000 +0000
@@ -0,0 +1,2 @@
+[oslo.config.opts]
+oslo.limit = oslo_limit.opts:list_opts
diff -pruN 2.6.1-3/oslo.limit.egg-info/not-zip-safe 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/not-zip-safe
--- 2.6.1-3/oslo.limit.egg-info/not-zip-safe	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/not-zip-safe	2025-07-08 22:30:10.000000000 +0000
@@ -0,0 +1 @@
+
diff -pruN 2.6.1-3/oslo.limit.egg-info/pbr.json 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/pbr.json
--- 2.6.1-3/oslo.limit.egg-info/pbr.json	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/pbr.json	2025-07-08 22:30:10.000000000 +0000
@@ -0,0 +1 @@
+{"git_version": "d254dc4", "is_release": false}
\ No newline at end of file
diff -pruN 2.6.1-3/oslo.limit.egg-info/requires.txt 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/requires.txt
--- 2.6.1-3/oslo.limit.egg-info/requires.txt	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/requires.txt	2025-07-08 22:30:10.000000000 +0000
@@ -0,0 +1,5 @@
+keystoneauth1>=3.9.0
+oslo.config>=5.2.0
+oslo.i18n>=3.15.3
+oslo.log>=3.44.0
+openstacksdk>=0.47.0
diff -pruN 2.6.1-3/oslo.limit.egg-info/top_level.txt 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/top_level.txt
--- 2.6.1-3/oslo.limit.egg-info/top_level.txt	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo.limit.egg-info/top_level.txt	2025-07-08 22:30:10.000000000 +0000
@@ -0,0 +1 @@
+oslo_limit
diff -pruN 2.6.1-3/oslo_limit/fixture.py 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo_limit/fixture.py
--- 2.6.1-3/oslo_limit/fixture.py	2025-02-15 06:20:11.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo_limit/fixture.py	2025-07-08 22:30:09.000000000 +0000
@@ -17,6 +17,7 @@ import fixtures as fixtures
 
 from openstack.identity.v3 import endpoint
 from openstack.identity.v3 import limit as keystone_limit
+from openstack.identity.v3 import registered_limit as keystone_rlimit
 
 
 class LimitFixture(fixtures.Fixture):
@@ -36,6 +37,35 @@ class LimitFixture(fixtures.Fixture):
         self.reglimits = reglimits
         self.projlimits = projlimits
 
+    def get_reglimit_objects(
+            self, service_id=None, region_id=None, resource_name=None):
+        limits = []
+        for name, value in self.reglimits.items():
+            if resource_name and resource_name != name:
+                continue
+            limit = keystone_rlimit.RegisteredLimit()
+            limit.resource_name = name
+            limit.default_limit = value
+            limits.append(limit)
+        return limits
+
+    def get_projlimit_objects(
+            self, service_id=None, region_id=None, resource_name=None,
+            project_id=None):
+        limits = []
+        for proj_id, limit_dict in self.projlimits.items():
+            if project_id and project_id != proj_id:
+                continue
+            for name, value in limit_dict.items():
+                if resource_name and resource_name != name:
+                    continue
+                limit = keystone_limit.Limit()
+                limit.project_id = proj_id
+                limit.resource_name = name
+                limit.resource_limit = value
+                limits.append(limit)
+        return limits
+
     def setUp(self):
         super().setUp()
 
@@ -56,20 +86,6 @@ class LimitFixture(fixtures.Fixture):
         fake_endpoint.region_id = "region_id"
         self.mock_conn.get_endpoint.return_value = fake_endpoint
 
-        def fake_limits(service_id, region_id, resource_name, project_id=None):
-            this_limit = keystone_limit.Limit()
-            this_limit.resource_name = resource_name
-            if project_id is None:
-                this_limit.default_limit = self.reglimits.get(resource_name)
-                if this_limit.default_limit is None:
-                    return iter([None])
-            else:
-                this_limit.resource_limit = \
-                    self.projlimits.get(project_id, {}).get(resource_name)
-                if this_limit.resource_limit is None:
-                    return iter([None])
-
-            return iter([this_limit])
-
-        self.mock_conn.limits.side_effect = fake_limits
-        self.mock_conn.registered_limits.side_effect = fake_limits
+        self.mock_conn.limits.side_effect = self.get_projlimit_objects
+        self.mock_conn.registered_limits.side_effect = (
+            self.get_reglimit_objects)
diff -pruN 2.6.1-3/oslo_limit/limit.py 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo_limit/limit.py
--- 2.6.1-3/oslo_limit/limit.py	2025-02-15 06:20:11.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo_limit/limit.py	2025-07-08 22:30:09.000000000 +0000
@@ -40,7 +40,19 @@ def _get_keystone_connection():
                 CONF, group='oslo_limit')
             session = loading.load_session_from_conf_options(
                 CONF, group='oslo_limit', auth=auth)
-            _SDK_CONNECTION = connection.Connection(session=session).identity
+            ksa_opts = loading.get_adapter_conf_options(
+                include_deprecated=False)
+            conn_kwargs = {}
+            for opt in ksa_opts:
+                if opt.dest != 'valid_interfaces':
+                    conn_kwargs['identity_' + opt.dest] = getattr(
+                        CONF.oslo_limit, opt.dest)
+            conn_kwargs['identity_interface'] = \
+                CONF.oslo_limit.valid_interfaces
+            _SDK_CONNECTION = connection.Connection(
+                session=session,
+                **conn_kwargs
+            ).identity
         except (ksa_exceptions.NoMatchingPlugin,
                 ksa_exceptions.MissingRequiredOptions,
                 ksa_exceptions.MissingAuthPlugin,
@@ -352,12 +364,28 @@ class _EnforcerUtils:
             LOG.debug("hit limit for project: %s", over_limit_list)
             raise exception.ProjectOverLimit(project_id, over_limit_list)
 
+    def _get_registered_limits(self):
+        registered_limits = []
+        reg_limits = self.connection.registered_limits(
+            service_id=self._service_id, region_id=self._region_id)
+        for reg_limit in reg_limits:
+            name, limit = reg_limit.resource_name, reg_limit.default_limit
+            registered_limits.append((name, limit))
+            if self.should_cache:
+                self.rlimit_cache[name] = reg_limit
+        return registered_limits
+
     def get_registered_limits(self, resource_names):
         """Get all the default limits for a given resource name list
 
         :param resource_names: list of resource_name strings
         :return: list of (resource_name, limit) pairs
         """
+        # If None was passed for resource_names, get and return all of the
+        # registered limits.
+        if resource_names is None:
+            return self._get_registered_limits()
+
         # Using a list to preserve the resource_name order
         registered_limits = []
         for resource_name in resource_names:
@@ -370,6 +398,25 @@ class _EnforcerUtils:
 
         return registered_limits
 
+    def _get_project_limits(self, project_id):
+        if project_id is None:
+            # If we were to pass None, we would receive limits for all projects
+            # and we would have to return {project_id: [(name, limit), ...]}
+            # which would be inconsistent with the return format of the other
+            # methods.
+            raise ValueError('project_id must not be None')
+
+        project_limits = []
+        proj_limits = self.connection.limits(
+            service_id=self._service_id, region_id=self._region_id,
+            project_id=project_id)
+        for proj_limit in proj_limits:
+            name, limit = proj_limit.resource_name, proj_limit.resource_limit
+            project_limits.append((name, limit))
+            if self.should_cache:
+                self.plimit_cache[project_id][name] = proj_limit
+        return project_limits
+
     def get_project_limits(self, project_id, resource_names):
         """Get all the limits for given project a resource_name list
 
@@ -380,6 +427,11 @@ class _EnforcerUtils:
         :param resource_names: list of resource_name strings
         :return: list of (resource_name,limit) pairs
         """
+        # If None was passed for resource_names, get and return all of the
+        # limits.
+        if resource_names is None:
+            return self._get_project_limits(project_id)
+
         # Using a list to preserver the resource_name order
         project_limits = []
         for resource_name in resource_names:
@@ -422,20 +474,21 @@ class _EnforcerUtils:
                 resource_name in self.plimit_cache[project_id]):
             return self.plimit_cache[project_id][resource_name]
 
-        # Get the limit from keystone.
+        # Get the limits from keystone.
         limits = self.connection.limits(
             service_id=self._service_id,
             region_id=self._region_id,
-            resource_name=resource_name,
             project_id=project_id)
-        try:
-            limit = next(limits)
-        except StopIteration:
-            return None
-
-        # Cache the limit if configured.
-        if self.should_cache and limit:
-            self.plimit_cache[project_id][resource_name] = limit
+        limit = None
+        for pl in limits:
+            # NOTE(melwitt): If project_id None was passed in, it's possible
+            # there will be multiple limits for the same resource (from various
+            # projects), so keep the existing oslo.limit behavior and return
+            # the first one we find. This could be considered to be a bug.
+            if limit is None and pl.resource_name == resource_name:
+                limit = pl
+            if self.should_cache:
+                self.plimit_cache[project_id][pl.resource_name] = pl
 
         return limit
 
@@ -444,18 +497,16 @@ class _EnforcerUtils:
         if resource_name in self.rlimit_cache:
             return self.rlimit_cache[resource_name]
 
-        # Get the limit from keystone.
+        # Get the limits from keystone.
         reg_limits = self.connection.registered_limits(
             service_id=self._service_id,
-            region_id=self._region_id,
-            resource_name=resource_name)
-        try:
-            reg_limit = next(reg_limits)
-        except StopIteration:
-            return None
-
-        # Cache the limit if configured.
-        if self.should_cache and reg_limit:
-            self.rlimit_cache[resource_name] = reg_limit
+            region_id=self._region_id)
+        reg_limit = None
+        for rl in reg_limits:
+            if rl.resource_name == resource_name:
+                reg_limit = rl
+            # Cache the limit if configured.
+            if self.should_cache:
+                self.rlimit_cache[rl.resource_name] = rl
 
         return reg_limit
diff -pruN 2.6.1-3/oslo_limit/tests/test_limit.py 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo_limit/tests/test_limit.py
--- 2.6.1-3/oslo_limit/tests/test_limit.py	2025-02-15 06:20:11.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/oslo_limit/tests/test_limit.py	2025-07-08 22:30:09.000000000 +0000
@@ -224,6 +224,45 @@ class TestEnforcer(base.BaseTestCase):
         mock_get_limits.assert_called_once_with(project_id, ["a", "b", "c"])
         self.assertEqual(mock_get_limits.return_value, limits)
 
+    def test_calculate_usage_cache(self, cache=True):
+        project_id = uuid.uuid4().hex
+        fix = self.useFixture(fixture.LimitFixture(
+            {'a': 5, 'b': 7, 'c': 8, 'd': 3},
+            {project_id: {'a': 2, 'b': 4}, 'other': {'a': 1, 'b': 2}}))
+        mock_usage = mock.MagicMock()
+        mock_usage.return_value = {'a': 1, 'b': 3, 'c': 2, 'd': 0}
+
+        enforcer = limit.Enforcer(mock_usage, cache=cache)
+        expected = {
+            'a': limit.ProjectUsage(2, 1),
+            'b': limit.ProjectUsage(4, 3),
+            'c': limit.ProjectUsage(8, 2),
+            'd': limit.ProjectUsage(3, 0),
+        }
+        self.assertEqual(
+            expected,
+            enforcer.calculate_usage(project_id, ['a', 'b', 'c', 'd']))
+
+        # If caching is enabled, there should be three calls to the GET /limits
+        # API: one for 'a' and 'b' and two because of cache misses for 'c' and
+        # 'd' (the project_id has not set a per-project limit for 'c' or 'd',
+        # so they will not be cached for the project).
+        # If caching is disabled, there should be four calls to the GET
+        # /limits API, one for each of 'a', 'b', 'c', and 'd'.
+        expected_count = 3 if cache else 4
+        self.assertEqual(expected_count, fix.mock_conn.limits.call_count)
+
+        # If caching is enabled, there should be one call to the GET
+        # /registered_limits API for 'c' and 'd'.
+        # If caching is disabled, there should be two calls to the GET
+        # /registered_limits API, one for each of 'c' and 'd'.
+        expected_count = 1 if cache else 2
+        self.assertEqual(
+            expected_count, fix.mock_conn.registered_limits.call_count)
+
+    def test_calculate_usage_no_cache(self):
+        self.test_calculate_usage_cache(cache=False)
+
 
 class TestFlatEnforcer(base.BaseTestCase):
     def setUp(self):
@@ -763,3 +802,121 @@ class TestEnforcerUtils(base.BaseTestCas
             utils._get_limit(None, 'foo')
             mgrl.assert_called_once_with('foo')
             mgpl.assert_not_called()
+
+    def test_get_registered_limits_resource_names_none(self):
+        fix = self.useFixture(fixture.LimitFixture({'foo': 5, 'bar': 7}, {}))
+
+        utils = limit._EnforcerUtils()
+        limits = utils.get_registered_limits(None)
+
+        self.assertEqual([('foo', 5), ('bar', 7)], limits)
+        fix.mock_conn.registered_limits.assert_called_once()
+
+        # Call again with resource names to test caching.
+        limits = utils.get_registered_limits(['foo', 'bar'])
+
+        self.assertEqual([('foo', 5), ('bar', 7)], limits)
+        fix.mock_conn.registered_limits.assert_called_once()
+
+    def test_get_registered_limits_resource_names_none_no_cache(self):
+        fix = self.useFixture(fixture.LimitFixture({'foo': 5, 'bar': 7}, {}))
+
+        utils = limit._EnforcerUtils(cache=False)
+        limits = utils.get_registered_limits(None)
+
+        self.assertEqual([('foo', 5), ('bar', 7)], limits)
+        fix.mock_conn.registered_limits.assert_called_once()
+
+        # Call again with resource names to test caching.
+        limits = utils.get_registered_limits(['foo', 'bar'])
+
+        self.assertEqual([('foo', 5), ('bar', 7)], limits)
+        # First call gets all limits, then one call per resource name.
+        self.assertEqual(3, fix.mock_conn.registered_limits.call_count)
+
+    def test_get_registered_limits_resource_names(self):
+        fix = self.useFixture(fixture.LimitFixture({'foo': 5, 'bar': 7}, {}))
+
+        utils = limit._EnforcerUtils()
+        limits = utils.get_registered_limits(['foo', 'bar'])
+
+        self.assertEqual([('foo', 5), ('bar', 7)], limits)
+        fix.mock_conn.registered_limits.assert_called_once()
+
+    def test_get_registered_limits_resource_names_no_cache(self):
+        fix = self.useFixture(fixture.LimitFixture({'foo': 5, 'bar': 7}, {}))
+
+        utils = limit._EnforcerUtils(cache=False)
+        limits = utils.get_registered_limits(['foo', 'bar'])
+
+        self.assertEqual([('foo', 5), ('bar', 7)], limits)
+        self.assertEqual(2, fix.mock_conn.registered_limits.call_count)
+
+    def test_get_project_limits_resource_names_none_project_id_none(self):
+        # We consider project_id None to be invalid for "get_project_limits"
+        # because it would require us to make the return format for getting
+        # project limits different than the format for registered limits.
+        # [(name, limit), (name, limit), ...]
+        utils = limit._EnforcerUtils()
+        self.assertRaises(ValueError, utils.get_project_limits, None, None)
+
+    def test_get_project_limits_resource_names_none(self):
+        project_id = uuid.uuid4().hex
+        fix = self.useFixture(fixture.LimitFixture(
+            {'foo': 5, 'bar': 7},
+            {project_id: {'foo': 2, 'bar': 4}, 'other': {'foo': 1, 'bar': 2}}))
+
+        utils = limit._EnforcerUtils()
+        limits = utils.get_project_limits(project_id, None)
+
+        self.assertEqual([('foo', 2), ('bar', 4)], limits)
+        fix.mock_conn.limits.assert_called_once()
+
+        # Call again with resource names to test caching.
+        limits = utils.get_project_limits(project_id, ['foo', 'bar'])
+
+        self.assertEqual([('foo', 2), ('bar', 4)], limits)
+        fix.mock_conn.limits.assert_called_once()
+
+    def test_get_project_limits_resource_names_none_no_cache(self):
+        project_id = uuid.uuid4().hex
+        fix = self.useFixture(fixture.LimitFixture(
+            {'foo': 5, 'bar': 7},
+            {project_id: {'foo': 2, 'bar': 4}, 'other': {'foo': 1, 'bar': 2}}))
+
+        utils = limit._EnforcerUtils(cache=False)
+        limits = utils.get_project_limits(project_id, None)
+
+        self.assertEqual([('foo', 2), ('bar', 4)], limits)
+        fix.mock_conn.limits.assert_called_once()
+
+        # Call again with resource names to test caching.
+        limits = utils.get_project_limits(project_id, ['foo', 'bar'])
+
+        self.assertEqual([('foo', 2), ('bar', 4)], limits)
+        # First call gets all limits, then one call per resource name.
+        self.assertEqual(3, fix.mock_conn.limits.call_count)
+
+    def test_get_project_limits_resource_names(self):
+        project_id = uuid.uuid4().hex
+        fix = self.useFixture(fixture.LimitFixture(
+            {'foo': 5, 'bar': 7},
+            {project_id: {'foo': 2, 'bar': 4}, 'other': {'foo': 1, 'bar': 2}}))
+
+        utils = limit._EnforcerUtils()
+        limits = utils.get_project_limits(project_id, ['foo', 'bar'])
+
+        self.assertEqual([('foo', 2), ('bar', 4)], limits)
+        fix.mock_conn.limits.assert_called_once()
+
+    def test_get_project_limits_resource_names_no_cache(self):
+        project_id = uuid.uuid4().hex
+        fix = self.useFixture(fixture.LimitFixture(
+            {'foo': 5, 'bar': 7},
+            {project_id: {'foo': 2, 'bar': 4}, 'other': {'foo': 1, 'bar': 2}}))
+
+        utils = limit._EnforcerUtils(cache=False)
+        limits = utils.get_project_limits(project_id, ['foo', 'bar'])
+
+        self.assertEqual([('foo', 2), ('bar', 4)], limits)
+        self.assertEqual(2, fix.mock_conn.limits.call_count)
diff -pruN 2.6.1-3/pyproject.toml 2.7.0+git2025070815.d254dc4-0ubuntu1/pyproject.toml
--- 2.6.1-3/pyproject.toml	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/pyproject.toml	2025-07-08 22:30:09.000000000 +0000
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["pbr>=6.1.1"]
+build-backend = "pbr.build"
diff -pruN 2.6.1-3/releasenotes/notes/fix-ignored-ksa-adapter-options-e120fac9a6fd35f7.yaml 2.7.0+git2025070815.d254dc4-0ubuntu1/releasenotes/notes/fix-ignored-ksa-adapter-options-e120fac9a6fd35f7.yaml
--- 2.6.1-3/releasenotes/notes/fix-ignored-ksa-adapter-options-e120fac9a6fd35f7.yaml	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/releasenotes/notes/fix-ignored-ksa-adapter-options-e120fac9a6fd35f7.yaml	2025-07-08 22:30:09.000000000 +0000
@@ -0,0 +1,5 @@
+---
+fixes:
+  - |
+    Fix ignored keystoneauth adapter options such as valid_interfaces.
+
diff -pruN 2.6.1-3/releasenotes/notes/reno.cache 2.7.0+git2025070815.d254dc4-0ubuntu1/releasenotes/notes/reno.cache
--- 2.6.1-3/releasenotes/notes/reno.cache	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/releasenotes/notes/reno.cache	2025-07-08 22:30:10.000000000 +0000
@@ -0,0 +1,194 @@
+---
+dates:
+- date: 1724666280
+  version: 2.5.0
+- date: 1645542643
+  version: 1.3.1
+- date: 1693227090
+  version: 2.2.0
+- date: 1676045201
+  version: 2.1.0
+- date: 1622536860
+  version: train-em
+- date: 1709821276
+  version: wallaby-eom
+- date: 1681994576
+  version: xena-em
+- date: 1748421843
+  version: 2.7.0
+- date: 1707143599
+  version: ussuri-eol
+- date: 1707229675
+  version: yoga-eom
+- date: 1703161450
+  version: train-eol
+- date: 1651073264
+  version: 1.6.0
+- date: 1732016351
+  version: 2.6.0
+- date: 1708612549
+  version: 2.4.0
+- date: 1638187819
+  version: ussuri-em
+- date: 1576530912
+  version: 0.3.0
+- date: 1657617384
+  version: 2.0.0
+- date: 1661347141
+  version: 2.0.1
+- date: 1591266861
+  version: 1.1.0
+- date: 1562836803
+  version: 0.1.0
+- date: 1643216118
+  version: 1.5.0
+- date: 1615494367
+  version: 1.3.0
+- date: 1592826990
+  version: 1.2.0
+- date: 1714974962
+  version: zed-eom
+- date: 1623325492
+  version: 1.4.0
+- date: 1582640154
+  version: 1.0.1
+- date: 1746177465
+  version: 2023.2-eol
+- date: 1709821530
+  version: xena-eom
+- date: 1576144903
+  version: 0.2.0
+- date: 1599851782
+  version: 1.2.1
+- date: 1709820953
+  version: victoria-eom
+- date: 1586253808
+  version: 1.0.2
+- date: 1667590737
+  version: wallaby-em
+- date: 1650287322
+  version: victoria-em
+- date: 1567606653
+  version: 0.1.1
+- date: 1651153520
+  version: 1.5.1
+- date: 1704902900
+  version: 2.3.0
+- date: 1740135904
+  version: 2.6.1
+- date: 1732213765
+  version: 2023.1-eom
+- date: 1581622889
+  version: 1.0.0
+file-contents:
+  releasenotes/notes/bug-1962406-e239d60400c726c8.yaml:
+    fixes:
+    - '`bug 1962406` <https://bugs.launchpad.net/oslo.limit/+bug/1962406>`_:
+
+      Fixed the wrong format of options data, which was causing failure with
+
+      ``oslo-config-generator`` command if the ``oslo.limit`` entry point is
+
+      included.
+
+      '
+  releasenotes/notes/drop-python27-support-7c1d29f348060147.yaml:
+    upgrade:
+    - 'Support for Python 2.7 has been dropped. The minimum version of Python now
+
+      supported is Python 3.6.
+
+      '
+  releasenotes/notes/enforcer-limit-caching-fb59725aad88b039.yaml:
+    features:
+    - '``Enforcer`` objects now cache limits by default for the lifetime of the
+
+      object to provide improved performance when multiple calls of ``enforce()``
+
+      are needed. This behavior is controlled by the boolean ``cache`` keyword
+
+      argument to the ``__init__`` method.
+
+      '
+  releasenotes/notes/fix-ignored-ksa-adapter-options-e120fac9a6fd35f7.yaml:
+    fixes:
+    - 'Fix ignored keystoneauth adapter options such as valid_interfaces.
+
+      '
+  releasenotes/notes/look-up-endpoint-id-from-keystone-9d8419673902c258.yaml:
+    features:
+    - 'The following options have been added to the ``[oslo_limit]`` section.
+
+      When these options are set instead of the ``endpoint_id`` option, endpoint
+
+      id is looked up from keystone API.
+
+
+      - ``endpoint_service_name``
+
+      - ``endpoint_service_type``
+
+      - ``endpoint_region_name``
+
+      - ``endpoint_interface``
+
+      '
+  releasenotes/notes/pre-stable-version-warning-83dbfc9427a22725.yaml:
+    critical:
+    - 'oslo.limit mistakenly released as 1.0.0. This library is still
+
+      under heavy development and the API isn''t stabilized yet so oslo.limit
+
+      isn''t actually ready to be consumed yet.
+
+      This library is still a pre-1.0.
+
+      For further reading about this issue please take a look to the
+
+      mailing list discussion [1]
+
+
+      [1] http://lists.openstack.org/pipermail/openstack-discuss/2020-February/012606.html
+
+      '
+notes:
+- files:
+  - - releasenotes/notes/fix-ignored-ksa-adapter-options-e120fac9a6fd35f7.yaml
+    - !!binary |
+      ZjM1MTI2NmNiYTc2Y2Y5YWE3NzkxNDMyNjExMDg4MTM0ZWRhZjk0Mw==
+  version: 2.7.0
+- files:
+  - - releasenotes/notes/pre-stable-version-warning-83dbfc9427a22725.yaml
+    - !!binary |
+      NjRiNzhiNzg3ODVmMTMyZWZiZjQzZTU0YzJmMDQxNWJkMjg0N2MwNg==
+  version: 1.0.1
+- files:
+  - - releasenotes/notes/drop-python27-support-7c1d29f348060147.yaml
+    - !!binary |
+      MTg4ZWU3NjE3NzhmNjNmYzUzZjE1MDc2YjdhNjYxMWY4NzUzOGFjYw==
+  version: 1.0.0
+- files:
+  - - releasenotes/notes/bug-1962406-e239d60400c726c8.yaml
+    - !!binary |
+      NTk0YWZmNTg5NTJlMzVhOGYwYzU3OGNkMjFjOTc1NGRiMzJkMmJkNA==
+  version: 1.5.1
+- files:
+  - - releasenotes/notes/enforcer-limit-caching-fb59725aad88b039.yaml
+    - !!binary |
+      NDM2ODNmNTQzZWMxOTY1MDJlZDEzMTkyNTE4ZTRlYjg5YmU4ODY4Yw==
+  version: 1.5.0
+- files:
+  - - releasenotes/notes/bug-1962406-e239d60400c726c8.yaml
+    - !!binary |
+      Y2U1YWE3ZGNjYWQ0Yjk1ZGI2NzU4Yzk4ODI4N2EwNzU3NGRkYjkxOA==
+  version: 1.6.0
+- files:
+  - - releasenotes/notes/fix-ignored-ksa-adapter-options-e120fac9a6fd35f7.yaml
+    - !!binary |
+      MzI3OTc3ZTA5OTFmYjI5MmY0ZGUxOTM5ZjgyMTk1OGQxZThmZjBjOQ==
+  version: 2.6.1-3
+- files:
+  - - releasenotes/notes/look-up-endpoint-id-from-keystone-9d8419673902c258.yaml
+    - !!binary |
+      OTU3NWEyNDc5NmUwMTlmZDY2ZjFiYjFhNWVmMGJjYmZjMTY3MzUxYQ==
+  version: 2.6.0
diff -pruN 2.6.1-3/releasenotes/source/2025.1.rst 2.7.0+git2025070815.d254dc4-0ubuntu1/releasenotes/source/2025.1.rst
--- 2.6.1-3/releasenotes/source/2025.1.rst	1970-01-01 00:00:00.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/releasenotes/source/2025.1.rst	2025-07-08 22:30:09.000000000 +0000
@@ -0,0 +1,6 @@
+===========================
+2025.1 Series Release Notes
+===========================
+
+.. release-notes::
+   :branch: stable/2025.1
diff -pruN 2.6.1-3/releasenotes/source/index.rst 2.7.0+git2025070815.d254dc4-0ubuntu1/releasenotes/source/index.rst
--- 2.6.1-3/releasenotes/source/index.rst	2025-02-15 06:20:11.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/releasenotes/source/index.rst	2025-07-08 22:30:09.000000000 +0000
@@ -6,6 +6,7 @@
    :maxdepth: 1
 
    unreleased
+   2025.1
    2024.2
    2024.1
    2023.2
diff -pruN 2.6.1-3/setup.cfg 2.7.0+git2025070815.d254dc4-0ubuntu1/setup.cfg
--- 2.6.1-3/setup.cfg	2025-02-15 06:20:11.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/setup.cfg	2025-07-08 22:30:10.584524900 +0000
@@ -1,32 +1,37 @@
 [metadata]
 name = oslo.limit
 summary = Limit enforcement library to assist with quota calculation.
-description_file =
-    README.rst
+description_file = 
+	README.rst
 author = OpenStack
 author_email = openstack-discuss@lists.openstack.org
 home_page = https://docs.openstack.org/oslo.limit/latest/
 python_requires = >=3.8
-classifier =
-    Environment :: OpenStack
-    Intended Audience :: Information Technology
-    Intended Audience :: System Administrators
-    License :: OSI Approved :: Apache Software License
-    Operating System :: POSIX :: Linux
-    Programming Language :: Python
-    Programming Language :: Python :: 3
-    Programming Language :: Python :: 3.8
-    Programming Language :: Python :: 3.9
-    Programming Language :: Python :: 3.10
-    Programming Language :: Python :: 3.11
-    Programming Language :: Python :: 3.12
-    Programming Language :: Python :: 3 :: Only
-    Programming Language :: Python :: Implementation :: CPython
+classifier = 
+	Environment :: OpenStack
+	Intended Audience :: Information Technology
+	Intended Audience :: System Administrators
+	License :: OSI Approved :: Apache Software License
+	Operating System :: POSIX :: Linux
+	Programming Language :: Python
+	Programming Language :: Python :: 3
+	Programming Language :: Python :: 3.8
+	Programming Language :: Python :: 3.9
+	Programming Language :: Python :: 3.10
+	Programming Language :: Python :: 3.11
+	Programming Language :: Python :: 3.12
+	Programming Language :: Python :: 3 :: Only
+	Programming Language :: Python :: Implementation :: CPython
 
 [files]
-packages =
-    oslo_limit
+packages = 
+	oslo_limit
 
 [entry_points]
-oslo.config.opts =
-    oslo.limit = oslo_limit.opts:list_opts
+oslo.config.opts = 
+	oslo.limit = oslo_limit.opts:list_opts
+
+[egg_info]
+tag_build = 
+tag_date = 0
+
diff -pruN 2.6.1-3/tox.ini 2.7.0+git2025070815.d254dc4-0ubuntu1/tox.ini
--- 2.6.1-3/tox.ini	2025-02-15 06:20:11.000000000 +0000
+++ 2.7.0+git2025070815.d254dc4-0ubuntu1/tox.ini	2025-07-08 22:30:09.000000000 +0000
@@ -1,10 +1,8 @@
 [tox]
 minversion = 3.18.0
 envlist = py3,pep8,docs
-ignore_basepython_conflict = true
 
 [testenv]
-basepython = python3
 deps =
   -c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
   -r{toxinidir}/test-requirements.txt
