Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-oslo.cache for 
openSUSE:Factory checked in at 2026-06-15 19:44:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.cache (Old)
 and      /work/SRC/openSUSE:Factory/.python-oslo.cache.new.1981 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-oslo.cache"

Mon Jun 15 19:44:33 2026 rev:23 rq:1359324 version:4.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.cache/python-oslo.cache.changes      
2026-03-23 17:17:33.480129624 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-oslo.cache.new.1981/python-oslo.cache.changes
    2026-06-15 19:48:00.362889958 +0200
@@ -1,0 +2,25 @@
+Tue Jun  2 14:46:02 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 4.2.0:
+  * Drop Python 3.10
+  * tox: Use new constraints option
+  * Fix new mypy error
+  * typing: Fix return type
+  * Skip functional tests for unit test code update
+  * Skip functional jobs for git config updates
+  * Update packaging configuration
+  * ruff: Configure hacking as external linter
+  * Run functional tests in gate
+  * Remove [cache] enforce_fips_mode
+  * Create helper to document backends
+  * Update backends with tls_allowed_ciphers support
+  * Fix outdated lower bound of redis library
+  * Fix wrong module name in warning messages
+  * Drop unnecessary import
+  * Update master for stable/2026.1
+  * redis: Support tls_allowed_cipher
+  * Refactor setup of redis backend
+  * Drop verbose logs about config options
+  * Stop passing down tls_enabled argument
+
+-------------------------------------------------------------------

Old:
----
  oslo_cache-4.1.1.tar.gz

New:
----
  oslo_cache-4.2.0.tar.gz

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

Other differences:
------------------
++++++ python-oslo.cache.spec ++++++
--- /var/tmp/diff_new_pack.wZSufe/_old  2026-06-15 19:48:02.290970978 +0200
+++ /var/tmp/diff_new_pack.wZSufe/_new  2026-06-15 19:48:02.298971314 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           python-oslo.cache
-Version:        4.1.1
+Version:        4.2.0
 Release:        0
 Summary:        Cache storage for Openstack projects
 License:        Apache-2.0
@@ -29,12 +29,13 @@
 BuildRequires:  %{python_module oslo.i18n >= 5.0.0}
 BuildRequires:  %{python_module oslo.log >= 4.2.1}
 BuildRequires:  %{python_module oslo.utils >= 4.2.0}
-BuildRequires:  %{python_module oslotest}
+BuildRequires:  %{python_module oslotest >= 3.2.0}
+BuildRequires:  %{python_module pbr >= 6.1.1}
 BuildRequires:  %{python_module pip}
-BuildRequires:  %{python_module pymemcache}
-BuildRequires:  %{python_module python-binary-memcached}
-BuildRequires:  %{python_module python-memcached}
-BuildRequires:  %{python_module stestr}
+BuildRequires:  %{python_module pymemcache >= 3.5.0}
+BuildRequires:  %{python_module python-binary-memcached >= 0.29.0}
+BuildRequires:  %{python_module python-memcached >= 1.56}
+BuildRequires:  %{python_module stestr >= 2.0.0}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  openstack-macros
 Requires:       python-dogpile.cache >= 1.3.3
@@ -42,7 +43,7 @@
 Requires:       python-oslo.i18n >= 5.0.0
 Requires:       python-oslo.log >= 4.2.1
 Requires:       python-oslo.utils >= 4.2.0
-Requires:       python-python-memcached
+Requires:       python-python-memcached >= 1.56
 BuildArch:      noarch
 %python_subpackages
 

++++++ oslo_cache-4.1.1.tar.gz -> oslo_cache-4.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/.zuul.yaml 
new/oslo_cache-4.2.0/.zuul.yaml
--- old/oslo_cache-4.1.1/.zuul.yaml     2026-02-24 11:39:39.000000000 +0100
+++ new/oslo_cache-4.2.0/.zuul.yaml     2026-05-20 11:00:49.000000000 +0200
@@ -15,11 +15,14 @@
     vars:
       tox_envlist: functional
     irrelevant-files:
+      - ^\.gitignore$
+      - ^\.gitreview$
       - ^.*\.rst$
       - ^doc/.*$
       - LICENSE
       - ^releasenotes/.*$
       - ^\.pre-commit-config\.yaml$
+      - ^oslo_cache/tests/unit/.*$
 
 - job:
     name: oslo.cache-functional-etcd3gw
@@ -91,6 +94,14 @@
       jobs:
         - oslo.cache-functional-etcd3gw
         - oslo.cache-functional-dogpile.cache.bmemcached
+        - oslo.cache-functional-dogpile.cache.pymemcache
+        - oslo.cache-functional-memcache_pool
+        - oslo.cache-functional-dogpile.cache.redis
+        - oslo.cache-functional-dogpile.cache.redis_sentinel
+    gate:
+      jobs:
+        - oslo.cache-functional-etcd3gw
+        - oslo.cache-functional-dogpile.cache.bmemcached
         - oslo.cache-functional-dogpile.cache.pymemcache
         - oslo.cache-functional-memcache_pool
         - oslo.cache-functional-dogpile.cache.redis
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/ChangeLog 
new/oslo_cache-4.2.0/ChangeLog
--- old/oslo_cache-4.1.1/ChangeLog      2026-02-24 11:40:07.000000000 +0100
+++ new/oslo_cache-4.2.0/ChangeLog      2026-05-20 11:01:54.000000000 +0200
@@ -1,10 +1,35 @@
 CHANGES
 =======
 
+4.2.0
+-----
+
+* Drop Python 3.10
+* tox: Use new constraints option
+* Fix new mypy error
+* typing: Fix return type
+* Skip functional tests for unit test code update
+* Skip functional jobs for git config updates
+* Update packaging configuration
+* ruff: Configure hacking as external linter
+* Run functional tests in gate
+* Remove [cache] enforce\_fips\_mode
+* Create helper to document backends
+* Update backends with tls\_allowed\_ciphers support
+* Fix outdated lower bound of redis library
+* Fix wrong module name in warning messages
+* Drop unnecessary import
+* Update master for stable/2026.1
+* redis: Support tls\_allowed\_cipher
+* Refactor setup of redis backend
+* Drop verbose logs about config options
+* Stop passing down tls\_enabled argument
+
 4.1.1
 -----
 
 * Fix remaining access to [cache] memcache\_username/password
+* Replace remaining usage of deprecated options
 
 4.1.0
 -----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/PKG-INFO 
new/oslo_cache-4.2.0/PKG-INFO
--- old/oslo_cache-4.1.1/PKG-INFO       2026-02-24 11:40:07.299274200 +0100
+++ new/oslo_cache-4.2.0/PKG-INFO       2026-05-20 11:01:54.194029600 +0200
@@ -1,24 +1,23 @@
 Metadata-Version: 2.4
 Name: oslo.cache
-Version: 4.1.1
+Version: 4.2.0
 Summary: Cache storage for OpenStack projects.
 Author-email: OpenStack <[email protected]>
-License: Apache-2.0
+License-Expression: Apache-2.0
 Project-URL: Homepage, https://docs.openstack.org/oslo.cache
 Project-URL: Repository, https://opendev.org/openstack/oslo.cache
 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.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Typing :: Typed
-Requires-Python: >=3.10
+Requires-Python: >=3.11
 Description-Content-Type: text/x-rst
 License-File: LICENSE
 Requires-Dist: dogpile.cache>=1.3.3
@@ -30,7 +29,7 @@
 Requires-Dist: python-memcached>=1.56; extra == "dogpile"
 Requires-Dist: pymemcache>=3.5.0; extra == "dogpile"
 Requires-Dist: python-binary-memcached>=0.29.0; extra == "dogpile"
-Requires-Dist: redis>=3.0.0; extra == "dogpile"
+Requires-Dist: redis>=5.1.0; extra == "dogpile"
 Provides-Extra: etcd3gw
 Requires-Dist: etcd3gw>=0.2.0; extra == "etcd3gw"
 Dynamic: license-file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/oslo.cache.egg-info/PKG-INFO 
new/oslo_cache-4.2.0/oslo.cache.egg-info/PKG-INFO
--- old/oslo_cache-4.1.1/oslo.cache.egg-info/PKG-INFO   2026-02-24 
11:40:07.000000000 +0100
+++ new/oslo_cache-4.2.0/oslo.cache.egg-info/PKG-INFO   2026-05-20 
11:01:54.000000000 +0200
@@ -1,24 +1,23 @@
 Metadata-Version: 2.4
 Name: oslo.cache
-Version: 4.1.1
+Version: 4.2.0
 Summary: Cache storage for OpenStack projects.
 Author-email: OpenStack <[email protected]>
-License: Apache-2.0
+License-Expression: Apache-2.0
 Project-URL: Homepage, https://docs.openstack.org/oslo.cache
 Project-URL: Repository, https://opendev.org/openstack/oslo.cache
 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.10
 Classifier: Programming Language :: Python :: 3.11
 Classifier: Programming Language :: Python :: 3.12
 Classifier: Programming Language :: Python :: 3.13
+Classifier: Programming Language :: Python :: 3.14
 Classifier: Typing :: Typed
-Requires-Python: >=3.10
+Requires-Python: >=3.11
 Description-Content-Type: text/x-rst
 License-File: LICENSE
 Requires-Dist: dogpile.cache>=1.3.3
@@ -30,7 +29,7 @@
 Requires-Dist: python-memcached>=1.56; extra == "dogpile"
 Requires-Dist: pymemcache>=3.5.0; extra == "dogpile"
 Requires-Dist: python-binary-memcached>=0.29.0; extra == "dogpile"
-Requires-Dist: redis>=3.0.0; extra == "dogpile"
+Requires-Dist: redis>=5.1.0; extra == "dogpile"
 Provides-Extra: etcd3gw
 Requires-Dist: etcd3gw>=0.2.0; extra == "etcd3gw"
 Dynamic: license-file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/oslo.cache.egg-info/SOURCES.txt 
new/oslo_cache-4.2.0/oslo.cache.egg-info/SOURCES.txt
--- old/oslo_cache-4.1.1/oslo.cache.egg-info/SOURCES.txt        2026-02-24 
11:40:07.000000000 +0100
+++ new/oslo_cache-4.2.0/oslo.cache.egg-info/SOURCES.txt        2026-05-20 
11:01:54.000000000 +0200
@@ -110,7 +110,10 @@
 releasenotes/notes/redis-sentinel-18ba4a0da83dabc7.yaml
 releasenotes/notes/redis-socket-keepalive-4c6cfde0be827282.yaml
 releasenotes/notes/redis-ssl-ca14b4b99c2e5a84.yaml
+releasenotes/notes/redis-tls_allowed_ciphers-0ac7c50d83da1000.yaml
+releasenotes/notes/remove-enforce_fips_mode-a998b6870ab4c245.yaml
 releasenotes/notes/remove-mongodb-backend-f539ec21d2a32848.yaml
+releasenotes/notes/remove-py310-2365f57e1178d92f.yaml
 releasenotes/notes/remove-py38-bb1062b0726bf422.yaml
 releasenotes/notes/remove-py39-7482eb74fcd78249.yaml
 
releasenotes/notes/switch-from-python-memcached-to-pymemcache-566e70b224f92b73.yaml
@@ -121,6 +124,7 @@
 releasenotes/source/2024.2.rst
 releasenotes/source/2025.1.rst
 releasenotes/source/2025.2.rst
+releasenotes/source/2026.1.rst
 releasenotes/source/conf.py
 releasenotes/source/index.rst
 releasenotes/source/newton.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/oslo.cache.egg-info/pbr.json 
new/oslo_cache-4.2.0/oslo.cache.egg-info/pbr.json
--- old/oslo_cache-4.1.1/oslo.cache.egg-info/pbr.json   2026-02-24 
11:40:07.000000000 +0100
+++ new/oslo_cache-4.2.0/oslo.cache.egg-info/pbr.json   2026-05-20 
11:01:54.000000000 +0200
@@ -1 +1 @@
-{"git_version": "258c0f9", "is_release": true}
\ No newline at end of file
+{"git_version": "7fcb0a8", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/oslo.cache.egg-info/requires.txt 
new/oslo_cache-4.2.0/oslo.cache.egg-info/requires.txt
--- old/oslo_cache-4.1.1/oslo.cache.egg-info/requires.txt       2026-02-24 
11:40:07.000000000 +0100
+++ new/oslo_cache-4.2.0/oslo.cache.egg-info/requires.txt       2026-05-20 
11:01:54.000000000 +0200
@@ -8,7 +8,7 @@
 python-memcached>=1.56
 pymemcache>=3.5.0
 python-binary-memcached>=0.29.0
-redis>=3.0.0
+redis>=5.1.0
 
 [etcd3gw]
 etcd3gw>=0.2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/oslo_cache/_bmemcache_pool.py 
new/oslo_cache-4.2.0/oslo_cache/_bmemcache_pool.py
--- old/oslo_cache-4.1.1/oslo_cache/_bmemcache_pool.py  2026-02-24 
11:39:39.000000000 +0100
+++ new/oslo_cache-4.2.0/oslo_cache/_bmemcache_pool.py  2026-05-20 
11:00:49.000000000 +0200
@@ -19,7 +19,7 @@
 import warnings
 
 try:
-    import eventlet
+    import eventlet  # type: ignore[import-not-found]
 except ImportError:
     eventlet = None
 import bmemcached
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/oslo_cache/_memcache_pool.py 
new/oslo_cache-4.2.0/oslo_cache/_memcache_pool.py
--- old/oslo_cache-4.1.1/oslo_cache/_memcache_pool.py   2026-02-24 
11:39:39.000000000 +0100
+++ new/oslo_cache-4.2.0/oslo_cache/_memcache_pool.py   2026-05-20 
11:00:49.000000000 +0200
@@ -26,7 +26,7 @@
 import warnings
 
 try:
-    import eventlet
+    import eventlet  # type: ignore[import-not-found]
 except ImportError:
     eventlet = None
 import memcache
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/oslo_cache/_opts.py 
new/oslo_cache-4.2.0/oslo_cache/_opts.py
--- old/oslo_cache-4.1.1/oslo_cache/_opts.py    2026-02-24 11:39:39.000000000 
+0100
+++ new/oslo_cache-4.2.0/oslo_cache/_opts.py    2026-05-20 11:00:49.000000000 
+0200
@@ -12,9 +12,23 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+from collections.abc import Sequence
+
 from oslo_config import cfg
 
 
+def _supported_backends_msg(backends: list[str]) -> str:
+    backends_in_msg = [f'``{name}``' for name in backends]
+    return ' '.join(
+        [
+            'Currently supported by',
+            ', '.join(backends_in_msg[:-1]),
+            'and',
+            backends_in_msg[-1],
+        ]
+    )
+
+
 _DEFAULT_BACKEND = 'dogpile.cache.null'
 
 FILE_OPTIONS = {
@@ -230,12 +244,16 @@
             default=False,
             help=(
                 'Global toggle for TLS usage when communicating with'
-                ' the caching servers. Currently supported by '
-                '``dogpile.cache.bmemcache``, '
-                '``dogpile.cache.pymemcache``, '
-                '``oslo_cache.memcache_pool``, '
-                '``dogpile.cache.redis`` and '
-                '``dogpile.cache.redis_sentinel``.'
+                ' the caching servers.'
+                + _supported_backends_msg(
+                    [
+                        'dogpile.cache.bmemcache',
+                        'dogpile.cache.pymemcache',
+                        'oslo_cache.memcache_pool',
+                        'dogpile.cache.redis',
+                        'dogpile.cache.redis_sentinel',
+                    ]
+                )
             ),
         ),
         cfg.StrOpt(
@@ -277,10 +295,16 @@
                 'Set the available ciphers for sockets created with '
                 'the TLS context. It should be a string in the OpenSSL '
                 'cipher list format. If not specified, all OpenSSL enabled '
-                'ciphers will be available. Currently supported by '
-                '``dogpile.cache.bmemcache``, '
-                '``dogpile.cache.pymemcache`` and '
-                '``oslo_cache.memcache_pool``.'
+                'ciphers will be available. '
+                + _supported_backends_msg(
+                    [
+                        'dogpile.cache.bmemcache',
+                        'dogpile.cache.pymemcache',
+                        'oslo_cache.memcache_pool',
+                        'dogpile.cache.redis',
+                        'dogpile.cache.redis_sentinel',
+                    ]
+                )
             ),
         ),
         cfg.FloatOpt(
@@ -292,9 +316,14 @@
             ],
             help=(
                 'Timeout in seconds for every call to a server. '
-                'Currently supported by ``dogpile.cache.memcache``, '
-                '``oslo_cache.memcache_pool``, ``dogpile.cache.redis`` '
-                'and ``dogpile.cache.redis_sentinel``.'
+                + _supported_backends_msg(
+                    [
+                        'dogpile.cache.memcache',
+                        'oslo_cache.memcache_pool',
+                        'dogpile.cache.redis',
+                        'dogpile.cache.redis_sentinel',
+                    ]
+                )
             ),
         ),
         cfg.BoolOpt(
@@ -384,27 +413,6 @@
                 'back in the pool in the HashClient\'s internal mechanisms.'
             ),
         ),
-        cfg.BoolOpt(
-            'enforce_fips_mode',
-            default=False,
-            deprecated_for_removal=True,
-            deprecated_reason=(
-                'FIPS_mode_set API was removed in OpenSSL 3.0.0. '
-                'This option has no effect now.'
-            ),
-            help=(
-                'Global toggle for enforcing the OpenSSL FIPS mode. '
-                'This feature requires Python support. '
-                'This is available in Python 3.9 in all '
-                'environments and may have been backported to older '
-                'Python versions on select environments. If the Python '
-                'executable used does not support OpenSSL FIPS mode, '
-                'an exception will be raised. Currently supported by '
-                '``dogpile.cache.bmemcache``, '
-                '``dogpile.cache.pymemcache`` and '
-                '``oslo_cache.memcache_pool``.'
-            ),
-        ),
     ],
 }
 
@@ -437,7 +445,7 @@
     )
 
 
-def list_opts() -> list[tuple[str, cfg.Opt]]:
+def list_opts() -> list[tuple[str, Sequence[cfg.Opt]]]:
     """Return a list of oslo_config options.
 
     The returned list includes all oslo_config options which are registered as
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo_cache-4.1.1/oslo_cache/backends/memcache_pool.py 
new/oslo_cache-4.2.0/oslo_cache/backends/memcache_pool.py
--- old/oslo_cache-4.1.1/oslo_cache/backends/memcache_pool.py   2026-02-24 
11:39:39.000000000 +0100
+++ new/oslo_cache-4.2.0/oslo_cache/backends/memcache_pool.py   2026-05-20 
11:00:49.000000000 +0200
@@ -67,7 +67,7 @@
     # Composed from GenericMemcachedBackend's and MemcacheArgs's __init__
     def __init__(self, arguments: dict[str, Any]) -> None:
         super().__init__(arguments)  # type: ignore
-        if arguments.get('tls_enabled', False) or arguments.get(
+        if arguments.get('tls_context') is not None or arguments.get(
             'sasl_enabled', False
         ):
             if arguments.get('sasl_enabled', False) and (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/oslo_cache/core.py 
new/oslo_cache-4.2.0/oslo_cache/core.py
--- old/oslo_cache-4.1.1/oslo_cache/core.py     2026-02-24 11:39:39.000000000 
+0100
+++ new/oslo_cache-4.2.0/oslo_cache/core.py     2026-05-20 11:00:49.000000000 
+0200
@@ -40,7 +40,6 @@
 import socket
 import ssl
 from typing import Any
-import urllib.parse
 import warnings
 
 import dogpile.cache
@@ -169,46 +168,29 @@
 
         _LOG.debug('Oslo Cache Config: %s', conf_dict)
 
-    if conf.cache.backend == 'dogpile.cache.redis':
-        if conf.cache.password is None:
-            netloc = conf.cache.redis_server
-        else:
-            if conf.cache.username:
-                netloc = (
-                    f'{conf.cache.username}:{conf.cache.password}'
-                    f'@{conf.cache.redis_server}'
-                )
-            else:
-                netloc = f':{conf.cache.password}@{conf.cache.redis_server}'
-
-        parts = urllib.parse.ParseResult(
-            scheme=('rediss' if conf.cache.tls_enabled else 'redis'),
-            netloc=netloc,
-            path=str(conf.cache.redis_db),
-            params='',
-            query='',
-            fragment='',
-        )
-
-        conf_dict.setdefault(
-            f'{prefix}.arguments.url', urllib.parse.urlunparse(parts)
-        )
-        conf_dict[f'{prefix}.arguments.socket_timeout'] = (
-            conf.cache.socket_timeout
-        )
-    elif conf.cache.backend == 'dogpile.cache.redis_sentinel':
+    if conf.cache.backend in (
+        'dogpile.cache.redis',
+        'dogpile.cache.redis_sentinel',
+    ):
         for arg in ('username', 'password', 'socket_timeout'):
             conf_dict[f'{prefix}.arguments.{arg}'] = getattr(conf.cache, arg)
 
         conf_dict[f'{prefix}.arguments.db'] = conf.cache.redis_db
 
-        conf_dict[f'{prefix}.arguments.service_name'] = (
-            conf.cache.redis_sentinel_service_name
-        )
-        if conf.cache.redis_sentinels:
-            conf_dict[f'{prefix}.arguments.sentinels'] = [
-                _parse_sentinel(s) for s in conf.cache.redis_sentinels
-            ]
+        if conf.cache.backend == 'dogpile.cache.redis_sentinel':
+            conf_dict[f'{prefix}.arguments.service_name'] = (
+                conf.cache.redis_sentinel_service_name
+            )
+            if conf.cache.redis_sentinels:
+                conf_dict[f'{prefix}.arguments.sentinels'] = [
+                    _parse_sentinel(s) for s in conf.cache.redis_sentinels
+                ]
+        else:
+            host, port = netutils.parse_host_port(
+                conf.cache.redis_server, 6379
+            )
+            conf_dict[f'{prefix}.arguments.host'] = host
+            conf_dict[f'{prefix}.arguments.port'] = port
     else:
         # NOTE(yorik-sar): these arguments will be used for memcache-related
         # backends. Use setdefault for url to support old-style setting through
@@ -289,61 +271,40 @@
             'dogpile.cache.pymemcache',
             'oslo_cache.memcache_pool',
         ):
-            _LOG.debug('Oslo Cache TLS - CA: %s', conf.cache.tls_cafile)
             tls_context = ssl.create_default_context(
                 cafile=conf.cache.tls_cafile
             )
 
             if conf.cache.tls_certfile is not None:
-                _LOG.debug(
-                    'Oslo Cache TLS - cert: %s', conf.cache.tls_certfile
-                )
-                _LOG.debug('Oslo Cache TLS - key: %s', conf.cache.tls_keyfile)
                 tls_context.load_cert_chain(
                     conf.cache.tls_certfile,
                     conf.cache.tls_keyfile,
                 )
 
             if conf.cache.tls_allowed_ciphers is not None:
-                _LOG.debug(
-                    'Oslo Cache TLS - ciphers: %s',
-                    conf.cache.tls_allowed_ciphers,
-                )
                 tls_context.set_ciphers(conf.cache.tls_allowed_ciphers)
 
             conf_dict[f'{prefix}.arguments.tls_context'] = tls_context
-
-            # pass the value of tls_enabled to the backend
-            conf_dict[f'{prefix}.arguments.tls_enabled'] = (
-                conf.cache.tls_enabled
-            )
         elif conf.cache.backend in (
             'dogpile.cache.redis',
             'dogpile.cache.redis_sentinel',
         ):
-            if conf.cache.tls_allowed_ciphers is not None:
-                raise exception.ConfigurationError(
-                    "Limiting allowed ciphers is not supported by "
-                    f"the {conf.cache.backend} backend"
-                )
-
-            conn_kwargs = {}
+            conn_kwargs = {'ssl': True}
             if conf.cache.tls_cafile is not None:
-                _LOG.debug('Oslo Cache TLS - CA: %s', conf.cache.tls_cafile)
                 conn_kwargs['ssl_ca_certs'] = conf.cache.tls_cafile
             if conf.cache.tls_certfile is not None:
-                _LOG.debug(
-                    'Oslo Cache TLS - cert: %s', conf.cache.tls_certfile
-                )
-                _LOG.debug('Oslo Cache TLS - key: %s', conf.cache.tls_keyfile)
                 conn_kwargs.update(
                     {
                         'ssl_certfile': conf.cache.tls_certfile,
                         'ssl_keyfile': conf.cache.tls_keyfile,
                     }
                 )
+            if conf.cache.tls_allowed_ciphers is not None:
+                conn_kwargs.update(
+                    {'ssl_ciphers': conf.cache.tls_allowed_ciphers}
+                )
+
             if conf.cache.backend == 'dogpile.cache.redis_sentinel':
-                conn_kwargs.update({'ssl': True})
                 conf_dict[f'{prefix}.arguments.connection_kwargs'] = (
                     conn_kwargs
                 )
@@ -409,7 +370,6 @@
                 "'dogpile.cache.pymemcache' backend."
             )
             raise exception.ConfigurationError(msg)
-        import pymemcache
 
         conf_dict[f'{prefix}.arguments.enable_retry_client'] = True
         conf_dict[f'{prefix}.arguments.retry_attempts'] = (
@@ -451,7 +411,7 @@
     to_str: Callable[[Any], str] = str,
 ) -> Callable[..., str]:
     warnings.warn(
-        "Use dogpile.cache.utils.function_key_generator instead",
+        "Use dogpile.cache.util.function_key_generator instead",
         category=DeprecationWarning,
         stacklevel=2,
     )
@@ -464,7 +424,7 @@
     to_str: Callable[[Any], str] = str,
 ) -> Callable[..., str]:
     warnings.warn(
-        "Use dogpile.cache.utils.kwarg_function_key_generator instead",
+        "Use dogpile.cache.util.kwarg_function_key_generator instead",
         category=DeprecationWarning,
         stacklevel=2,
     )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo_cache-4.1.1/oslo_cache/tests/functional/memcache_pool/test_cache_backend.py
 
new/oslo_cache-4.2.0/oslo_cache/tests/functional/memcache_pool/test_cache_backend.py
--- 
old/oslo_cache-4.1.1/oslo_cache/tests/functional/memcache_pool/test_cache_backend.py
        2026-02-24 11:39:39.000000000 +0100
+++ 
new/oslo_cache-4.2.0/oslo_cache/tests/functional/memcache_pool/test_cache_backend.py
        2026-05-20 11:00:49.000000000 +0200
@@ -44,7 +44,7 @@
             enabled=True,
             memcache_servers=[f'localhost:{MEMCACHED_PORT}'],
             memcache_sasl_enabled=False,
-            memcache_username='sasl_name',
-            memcache_password='sasl_pswd',
+            username='sasl_name',
+            password='sasl_pswd',
         )
         super().setUp()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo_cache-4.1.1/oslo_cache/tests/unit/test_cache_basics.py 
new/oslo_cache-4.2.0/oslo_cache/tests/unit/test_cache_basics.py
--- old/oslo_cache-4.1.1/oslo_cache/tests/unit/test_cache_basics.py     
2026-02-24 11:39:39.000000000 +0100
+++ new/oslo_cache-4.2.0/oslo_cache/tests/unit/test_cache_basics.py     
2026-05-20 11:00:49.000000000 +0200
@@ -324,9 +324,12 @@
 
         config_dict = cache._build_cache_config(self.config_fixture.conf)
         self.assertEqual(
-            'redis://localhost:6379/0',
-            config_dict['test_prefix.arguments.url'],
+            'localhost', config_dict['test_prefix.arguments.host']
         )
+        self.assertEqual(6379, config_dict['test_prefix.arguments.port'])
+        self.assertIsNone(config_dict['test_prefix.arguments.username'])
+        self.assertIsNone(config_dict['test_prefix.arguments.password'])
+        self.assertEqual(0, config_dict['test_prefix.arguments.db'])
         self.assertFalse(self.config_fixture.conf.cache.tls_enabled)
         self.assertNotIn(
             'test_prefix.arguments.connection_kwargs', config_dict
@@ -390,6 +393,7 @@
             tls_cafile='path_to_ca_file',
             tls_keyfile='path_to_key_file',
             tls_certfile='path_to_cert_file',
+            tls_allowed_ciphers='allowed_ciphers',
         )
 
         config_dict = cache._build_cache_config(self.config_fixture.conf)
@@ -397,14 +401,19 @@
         self.assertTrue(self.config_fixture.conf.cache.tls_enabled)
         self.assertIn('test_prefix.arguments.connection_kwargs', config_dict)
         self.assertEqual(
-            'rediss://localhost:6379/0',
-            config_dict['test_prefix.arguments.url'],
+            'localhost', config_dict['test_prefix.arguments.host']
         )
+        self.assertEqual(6379, config_dict['test_prefix.arguments.port'])
+        self.assertIsNone(config_dict['test_prefix.arguments.username'])
+        self.assertIsNone(config_dict['test_prefix.arguments.password'])
+        self.assertEqual(0, config_dict['test_prefix.arguments.db'])
         self.assertEqual(
             {
+                'ssl': True,
                 'ssl_ca_certs': 'path_to_ca_file',
                 'ssl_keyfile': 'path_to_key_file',
                 'ssl_certfile': 'path_to_cert_file',
+                'ssl_ciphers': 'allowed_ciphers',
             },
             config_dict['test_prefix.arguments.connection_kwargs'],
         )
@@ -421,6 +430,7 @@
             tls_cafile='path_to_ca_file',
             tls_keyfile='path_to_key_file',
             tls_certfile='path_to_cert_file',
+            tls_allowed_ciphers='allowed_ciphers',
         )
 
         config_dict = cache._build_cache_config(self.config_fixture.conf)
@@ -433,6 +443,7 @@
                 'ssl_ca_certs': 'path_to_ca_file',
                 'ssl_keyfile': 'path_to_key_file',
                 'ssl_certfile': 'path_to_cert_file',
+                'ssl_ciphers': 'allowed_ciphers',
             },
             config_dict['test_prefix.arguments.connection_kwargs'],
         )
@@ -443,6 +454,7 @@
                 'ssl_ca_certs': 'path_to_ca_file',
                 'ssl_keyfile': 'path_to_key_file',
                 'ssl_certfile': 'path_to_cert_file',
+                'ssl_ciphers': 'allowed_ciphers',
             },
             config_dict['test_prefix.arguments.sentinel_kwargs'],
         )
@@ -752,9 +764,11 @@
         )
 
         config_dict = cache._build_cache_config(self.config_fixture.conf)
-        self.assertEqual(
-            'redis://[::1]:6379/0', config_dict['test_prefix.arguments.url']
-        )
+        self.assertEqual('::1', config_dict['test_prefix.arguments.host'])
+        self.assertEqual(6379, config_dict['test_prefix.arguments.port'])
+        self.assertIsNone(config_dict['test_prefix.arguments.username'])
+        self.assertIsNone(config_dict['test_prefix.arguments.password'])
+        self.assertEqual(0, config_dict['test_prefix.arguments.db'])
         self.assertEqual(
             1.0, config_dict['test_prefix.arguments.socket_timeout']
         )
@@ -774,9 +788,11 @@
         )
 
         config_dict = cache._build_cache_config(self.config_fixture.conf)
-        self.assertEqual(
-            'redis://[::1]:6379/1', config_dict['test_prefix.arguments.url']
-        )
+        self.assertEqual('::1', config_dict['test_prefix.arguments.host'])
+        self.assertEqual(6379, config_dict['test_prefix.arguments.port'])
+        self.assertIsNone(config_dict['test_prefix.arguments.username'])
+        self.assertIsNone(config_dict['test_prefix.arguments.password'])
+        self.assertEqual(1, config_dict['test_prefix.arguments.db'])
         self.assertEqual(
             1.0, config_dict['test_prefix.arguments.socket_timeout']
         )
@@ -796,9 +812,11 @@
         )
 
         config_dict = cache._build_cache_config(self.config_fixture.conf)
-        self.assertEqual(
-            'redis://[::1]:6379/0', config_dict['test_prefix.arguments.url']
-        )
+        self.assertEqual('::1', config_dict['test_prefix.arguments.host'])
+        self.assertEqual(6379, config_dict['test_prefix.arguments.port'])
+        self.assertIsNone(config_dict['test_prefix.arguments.username'])
+        self.assertIsNone(config_dict['test_prefix.arguments.password'])
+        self.assertEqual(0, config_dict['test_prefix.arguments.db'])
         self.assertEqual(
             10.0, config_dict['test_prefix.arguments.socket_timeout']
         )
@@ -818,9 +836,11 @@
         )
 
         config_dict = cache._build_cache_config(self.config_fixture.conf)
-        self.assertEqual(
-            'redis://[::1]:6379/0', config_dict['test_prefix.arguments.url']
-        )
+        self.assertEqual('::1', config_dict['test_prefix.arguments.host'])
+        self.assertEqual(6379, config_dict['test_prefix.arguments.port'])
+        self.assertIsNone(config_dict['test_prefix.arguments.username'])
+        self.assertIsNone(config_dict['test_prefix.arguments.password'])
+        self.assertEqual(0, config_dict['test_prefix.arguments.db'])
         self.assertEqual(
             1.0, config_dict['test_prefix.arguments.socket_timeout']
         )
@@ -848,9 +868,11 @@
         )
 
         config_dict = cache._build_cache_config(self.config_fixture.conf)
-        self.assertEqual(
-            'redis://[::1]:6379/0', config_dict['test_prefix.arguments.url']
-        )
+        self.assertEqual('::1', config_dict['test_prefix.arguments.host'])
+        self.assertEqual(6379, config_dict['test_prefix.arguments.port'])
+        self.assertIsNone(config_dict['test_prefix.arguments.username'])
+        self.assertIsNone(config_dict['test_prefix.arguments.password'])
+        self.assertEqual(0, config_dict['test_prefix.arguments.db'])
         self.assertEqual(
             1.0, config_dict['test_prefix.arguments.socket_timeout']
         )
@@ -875,10 +897,13 @@
         )
 
         config_dict = cache._build_cache_config(self.config_fixture.conf)
+        self.assertEqual('::1', config_dict['test_prefix.arguments.host'])
+        self.assertEqual(6379, config_dict['test_prefix.arguments.port'])
+        self.assertIsNone(config_dict['test_prefix.arguments.username'])
         self.assertEqual(
-            'redis://:secrete@[::1]:6379/0',
-            config_dict['test_prefix.arguments.url'],
+            'secrete', config_dict['test_prefix.arguments.password']
         )
+        self.assertEqual(0, config_dict['test_prefix.arguments.db'])
 
     def test_cache_config_builder_redis_with_auth_and_user(self):
         """Validate we build a sane dogpile.cache dictionary config."""
@@ -887,15 +912,18 @@
             config_prefix='test_prefix',
             backend='dogpile.cache.redis',
             redis_server='[::1]:6379',
-            redis_username='user',
-            redis_password='secrete',
+            username='user',
+            password='secrete',
         )
 
         config_dict = cache._build_cache_config(self.config_fixture.conf)
+        self.assertEqual('::1', config_dict['test_prefix.arguments.host'])
+        self.assertEqual(6379, config_dict['test_prefix.arguments.port'])
+        self.assertEqual('user', config_dict['test_prefix.arguments.username'])
         self.assertEqual(
-            'redis://user:secrete@[::1]:6379/0',
-            config_dict['test_prefix.arguments.url'],
+            'secrete', config_dict['test_prefix.arguments.password']
         )
+        self.assertEqual(0, config_dict['test_prefix.arguments.db'])
 
     def test_cache_config_builder_redis_sentinel(self):
         """Validate we build a sane dogpile.cache dictionary config."""
@@ -1002,8 +1030,8 @@
             enabled=True,
             config_prefix='test_prefix',
             backend='dogpile.cache.redis_sentinel',
-            redis_username='user',
-            redis_password='secrete',
+            username='user',
+            password='secrete',
             redis_db=1,
             redis_sentinels=[
                 '127.0.0.1:26379',
@@ -1100,6 +1128,7 @@
             self.assertEqual(NO_VALUE, value)
 
     def test_configure_non_region_object_raises_error(self):
+        # we're intentionally calling this with the wrong type
         self.assertRaises(
             exception.ConfigurationError,
             cache.configure_cache_region,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/pyproject.toml 
new/oslo_cache-4.2.0/pyproject.toml
--- old/oslo_cache-4.1.1/pyproject.toml 2026-02-24 11:39:39.000000000 +0100
+++ new/oslo_cache-4.2.0/pyproject.toml 2026-05-20 11:00:49.000000000 +0200
@@ -9,21 +9,20 @@
     {name = "OpenStack", email = "[email protected]"},
 ]
 readme = {file = "README.rst", content-type = "text/x-rst"}
-license = {text = "Apache-2.0"}
+license = "Apache-2.0"
 dynamic = ["version", "dependencies"]
-requires-python = ">=3.10"
+requires-python = ">=3.11"
 classifiers = [
   "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.10",
   "Programming Language :: Python :: 3.11",
   "Programming Language :: Python :: 3.12",
   "Programming Language :: Python :: 3.13",
+  "Programming Language :: Python :: 3.14",
   "Typing :: Typed",
 ]
 
@@ -36,7 +35,7 @@
     "python-memcached>=1.56", # PSF
     "pymemcache>=3.5.0", # Apache-2.0
     "python-binary-memcached>=0.29.0", # MIT
-    "redis>=3.0.0", # MIT
+    "redis>=5.1.0", # MIT
 ]
 etcd3gw = [
     "etcd3gw>=0.2.0", # Apache-2.0
@@ -50,10 +49,22 @@
 "oslo_cache.dict" = "oslo_cache.backends.dictionary:DictCacheBackend"
 "oslo_cache.etcd3gw" = "oslo_cache.backends.etcd3gw:Etcd3gwCacheBackend"
 
-[tool.setuptools]
-packages = [
-    "oslo_cache"
-]
+[tool.setuptools.packages.find]
+include = ["oslo_cache"]
+
+[tool.mypy]
+python_version = "3.10"
+show_column_numbers = true
+show_error_context = true
+strict = true
+disable_error_code = ["import-untyped"]
+exclude = "(?x)(doc | releasenotes)"
+
+[[tool.mypy.overrides]]
+module = ["oslo_cache.tests.*"]
+disallow_untyped_calls = false
+disallow_untyped_defs = false
+disallow_subclassing_any = false
 
 [tool.ruff]
 line-length = 79
@@ -64,23 +75,10 @@
 
 [tool.ruff.lint]
 select = ["E4", "E5", "E7", "E9", "F", "G", "LOG", "S", "UP"]
+external = ["H"]
 ignore = [
     "S101",  # asserts are only used for type narrowing
 ]
 
 [tool.ruff.lint.per-file-ignores]
 "oslo_cache/tests/*" = ["S"]
-
-[tool.mypy]
-python_version = "3.10"
-show_column_numbers = true
-show_error_context = true
-strict = true
-ignore_missing_imports = true
-exclude = '(?x)(doc | releasenotes)'
-
-[[tool.mypy.overrides]]
-module = ["oslo_cache.tests.*"]
-disallow_untyped_calls = false
-disallow_untyped_defs = false
-disallow_subclassing_any = false
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo_cache-4.1.1/releasenotes/notes/redis-tls_allowed_ciphers-0ac7c50d83da1000.yaml
 
new/oslo_cache-4.2.0/releasenotes/notes/redis-tls_allowed_ciphers-0ac7c50d83da1000.yaml
--- 
old/oslo_cache-4.1.1/releasenotes/notes/redis-tls_allowed_ciphers-0ac7c50d83da1000.yaml
     1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo_cache-4.2.0/releasenotes/notes/redis-tls_allowed_ciphers-0ac7c50d83da1000.yaml
     2026-05-20 11:00:49.000000000 +0200
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    The following backends now support the ``[cache] tls_allowed_ciphers``
+    option. Note that using this option requires redis-py 5.1.0 or later.
+
+    - ``dogpile.cache.redis``
+    - ``dogpile.cache.redis_sentinel``
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo_cache-4.1.1/releasenotes/notes/remove-enforce_fips_mode-a998b6870ab4c245.yaml
 
new/oslo_cache-4.2.0/releasenotes/notes/remove-enforce_fips_mode-a998b6870ab4c245.yaml
--- 
old/oslo_cache-4.1.1/releasenotes/notes/remove-enforce_fips_mode-a998b6870ab4c245.yaml
      1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo_cache-4.2.0/releasenotes/notes/remove-enforce_fips_mode-a998b6870ab4c245.yaml
      2026-05-20 11:00:49.000000000 +0200
@@ -0,0 +1,4 @@
+---
+upgrade:
+  - |
+    The deprecated ``[cache] enforce_fips_mode`` option has been removed.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo_cache-4.1.1/releasenotes/notes/remove-py310-2365f57e1178d92f.yaml 
new/oslo_cache-4.2.0/releasenotes/notes/remove-py310-2365f57e1178d92f.yaml
--- old/oslo_cache-4.1.1/releasenotes/notes/remove-py310-2365f57e1178d92f.yaml  
1970-01-01 01:00:00.000000000 +0100
+++ new/oslo_cache-4.2.0/releasenotes/notes/remove-py310-2365f57e1178d92f.yaml  
2026-05-20 11:00:49.000000000 +0200
@@ -0,0 +1,5 @@
+---
+upgrade:
+  - |
+    Support for Python 3.10 has been removed. Now the minimum python version
+    supported is 3.11.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/releasenotes/source/2026.1.rst 
new/oslo_cache-4.2.0/releasenotes/source/2026.1.rst
--- old/oslo_cache-4.1.1/releasenotes/source/2026.1.rst 1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo_cache-4.2.0/releasenotes/source/2026.1.rst 2026-05-20 
11:00:49.000000000 +0200
@@ -0,0 +1,6 @@
+===========================
+2026.1 Series Release Notes
+===========================
+
+.. release-notes::
+   :branch: stable/2026.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/releasenotes/source/index.rst 
new/oslo_cache-4.2.0/releasenotes/source/index.rst
--- old/oslo_cache-4.1.1/releasenotes/source/index.rst  2026-02-24 
11:39:39.000000000 +0100
+++ new/oslo_cache-4.2.0/releasenotes/source/index.rst  2026-05-20 
11:00:49.000000000 +0200
@@ -6,6 +6,7 @@
    :maxdepth: 1
 
    unreleased
+   2026.1
    2025.2
    2025.1
    2024.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/test-requirements.txt 
new/oslo_cache-4.2.0/test-requirements.txt
--- old/oslo_cache-4.1.1/test-requirements.txt  2026-02-24 11:39:39.000000000 
+0100
+++ new/oslo_cache-4.2.0/test-requirements.txt  2026-05-20 11:00:49.000000000 
+0200
@@ -5,4 +5,4 @@
 python-binary-memcached>=0.29.0 # MIT
 python-memcached>=1.56 # PSF
 etcd3gw>=0.2.0 # Apache-2.0
-redis>=3.0.0 # MIT
+redis>=5.0.0 # MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo_cache-4.1.1/tox.ini new/oslo_cache-4.2.0/tox.ini
--- old/oslo_cache-4.1.1/tox.ini        2026-02-24 11:39:39.000000000 +0100
+++ new/oslo_cache-4.2.0/tox.ini        2026-05-20 11:00:49.000000000 +0200
@@ -1,12 +1,13 @@
 [tox]
-minversion = 3.18.0
+minversion = 4.28.0
 envlist = py3,pep8
 
 [testenv]
 allowlist_externals =
   find
+constraints =
+  
{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
 deps =
-  
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
   -r{toxinidir}/requirements.txt
   -r{toxinidir}/test-requirements.txt
 commands =
@@ -46,7 +47,6 @@
 allowlist_externals =
   rm
 deps =
-  
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
   -r{toxinidir}/doc/requirements.txt
 commands =
   rm -fr doc/build

Reply via email to