Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-oslo.utils for
openSUSE:Factory checked in at 2021-05-10 15:37:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.utils (Old)
and /work/SRC/openSUSE:Factory/.python-oslo.utils.new.2988 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.utils"
Mon May 10 15:37:42 2021 rev:24 rq:889999 version:4.8.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.utils/python-oslo.utils.changes
2020-10-26 16:18:01.611017820 +0100
+++
/work/SRC/openSUSE:Factory/.python-oslo.utils.new.2988/python-oslo.utils.changes
2021-05-10 15:39:53.625438103 +0200
@@ -1,0 +2,15 @@
+Sun May 2 17:33:34 UTC 2021 - [email protected]
+
+- update to version 4.8.0
+ - Add a ``strict`` flag allowing users to restrict validation of IPv4 format
+ - Use py3 as the default runtime for tox
+ - Update master for stable/victoria
+ - Add function to encapsule md5 for FIPS systems
+ - Use TOX_CONSTRAINTS_FILE
+ - Add Python3 wallaby unit tests
+ - Remove all usage of six library
+ - Dropping lower constraints testing
+ - Adding pre-commit
+ - Add Python3 victoria unit tests
+
+-------------------------------------------------------------------
Old:
----
oslo.utils-4.6.0.tar.gz
New:
----
oslo.utils-4.8.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-oslo.utils.spec ++++++
--- /var/tmp/diff_new_pack.f9OPWa/_old 2021-05-10 15:39:54.125436057 +0200
+++ /var/tmp/diff_new_pack.f9OPWa/_new 2021-05-10 15:39:54.129436042 +0200
@@ -1,7 +1,7 @@
#
# spec file for package python-oslo.utils
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,13 +17,13 @@
Name: python-oslo.utils
-Version: 4.6.0
+Version: 4.8.0
Release: 0
Summary: OpenStack Utils Library
License: Apache-2.0
Group: Development/Languages/Python
-URL: https://launchpad.net/oslo.utils
-Source0:
https://files.pythonhosted.org/packages/source/o/oslo.utils/oslo.utils-4.6.0.tar.gz
+URL: https://docs.openstack.org/oslo.utils
+Source0:
https://files.pythonhosted.org/packages/source/o/oslo.utils/oslo.utils-4.8.0.tar.gz
BuildRequires: openstack-macros
BuildRequires: python3-Babel
BuildRequires: python3-ddt
@@ -50,7 +50,6 @@
%package -n python3-oslo.utils
Summary: OpenStack Utils Library
-Group: Development/Languages/Python
Requires: python3-debtcollector >= 1.2.0
Requires: python3-iso8601 >= 0.1.11
Requires: python3-netaddr >= 0.7.18
@@ -58,7 +57,7 @@
Requires: python3-oslo.i18n >= 3.15.3
Requires: python3-pyparsing >= 2.1.0
Requires: python3-pytz >= 2013.6
-Requires: python3-six >= 1.10.0
+Requires: python3-six
%description -n python3-oslo.utils
The oslo.utils library provides support for common utility type functions,
@@ -68,7 +67,6 @@
%package -n python-oslo.utils-doc
Summary: Documentation for OpenStack utils library
-Group: Development/Languages/Python
BuildRequires: python3-Sphinx
BuildRequires: python3-openstackdocstheme
@@ -76,7 +74,7 @@
Documentation for OpenStack utils library.
%prep
-%autosetup -p1 -n oslo.utils-4.6.0
+%autosetup -p1 -n oslo.utils-4.8.0
%py_req_cleanup
@@ -87,7 +85,7 @@
%py3_install
# generate html docs
-PBR_VERSION=4.6.0 %sphinx_build -b html doc/source doc/build/html
+PBR_VERSION=4.8.0 %sphinx_build -b html doc/source doc/build/html
# remove the sphinx-build leftovers
rm -rf doc/build/html/.{doctrees,buildinfo}
++++++ _service ++++++
--- /var/tmp/diff_new_pack.f9OPWa/_old 2021-05-10 15:39:54.157435926 +0200
+++ /var/tmp/diff_new_pack.f9OPWa/_new 2021-05-10 15:39:54.157435926 +0200
@@ -1,8 +1,8 @@
<services>
<service mode="disabled" name="renderspec">
- <param
name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/victoria/openstack/oslo.utils/oslo.utils.spec.j2</param>
+ <param
name="input-template">https://opendev.org/openstack/rpm-packaging/raw/branch/stable/wallaby/openstack/oslo.utils/oslo.utils.spec.j2</param>
<param name="output-name">python-oslo.utils.spec</param>
- <param
name="requirements">https://opendev.org/openstack/oslo.utils/raw/branch/stable/victoria/requirements.txt</param>
+ <param
name="requirements">https://opendev.org/openstack/oslo.utils/raw/branch/stable/wallaby/requirements.txt</param>
<param name="changelog-email">[email protected]</param>
<param name="changelog-provider">gh,openstack,oslo.utils</param>
</service>
++++++ oslo.utils-4.6.0.tar.gz -> oslo.utils-4.8.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/.pre-commit-config.yaml
new/oslo.utils-4.8.0/.pre-commit-config.yaml
--- old/oslo.utils-4.6.0/.pre-commit-config.yaml 1970-01-01
01:00:00.000000000 +0100
+++ new/oslo.utils-4.8.0/.pre-commit-config.yaml 2021-02-16
10:01:47.000000000 +0100
@@ -0,0 +1,35 @@
+# We from the Oslo project decided to pin repos based on the
+# commit hash instead of the version tag to prevend arbitrary
+# code from running in developer's machines. To update to a
+# newer version, run `pre-commit autoupdate` and then replace
+# the newer versions with their commit hash.
+
+default_language_version:
+ python: python3
+
+repos:
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: ebc15addedad713c86ef18ae9632c88e187dd0af # v3.1.0
+ hooks:
+ - id: trailing-whitespace
+ # Replaces or checks mixed line ending
+ - id: mixed-line-ending
+ args: ['--fix', 'lf']
+ exclude: '.*\.(svg)$'
+ # Forbid files which have a UTF-8 byte-order marker
+ - id: check-byte-order-marker
+ # Checks that non-binary executables have a proper shebang
+ - id: check-executables-have-shebangs
+ # Check for files that contain merge conflict strings.
+ - id: check-merge-conflict
+ # Check for debugger imports and py37+ breakpoint()
+ # calls in python source
+ - id: debug-statements
+ - id: check-yaml
+ files: .*\.(yaml|yml)$
+ - repo: https://gitlab.com/pycqa/flake8
+ rev: 181bb46098dddf7e2d45319ea654b4b4d58c2840 # 3.8.3
+ hooks:
+ - id: flake8
+ additional_dependencies:
+ - hacking>=3.0.1,<3.1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/.zuul.yaml
new/oslo.utils-4.8.0/.zuul.yaml
--- old/oslo.utils-4.6.0/.zuul.yaml 2020-09-11 21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/.zuul.yaml 2021-02-16 10:01:47.000000000 +0100
@@ -2,8 +2,7 @@
templates:
- check-requirements
- lib-forward-testing-python3
- - openstack-lower-constraints-jobs
- - openstack-python3-ussuri-jobs
+ - openstack-python3-wallaby-jobs
- periodic-stable-jobs
- publish-openstack-docs-pti
- release-notes-jobs-python3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/AUTHORS new/oslo.utils-4.8.0/AUTHORS
--- old/oslo.utils-4.6.0/AUTHORS 2020-09-11 21:24:01.000000000 +0200
+++ new/oslo.utils-4.8.0/AUTHORS 2021-02-16 10:02:17.000000000 +0100
@@ -1,6 +1,7 @@
Abhishek Chanda <[email protected]>
Abhishek Kekane <[email protected]>
Adam Harwell <[email protected]>
+Ade Lee <[email protected]>
Akihiro Motoki <[email protected]>
Akihiro Motoki <[email protected]>
Albert White <[email protected]>
@@ -153,6 +154,7 @@
dharmendra <[email protected]>
ekudryashova <[email protected]>
gecong1973 <[email protected]>
+haixin <[email protected]>
hnyang <[email protected]>
howardlee <[email protected]>
jacky06 <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/ChangeLog
new/oslo.utils-4.8.0/ChangeLog
--- old/oslo.utils-4.6.0/ChangeLog 2020-09-11 21:24:00.000000000 +0200
+++ new/oslo.utils-4.8.0/ChangeLog 2021-02-16 10:02:17.000000000 +0100
@@ -1,10 +1,29 @@
CHANGES
=======
+4.8.0
+-----
+
+* Add a \`\`strict\`\` flag allowing users to restrict validation of IPv4
format
+* Use TOX\_CONSTRAINTS\_FILE
+* Dropping lower constraints testing
+* Use TOX\_CONSTRAINTS\_FILE
+* Use py3 as the default runtime for tox
+* Remove all usage of six library
+
+4.7.0
+-----
+
+* Add function to encapsule md5 for FIPS systems
+* Add Python3 wallaby unit tests
+* Update master for stable/victoria
+* Adding pre-commit
+
4.6.0
-----
* [goal] Migrate testing to ubuntu focal
+* Add Python3 victoria unit tests
* Fix is\_same\_callback() testing for python3.8
4.5.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/PKG-INFO
new/oslo.utils-4.8.0/PKG-INFO
--- old/oslo.utils-4.6.0/PKG-INFO 2020-09-11 21:24:01.000000000 +0200
+++ new/oslo.utils-4.8.0/PKG-INFO 2021-02-16 10:02:17.815975400 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: oslo.utils
-Version: 4.6.0
+Version: 4.8.0
Summary: Oslo Utility library
Home-page: https://docs.openstack.org/oslo.utils/latest/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/doc/source/conf.py
new/oslo.utils-4.8.0/doc/source/conf.py
--- old/oslo.utils-4.6.0/doc/source/conf.py 2020-09-11 21:22:56.000000000
+0200
+++ new/oslo.utils-4.8.0/doc/source/conf.py 2021-02-16 10:01:47.000000000
+0100
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+# Copyright (C) 2020 Red Hat, Inc.
+#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
@@ -75,6 +77,3 @@
u'%s Documentation' % project,
u'OpenStack Foundation', 'manual'),
]
-
-# Example configuration for intersphinx: refer to the Python standard library.
-#intersphinx_mapping = {'http://docs.python.org/': None}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/lower-constraints.txt
new/oslo.utils-4.8.0/lower-constraints.txt
--- old/oslo.utils-4.6.0/lower-constraints.txt 2020-09-11 21:22:56.000000000
+0200
+++ new/oslo.utils-4.8.0/lower-constraints.txt 2021-02-16 10:01:47.000000000
+0100
@@ -29,7 +29,6 @@
requests==2.14.2
requestsexceptions==1.2.0
rfc3986==0.3.1
-six==1.10.0
smmap==0.9.0
stestr==2.0.0
stevedore==1.20.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo.utils.egg-info/PKG-INFO
new/oslo.utils-4.8.0/oslo.utils.egg-info/PKG-INFO
--- old/oslo.utils-4.6.0/oslo.utils.egg-info/PKG-INFO 2020-09-11
21:24:01.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo.utils.egg-info/PKG-INFO 2021-02-16
10:02:17.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.2
Name: oslo.utils
-Version: 4.6.0
+Version: 4.8.0
Summary: Oslo Utility library
Home-page: https://docs.openstack.org/oslo.utils/latest/
Author: OpenStack
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo.utils.egg-info/SOURCES.txt
new/oslo.utils-4.8.0/oslo.utils.egg-info/SOURCES.txt
--- old/oslo.utils-4.6.0/oslo.utils.egg-info/SOURCES.txt 2020-09-11
21:24:01.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo.utils.egg-info/SOURCES.txt 2021-02-16
10:02:17.000000000 +0100
@@ -1,5 +1,6 @@
.coveragerc
.mailmap
+.pre-commit-config.yaml
.stestr.conf
.zuul.yaml
AUTHORS
@@ -93,8 +94,10 @@
oslo_utils/tests/fake/__init__.py
oslo_utils/tests/fake/v2/__init__.py
oslo_utils/tests/fake/v2/dummpy.py
+releasenotes/notes/add-md5-wrapper-7bf81c2464a7a224.yaml
releasenotes/notes/add-methods-for-json-yaml-file-check-746dca0a11c2f9c9.yaml
releasenotes/notes/add-reno-350f5f34f794fb5e.yaml
+releasenotes/notes/allow-to-convert-ipv4-address-from-text-to-binary-8c46ad2d9989e8c5.yaml
releasenotes/notes/bump-up-port-range-f774a16336158339.yaml
releasenotes/notes/drop-python27-support-f97f680651693b47.yaml
releasenotes/notes/image-utils-handle-scientific-notation-6f65d46e9c8c8f8c.yaml
@@ -112,6 +115,7 @@
releasenotes/source/train.rst
releasenotes/source/unreleased.rst
releasenotes/source/ussuri.rst
+releasenotes/source/victoria.rst
releasenotes/source/_static/.placeholder
releasenotes/source/_templates/.placeholder
releasenotes/source/locale/en_GB/LC_MESSAGES/releasenotes.po
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo.utils.egg-info/pbr.json
new/oslo.utils-4.8.0/oslo.utils.egg-info/pbr.json
--- old/oslo.utils-4.6.0/oslo.utils.egg-info/pbr.json 2020-09-11
21:24:01.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo.utils.egg-info/pbr.json 2021-02-16
10:02:17.000000000 +0100
@@ -1 +1 @@
-{"git_version": "91497da", "is_release": true}
\ No newline at end of file
+{"git_version": "3288539", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo.utils.egg-info/requires.txt
new/oslo.utils-4.8.0/oslo.utils.egg-info/requires.txt
--- old/oslo.utils-4.6.0/oslo.utils.egg-info/requires.txt 2020-09-11
21:24:01.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo.utils.egg-info/requires.txt 2021-02-16
10:02:17.000000000 +0100
@@ -7,4 +7,3 @@
pbr!=2.1.0,>=2.0.0
pyparsing>=2.1.0
pytz>=2013.6
-six>=1.10.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/dictutils.py
new/oslo.utils-4.8.0/oslo_utils/dictutils.py
--- old/oslo.utils-4.6.0/oslo_utils/dictutils.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/dictutils.py 2021-02-16
10:01:47.000000000 +0100
@@ -13,8 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-import six
-
def flatten_dict_to_keypairs(d, separator=':'):
"""Generator that produces sequence of keypairs for nested dictionaries.
@@ -22,7 +20,7 @@
:param d: dictionaries which may be nested
:param separator: symbol between names
"""
- for name, value in sorted(six.iteritems(d)):
+ for name, value in sorted(iter(d.items())):
if isinstance(value, dict):
for subname, subvalue in flatten_dict_to_keypairs(value,
separator):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/encodeutils.py
new/oslo.utils-4.8.0/oslo_utils/encodeutils.py
--- old/oslo.utils-4.6.0/oslo_utils/encodeutils.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/encodeutils.py 2021-02-16
10:01:47.000000000 +0100
@@ -15,8 +15,6 @@
import sys
-import six
-
# NOTE(blk-u): This provides a symbol that can be overridden just for this
# module during testing. sys.getfilesystemencoding() is called by coverage so
@@ -35,10 +33,10 @@
representation of it.
:raises TypeError: If text is not an instance of str
"""
- if not isinstance(text, (six.string_types, six.binary_type)):
+ if not isinstance(text, (str, bytes)):
raise TypeError("%s can't be decoded" % type(text))
- if isinstance(text, six.text_type):
+ if isinstance(text, str):
return text
if not incoming:
@@ -81,7 +79,7 @@
See also to_utf8() function which is simpler and don't depend on
the locale encoding.
"""
- if not isinstance(text, (six.string_types, six.binary_type)):
+ if not isinstance(text, (str, bytes)):
raise TypeError("%s can't be encoded" % type(text))
if not incoming:
@@ -94,7 +92,7 @@
if hasattr(encoding, 'lower'):
encoding = encoding.lower()
- if isinstance(text, six.text_type):
+ if isinstance(text, str):
return text.encode(encoding, errors)
elif text and encoding != incoming:
# Decode text before encoding it with `encoding`
@@ -111,9 +109,9 @@
.. versionadded:: 3.5
"""
- if isinstance(text, six.binary_type):
+ if isinstance(text, bytes):
return text
- elif isinstance(text, six.text_type):
+ elif isinstance(text, str):
return text.encode('utf-8')
else:
raise TypeError("bytes or Unicode expected, got %s"
@@ -133,24 +131,6 @@
.. versionadded:: 1.6
"""
msg = None
- if six.PY2:
- # First try by calling the unicode type constructor. We should try
- # unicode() before exc.__unicode__() because subclasses of unicode can
- # be easily casted to unicode, whereas they have no __unicode__()
- # method.
- try:
- msg = unicode(exc) # NOQA
- except UnicodeError:
- # unicode(exc) fail with UnicodeDecodeError on Python 2 if
- # exc.__unicode__() or exc.__str__() returns a bytes string not
- # decodable from the default encoding (ASCII)
- if hasattr(exc, '__unicode__'):
- # Call directly the __unicode__() method to avoid
- # the implicit decoding from the default encoding
- try:
- msg = exc.__unicode__()
- except UnicodeError: # nosec
- pass
if msg is None:
# Don't call directly str(exc), because it fails with
@@ -158,7 +138,7 @@
# string not encodable to the default encoding (ASCII)
msg = exc.__str__()
- if isinstance(msg, six.text_type):
+ if isinstance(msg, str):
# This should be the default path on Python 3 and an *optional* path
# on Python 2 (if for some reason the exception message was already
# in unicode instead of the more typical bytes string); so avoid
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/excutils.py
new/oslo.utils-4.8.0/oslo_utils/excutils.py
--- old/oslo.utils-4.6.0/oslo_utils/excutils.py 2020-09-11 21:22:56.000000000
+0200
+++ new/oslo.utils-4.8.0/oslo_utils/excutils.py 2021-02-16 10:01:47.000000000
+0100
@@ -18,14 +18,13 @@
"""
import functools
+import io
import logging
import os
import sys
import time
import traceback
-import six
-
from oslo_utils import encodeutils
from oslo_utils import reflection
@@ -70,7 +69,7 @@
if indent < 0:
raise ValueError("Provided 'indent' must be greater than"
" or equal to zero instead of %s" % indent)
- buf = six.StringIO()
+ buf = io.StringIO()
if show_root_class:
buf.write(reflection.get_class_name(self, fully_qualified=False))
buf.write(": ")
@@ -140,7 +139,7 @@
# Leave no references around (especially with regards to
# tracebacks and any variables that it retains internally).
del(exc_type, exc, exc_tb)
- six.raise_from(exc_cls(message, *args, **kwargs), kwargs.get('cause'))
+ raise exc_cls(message, *args, **kwargs) from kwargs.get('cause')
class save_and_reraise_exception(object):
@@ -193,7 +192,15 @@
if self.type_ is None and self.value is None:
raise RuntimeError("There is no (currently) captured exception"
" to force the reraising of")
- six.reraise(self.type_, self.value, self.tb)
+ try:
+ if self.value is None:
+ self.value = self.type_()
+ if self.value.__traceback__ is not self.tb:
+ raise self.value.with_traceback(self.tb)
+ raise self.value
+ finally:
+ self.value = None
+ self.tb = None
def capture(self, check=True):
(type_, value, tb) = sys.exc_info()
@@ -240,7 +247,7 @@
retry_delay = max(0.0, float(kwargs.get('retry_delay', 1.0)))
same_log_delay = max(0.0, float(kwargs.get('same_log_delay', 60.0)))
- @six.wraps(infunc)
+ @functools.wraps(infunc)
def wrapper(*args, **kwargs):
last_exc_message = None
same_failure_count = 0
@@ -339,7 +346,15 @@
try:
if not self._should_ignore_ex(ex):
if exc_val is ex:
- six.reraise(exc_type, exc_val, traceback)
+ try:
+ if exc_val is None:
+ exc_val = exc_type()
+ if exc_val.__traceback__ is not traceback:
+ raise exc_val.with_traceback(traceback)
+ raise exc_val
+ finally:
+ exc_val = None
+ traceback = None
else:
raise ex
finally:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/netutils.py
new/oslo.utils-4.8.0/oslo_utils/netutils.py
--- old/oslo.utils-4.6.0/oslo_utils/netutils.py 2020-09-11 21:22:56.000000000
+0200
+++ new/oslo.utils-4.8.0/oslo_utils/netutils.py 2021-02-16 10:01:47.000000000
+0100
@@ -21,11 +21,11 @@
import os
import re
import socket
+from urllib import parse
import netaddr
+from netaddr.core import INET_PTON
import netifaces
-import six
-from six.moves.urllib import parse
from oslo_utils._i18n import _
@@ -82,17 +82,43 @@
return (host, None if port is None else int(port))
-def is_valid_ipv4(address):
+def is_valid_ipv4(address, strict=None):
"""Verify that address represents a valid IPv4 address.
:param address: Value to verify
:type address: string
+ :param strict: flag allowing users to restrict validation
+ to IP addresses in presentation format (``a.b.c.d``) as opposed to
+ address format (``a.b.c.d``, ``a.b.c``, ``a.b``, ``a``).
+ :type flags: bool
:returns: bool
.. versionadded:: 1.1
- """
+ .. versionchanged:: 4.8.0
+ Allow to restrict validation to IP addresses in presentation format
+ (``a.b.c.d``) as opposed to address format
+ (``a.b.c.d``, ``a.b.c``, ``a.b``, ``a``).
+ """
+ if strict is not None:
+ flag = INET_PTON if strict else 0
+ try:
+ return netaddr.valid_ipv4(address, flags=flag)
+ except netaddr.AddrFormatError:
+ return False
+
+ # non strict mode
try:
- return netaddr.valid_ipv4(address)
+ if netaddr.valid_ipv4(address, flags=INET_PTON):
+ return True
+ else:
+ if netaddr.valid_ipv4(address):
+ LOG.warn(
+ 'Converting in non strict mode is deprecated. '
+ 'You should pass strict=False if you want to '
+ 'preserve legacy behavior')
+ return True
+ else:
+ return False
except netaddr.AddrFormatError:
return False
@@ -284,7 +310,7 @@
.. versionadded:: 3.17
"""
m = "[0-9a-f]{2}(:[0-9a-f]{2}){5}$"
- return (isinstance(address, six.string_types) and
+ return (isinstance(address, str) and
re.match(m, address.lower()))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/reflection.py
new/oslo.utils-4.8.0/oslo_utils/reflection.py
--- old/oslo.utils-4.6.0/oslo_utils/reflection.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/reflection.py 2021-02-16
10:01:47.000000000 +0100
@@ -22,10 +22,9 @@
import inspect
import logging
+import operator
import types
-import six
-
try:
_TYPE_TYPE = types.TypeType
except AttributeError:
@@ -40,16 +39,9 @@
LOG = logging.getLogger(__name__)
-if six.PY3:
- Parameter = inspect.Parameter
- Signature = inspect.Signature
- get_signature = inspect.signature
-else:
- # Provide an equivalent but use funcsigs instead...
- import funcsigs
- Parameter = funcsigs.Parameter
- Signature = funcsigs.Signature
- get_signature = funcsigs.signature
+Parameter = inspect.Parameter
+Signature = inspect.Signature
+get_signature = inspect.signature
def get_members(obj, exclude_hidden=True):
@@ -85,7 +77,7 @@
if inspect.ismethod(obj):
obj = get_method_self(obj)
- if not isinstance(obj, six.class_types):
+ if not isinstance(obj, type):
obj = type(obj)
if truncate_builtins:
try:
@@ -109,7 +101,7 @@
in order of method resolution (mro). If up_to parameter is provided,
only name of classes that are sublcasses to that class are returned.
"""
- if not isinstance(obj, six.class_types):
+ if not isinstance(obj, type):
obj = type(obj)
for cls in obj.mro():
if issubclass(cls, up_to):
@@ -126,7 +118,7 @@
method_self = get_method_self(function)
if method_self is not None:
# This is a bound method.
- if isinstance(method_self, six.class_types):
+ if isinstance(method_self, type):
# This is a bound class method.
im_class = method_self
else:
@@ -163,7 +155,7 @@
if not inspect.ismethod(method):
return None
try:
- return six.get_method_self(method)
+ return operator.attrgetter("__self__")(method)
except AttributeError:
return None
@@ -203,8 +195,8 @@
# another object if the objects have __eq__ methods that return true
# (when in fact it is a different bound method). Python u so crazy!
try:
- self1 = six.get_method_self(callback1)
- self2 = six.get_method_self(callback2)
+ self1 = operator.attrgetter("__self__")(callback1)
+ self2 = operator.attrgetter("__self__")(callback2)
return self1 is self2
except AttributeError: # nosec
pass
@@ -231,8 +223,8 @@
are not included into output.
"""
sig = get_signature(function)
- function_args = list(six.iterkeys(sig.parameters))
- for param_name, p in six.iteritems(sig.parameters):
+ function_args = list(iter(sig.parameters.keys()))
+ for param_name, p in iter(sig.parameters.items()):
if (p.kind in (Parameter.VAR_POSITIONAL, Parameter.VAR_KEYWORD) or
(required_only and p.default is not Parameter.empty)):
function_args.remove(param_name)
@@ -243,4 +235,4 @@
"""Returns ``True`` if function accepts kwargs otherwise ``False``."""
sig = get_signature(function)
return any(p.kind == Parameter.VAR_KEYWORD
- for p in six.itervalues(sig.parameters))
+ for p in iter(sig.parameters.values()))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/secretutils.py
new/oslo.utils-4.8.0/oslo_utils/secretutils.py
--- old/oslo.utils-4.6.0/oslo_utils/secretutils.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/secretutils.py 2021-02-16
10:01:47.000000000 +0100
@@ -18,6 +18,7 @@
.. versionadded:: 3.5
"""
+import hashlib
import hmac
@@ -44,3 +45,23 @@
constant_time_compare = hmac.compare_digest
except AttributeError:
constant_time_compare = _constant_time_compare
+
+try:
+ _ = hashlib.md5(usedforsecurity=False) # nosec
+
+ def md5(string=b'', usedforsecurity=True):
+ """Return an md5 hashlib object using usedforsecurity parameter
+
+ For python distributions that support the usedforsecurity keyword
+ parameter, this passes the parameter through as expected.
+ See https://bugs.python.org/issue9216
+ """
+ return hashlib.md5(string, usedforsecurity=usedforsecurity) # nosec
+except TypeError:
+ def md5(string=b'', usedforsecurity=True):
+ """Return an md5 hashlib object without usedforsecurity parameter
+
+ For python distributions that do not yet support this keyword
+ parameter, we drop the parameter
+ """
+ return hashlib.md5(string) # nosec
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/strutils.py
new/oslo.utils-4.8.0/oslo_utils/strutils.py
--- old/oslo.utils-4.6.0/oslo_utils/strutils.py 2020-09-11 21:22:56.000000000
+0200
+++ new/oslo.utils-4.8.0/oslo_utils/strutils.py 2021-02-16 10:01:47.000000000
+0100
@@ -21,10 +21,9 @@
import math
import re
import unicodedata
+import urllib
import pyparsing as pp
-import six
-from six.moves import urllib
from oslo_utils._i18n import _
from oslo_utils import encodeutils
@@ -138,8 +137,8 @@
"""
if isinstance(subject, bool):
return subject
- if not isinstance(subject, six.string_types):
- subject = six.text_type(subject)
+ if not isinstance(subject, str):
+ subject = str(subject)
lowered = subject.strip().lower()
@@ -324,7 +323,7 @@
"""
try:
- message = six.text_type(message)
+ message = str(message)
except UnicodeDecodeError: # nosec
# NOTE(jecarey): Temporary fix to handle cases where message is a
# byte string. A better solution will be provided in Kilo.
@@ -411,7 +410,7 @@
# NOTE(jlvillal): Check to see if anything in the dictionary 'key'
# contains any key specified in _SANITIZE_KEYS.
k_matched = False
- if isinstance(k, six.string_types):
+ if isinstance(k, str):
for sani_key in _SANITIZE_KEYS:
if sani_key in k.lower():
out[k] = secret
@@ -420,7 +419,7 @@
if not k_matched:
# We did not find a match for the key name in the
# _SANITIZE_KEYS, so we fall through to here
- if isinstance(v, six.string_types):
+ if isinstance(v, str):
out[k] = mask_password(v, secret=secret)
else:
# Just leave it alone.
@@ -438,7 +437,7 @@
.. versionadded:: 1.1
"""
try:
- return six.text_type(int(val)) == six.text_type(val)
+ return str(int(val)) == str(val)
except (TypeError, ValueError):
return False
@@ -457,7 +456,7 @@
if name is None:
name = value
- if not isinstance(value, six.string_types):
+ if not isinstance(value, str):
msg = _("%s is not a string or unicode") % name
raise TypeError(msg)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.utils-4.6.0/oslo_utils/tests/test_eventletutils.py
new/oslo.utils-4.8.0/oslo_utils/tests/test_eventletutils.py
--- old/oslo.utils-4.6.0/oslo_utils/tests/test_eventletutils.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/tests/test_eventletutils.py 2021-02-16
10:01:47.000000000 +0100
@@ -19,7 +19,6 @@
import eventlet
from eventlet import greenthread
from oslotest import base as test_base
-import six
from oslo_utils import eventletutils
@@ -44,7 +43,7 @@
self.assertEqual(1, len(capture))
w = capture[0]
self.assertEqual(RuntimeWarning, w.category)
- self.assertIn('os', six.text_type(w.message))
+ self.assertIn('os', str(w.message))
@mock.patch("oslo_utils.eventletutils._patcher")
def test_warning_not_patched_none_provided(self, mock_patcher):
@@ -57,7 +56,7 @@
w = capture[0]
self.assertEqual(RuntimeWarning, w.category)
for m in eventletutils._ALL_PATCH:
- self.assertIn(m, six.text_type(w.message))
+ self.assertIn(m, str(w.message))
@mock.patch("oslo_utils.eventletutils._patcher")
def test_warning_not_patched_all(self, mock_patcher):
@@ -70,7 +69,7 @@
w = capture[0]
self.assertEqual(RuntimeWarning, w.category)
for m in eventletutils._ALL_PATCH:
- self.assertIn(m, six.text_type(w.message))
+ self.assertIn(m, str(w.message))
@mock.patch("oslo_utils.eventletutils._patcher")
def test_no_warning(self, mock_patcher):
@@ -118,7 +117,7 @@
w = capture[0]
self.assertEqual(RuntimeWarning, w.category)
for m in ['os', 'thread']:
- self.assertNotIn(m, six.text_type(w.message))
+ self.assertNotIn(m, str(w.message))
def test_invalid_patch_check(self):
self.assertRaises(ValueError,
@@ -133,10 +132,7 @@
self.assertIsInstance(e_event, eventletutils.EventletEvent)
t_event = eventletutils.Event()
- if six.PY3:
- t_event_cls = threading.Event
- else:
- t_event_cls = threading._Event
+ t_event_cls = threading.Event
self.assertIsInstance(t_event, t_event_cls)
public_methods = [m for m in dir(t_event) if not m.startswith("_") and
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/tests/test_fileutils.py
new/oslo.utils-4.8.0/oslo_utils/tests/test_fileutils.py
--- old/oslo.utils-4.6.0/oslo_utils/tests/test_fileutils.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/tests/test_fileutils.py 2021-02-16
10:01:47.000000000 +0100
@@ -26,7 +26,6 @@
import yaml
from oslotest import base as test_base
-import six
from oslo_utils import fileutils
@@ -131,7 +130,7 @@
def check_file_content(self, path):
with open(path, 'r') as fd:
ans = fd.read()
- self.assertEqual(self.content, six.b(ans))
+ self.assertEqual(self.content, ans.encode("latin-1"))
def test_file_without_path_and_suffix(self):
res = fileutils.write_to_tempfile(self.content)
@@ -204,7 +203,7 @@
def check_file_content(self, content, path):
with open(path, 'r') as fd:
ans = fd.read()
- self.assertEqual(content, six.b(ans))
+ self.assertEqual(content, ans.encode("latin-1"))
def test_compute_checksum_default_algorithm(self):
path = fileutils.write_to_tempfile(self.content)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/tests/test_fixture.py
new/oslo.utils-4.8.0/oslo_utils/tests/test_fixture.py
--- old/oslo.utils-4.6.0/oslo_utils/tests/test_fixture.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/tests/test_fixture.py 2021-02-16
10:01:47.000000000 +0100
@@ -17,7 +17,6 @@
import datetime
from oslotest import base as test_base
-import six
from oslo_utils import fixture
from oslo_utils.fixture import uuidsentinel as uuids
@@ -81,4 +80,4 @@
def test_with_underline_prefix(self):
ex = self.assertRaises(AttributeError, getattr, uuids, '_foo')
- self.assertIn("Sentinels must not start with _", six.text_type(ex))
+ self.assertIn("Sentinels must not start with _", str(ex))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/tests/test_fnmatch.py
new/oslo.utils-4.8.0/oslo_utils/tests/test_fnmatch.py
--- old/oslo.utils-4.6.0/oslo_utils/tests/test_fnmatch.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/tests/test_fnmatch.py 2021-02-16
10:01:47.000000000 +0100
@@ -13,11 +13,9 @@
import fnmatch as standard_fnmatch
import ntpath
import posixpath
-import sys
from unittest import mock
from oslotest import base
-import six
fnmatch = None
@@ -48,12 +46,3 @@
fnmatch = standard_fnmatch
self._test_fnmatch_posix_nt()
-
- with mock.patch.object(sys, 'version_info', new=(2, 7, 11)):
- from oslo_utils import fnmatch as oslo_fnmatch
- fnmatch = oslo_fnmatch
- self._test_fnmatch_posix_nt()
-
- with mock.patch.object(sys, 'version_info', new=(2, 7, 0)):
- six.moves.reload_module(oslo_fnmatch)
- self._test_fnmatch_posix_nt()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/tests/test_netutils.py
new/oslo.utils-4.8.0/oslo_utils/tests/test_netutils.py
--- old/oslo.utils-4.6.0/oslo_utils/tests/test_netutils.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/tests/test_netutils.py 2021-02-16
10:01:47.000000000 +0100
@@ -14,13 +14,13 @@
# under the License.
import contextlib
+import io
import socket
from unittest import mock
import netaddr
import netifaces
from oslotest import base as test_base
-import six
from oslo_utils import netutils
@@ -154,13 +154,52 @@
netutils.set_tcp_keepalive(mock_sock, False)
self.assertEqual(1, len(mock_sock.mock_calls))
- def test_is_valid_ipv4(self):
+ @mock.patch.object(netutils, 'LOG', autospec=True)
+ def test_is_valid_ipv4(self, mock_log):
+ expected_log = 'Converting in non strict mode is deprecated. ' \
+ 'You should pass strict=False if you want to preserve ' \
+ 'legacy behavior'
self.assertTrue(netutils.is_valid_ipv4('42.42.42.42'))
self.assertFalse(netutils.is_valid_ipv4('-1.11.11.11'))
self.assertFalse(netutils.is_valid_ipv4(''))
+ self.assertTrue(netutils.is_valid_ipv4('10'))
+ mock_log.warn.assert_called_with(expected_log)
+ mock_log.reset_mock()
+ self.assertTrue(netutils.is_valid_ipv4('10.10'))
+ mock_log.warn.assert_called_with(expected_log)
+ mock_log.reset_mock()
+ self.assertTrue(netutils.is_valid_ipv4('10.10.10'))
+ mock_log.warn.assert_called_with(expected_log)
+ mock_log.reset_mock()
+ self.assertTrue(netutils.is_valid_ipv4('10.10.10.10'))
+ mock_log.warn.assert_not_called()
+ mock_log.reset_mock()
+ self.assertFalse(
+ netutils.is_valid_ipv4('10', strict=True)
+ )
+ self.assertFalse(
+ netutils.is_valid_ipv4('10.10', strict=True)
+ )
+ self.assertFalse(
+ netutils.is_valid_ipv4('10.10.10', strict=True)
+ )
+ mock_log.warn.assert_not_called()
+ mock_log.reset_mock()
+ self.assertTrue(
+ netutils.is_valid_ipv4('10', strict=False)
+ )
+ self.assertTrue(
+ netutils.is_valid_ipv4('10.10', strict=False)
+ )
+ self.assertTrue(
+ netutils.is_valid_ipv4('10.10.10', strict=False)
+ )
+ mock_log.warn.assert_not_called()
+ mock_log.reset_mock()
+
def test_is_valid_ipv6(self):
self.assertTrue(netutils.is_valid_ipv6('::1'))
@@ -393,7 +432,7 @@
@contextlib.contextmanager
def mock_file_content(content):
# Allows StringIO to act like a context manager-enabled file.
- yield six.StringIO(content)
+ yield io.StringIO(content)
class TestIsIPv6Enabled(test_base.BaseTestCase):
@@ -407,19 +446,19 @@
self.addCleanup(reset_detection_flag)
@mock.patch('os.path.exists', return_value=True)
- @mock.patch('six.moves.builtins.open', return_value=mock_file_content('0'))
+ @mock.patch('builtins.open', return_value=mock_file_content('0'))
def test_enabled(self, mock_open, exists):
enabled = netutils.is_ipv6_enabled()
self.assertTrue(enabled)
@mock.patch('os.path.exists', return_value=True)
- @mock.patch('six.moves.builtins.open', return_value=mock_file_content('1'))
+ @mock.patch('builtins.open', return_value=mock_file_content('1'))
def test_disabled(self, mock_open, exists):
enabled = netutils.is_ipv6_enabled()
self.assertFalse(enabled)
@mock.patch('os.path.exists', return_value=False)
- @mock.patch('six.moves.builtins.open',
+ @mock.patch('builtins.open',
side_effect=AssertionError('should not read'))
def test_disabled_non_exists(self, mock_open, exists):
enabled = netutils.is_ipv6_enabled()
@@ -429,14 +468,14 @@
def test_memoize_enabled(self, exists):
# Reset the flag to appear that we haven't looked for it yet.
netutils._IS_IPV6_ENABLED = None
- with mock.patch('six.moves.builtins.open',
+ with mock.patch('builtins.open',
return_value=mock_file_content('0')) as mock_open:
enabled = netutils.is_ipv6_enabled()
self.assertTrue(mock_open.called)
self.assertTrue(netutils._IS_IPV6_ENABLED)
self.assertTrue(enabled)
# The second call should not use open again
- with mock.patch('six.moves.builtins.open',
+ with mock.patch('builtins.open',
side_effect=AssertionError('should not be called')):
enabled = netutils.is_ipv6_enabled()
self.assertTrue(enabled)
@@ -445,18 +484,18 @@
def test_memoize_disabled(self, exists):
# Reset the flag to appear that we haven't looked for it yet.
netutils._IS_IPV6_ENABLED = None
- with mock.patch('six.moves.builtins.open',
+ with mock.patch('builtins.open',
return_value=mock_file_content('1')):
enabled = netutils.is_ipv6_enabled()
self.assertFalse(enabled)
# The second call should not use open again
- with mock.patch('six.moves.builtins.open',
+ with mock.patch('builtins.open',
side_effect=AssertionError('should not be called')):
enabled = netutils.is_ipv6_enabled()
self.assertFalse(enabled)
@mock.patch('os.path.exists', return_value=False)
- @mock.patch('six.moves.builtins.open',
+ @mock.patch('builtins.open',
side_effect=AssertionError('should not read'))
def test_memoize_not_exists(self, mock_open, exists):
# Reset the flag to appear that we haven't looked for it yet.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/tests/test_reflection.py
new/oslo.utils-4.8.0/oslo_utils/tests/test_reflection.py
--- old/oslo.utils-4.6.0/oslo_utils/tests/test_reflection.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/tests/test_reflection.py 2021-02-16
10:01:47.000000000 +0100
@@ -14,26 +14,21 @@
# License for the specific language governing permissions and limitations
# under the License.
+import functools
import sys
from oslotest import base as test_base
-import six
-import testtools
from oslo_utils import reflection
-if six.PY3:
- RUNTIME_ERROR_CLASSES = ['RuntimeError', 'Exception',
- 'BaseException', 'object']
-else:
- RUNTIME_ERROR_CLASSES = ['RuntimeError', 'StandardError', 'Exception',
- 'BaseException', 'object']
+RUNTIME_ERROR_CLASSES = ['RuntimeError', 'Exception',
+ 'BaseException', 'object']
def dummy_decorator(f):
- @six.wraps(f)
+ @functools.wraps(f)
def wrapper(*args, **kwargs):
return f(*args, **kwargs)
@@ -88,7 +83,7 @@
class ClassWithInit(object):
- def __init__(self, k, l):
+ def __init__(self, k, lll):
pass
@@ -192,13 +187,8 @@
def test_static_method(self):
name = reflection.get_callable_name(Class.static_method)
- if six.PY3:
- self.assertEqual('.'.join((__name__, 'Class', 'static_method')),
- name)
- else:
- # NOTE(imelnikov): static method are just functions, class name
- # is not recorded anywhere in them.
- self.assertEqual('.'.join((__name__, 'static_method')), name)
+ self.assertEqual('.'.join((__name__, 'Class', 'static_method')),
+ name)
def test_class_method(self):
name = reflection.get_callable_name(Class.class_method)
@@ -218,9 +208,6 @@
'__call__')), name)
-# These extended/special case tests only work on python 3, due to python 2
-# being broken/incorrect with regard to these special cases...
[email protected](not six.PY3, 'python 3.x is not currently available')
class GetCallableNameTestExtended(test_base.BaseTestCase):
# Tests items in http://legacy.python.org/dev/peps/pep-3155/
@@ -287,7 +274,7 @@
def test_class_constructor(self):
result = reflection.get_callable_args(ClassWithInit)
- self.assertEqual(['k', 'l'], result)
+ self.assertEqual(['k', 'lll'], result)
def test_class_with_call(self):
result = reflection.get_callable_args(CallableClass())
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.utils-4.6.0/oslo_utils/tests/test_secretutils.py
new/oslo.utils-4.8.0/oslo_utils/tests/test_secretutils.py
--- old/oslo.utils-4.6.0/oslo_utils/tests/test_secretutils.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/tests/test_secretutils.py 2021-02-16
10:01:47.000000000 +0100
@@ -61,3 +61,50 @@
self.assertFalse(ctc(self.converter(u'abcd1234'),
self.converter(u'1234abcd')))
self.assertFalse(ctc('abcd1234', '1234abcd'))
+
+ _test_data = "Openstack forever".encode('utf-8')
+ _md5_digest = hashlib.md5(_test_data).digest()
+
+ def test_md5_with_data(self):
+ digest = secretutils.md5(self._test_data).digest()
+ self.assertEqual(digest, self._md5_digest)
+
+ digest = secretutils.md5(self._test_data,
+ usedforsecurity=True).digest()
+ self.assertEqual(digest, self._md5_digest)
+
+ digest = secretutils.md5(self._test_data,
+ usedforsecurity=False).digest()
+ self.assertEqual(digest, self._md5_digest)
+
+ def test_md5_without_data(self):
+ md5 = secretutils.md5()
+ md5.update(self._test_data)
+ digest = md5.digest()
+ self.assertEqual(digest, self._md5_digest)
+
+ md5 = secretutils.md5(usedforsecurity=True)
+ md5.update(self._test_data)
+ digest = md5.digest()
+ self.assertEqual(digest, self._md5_digest)
+
+ md5 = secretutils.md5(usedforsecurity=False)
+ md5.update(self._test_data)
+ digest = md5.digest()
+ self.assertEqual(digest, self._md5_digest)
+
+ def test_string_data_raises_type_error(self):
+ self.assertRaises(TypeError, hashlib.md5, 'foo')
+ self.assertRaises(TypeError, secretutils.md5, 'foo')
+ self.assertRaises(
+ TypeError, secretutils.md5, 'foo', usedforsecurity=True)
+ self.assertRaises(
+ TypeError, secretutils.md5, 'foo', usedforsecurity=False)
+
+ def test_none_data_raises_type_error(self):
+ self.assertRaises(TypeError, hashlib.md5, None)
+ self.assertRaises(TypeError, secretutils.md5, None)
+ self.assertRaises(
+ TypeError, secretutils.md5, None, usedforsecurity=True)
+ self.assertRaises(
+ TypeError, secretutils.md5, None, usedforsecurity=False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/tests/test_strutils.py
new/oslo.utils-4.8.0/oslo_utils/tests/test_strutils.py
--- old/oslo.utils-4.6.0/oslo_utils/tests/test_strutils.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/tests/test_strutils.py 2021-02-16
10:01:47.000000000 +0100
@@ -22,7 +22,6 @@
import ddt
from oslotest import base as test_base
-import six
import testscenarios
from oslo_utils import strutils
@@ -33,12 +32,6 @@
class StrUtilsTest(test_base.BaseTestCase):
- @mock.patch("six.text_type")
- def test_bool_bool_from_string_no_text(self, mock_text):
- self.assertTrue(strutils.bool_from_string(True))
- self.assertFalse(strutils.bool_from_string(False))
- self.assertEqual(0, mock_text.call_count)
-
def test_bool_bool_from_string(self):
self.assertTrue(strutils.bool_from_string(True))
self.assertFalse(strutils.bool_from_string(False))
@@ -85,7 +78,7 @@
self._test_bool_from_string(lambda s: s)
def test_unicode_bool_from_string(self):
- self._test_bool_from_string(six.text_type)
+ self._test_bool_from_string(str)
self.assertFalse(strutils.bool_from_string(u'??????', strict=False))
exc = self.assertRaises(ValueError, strutils.bool_from_string,
@@ -93,7 +86,7 @@
expected_msg = (u"Unrecognized value '??????', acceptable values are:"
u" '0', '1', 'f', 'false', 'n', 'no', 'off', 'on',"
u" 't', 'true', 'y', 'yes'")
- self.assertEqual(expected_msg, six.text_type(exc))
+ self.assertEqual(expected_msg, str(exc))
def test_other_bool_from_string(self):
self.assertFalse(strutils.bool_from_string(None))
@@ -170,16 +163,17 @@
def test_slugify(self):
to_slug = strutils.to_slug
self.assertRaises(TypeError, to_slug, True)
- self.assertEqual(six.u("hello"), to_slug("hello"))
- self.assertEqual(six.u("two-words"), to_slug("Two Words"))
- self.assertEqual(six.u("ma-any-spa-ce-es"),
+ self.assertEqual("hello", to_slug("hello"))
+ self.assertEqual("two-words", to_slug("Two Words"))
+ self.assertEqual("ma-any-spa-ce-es",
to_slug("Ma-any\t spa--ce- es"))
- self.assertEqual(six.u("excamation"), to_slug("exc!amation!"))
- self.assertEqual(six.u("ampserand"), to_slug("&ser$and"))
- self.assertEqual(six.u("ju5tnum8er"), to_slug("ju5tnum8er"))
- self.assertEqual(six.u("strip-"), to_slug(" strip - "))
- self.assertEqual(six.u("perche"), to_slug(six.b("perch\xc3\xa9")))
- self.assertEqual(six.u("strange"),
+ self.assertEqual("excamation", to_slug("exc!amation!"))
+ self.assertEqual("ampserand", to_slug("&ser$and"))
+ self.assertEqual("ju5tnum8er", to_slug("ju5tnum8er"))
+ self.assertEqual("strip-", to_slug(" strip - "))
+ self.assertEqual("perche",
+ to_slug("perch\xc3\xa9".encode("latin-1")))
+ self.assertEqual("strange",
to_slug("\x80strange", errors="ignore"))
@@ -619,12 +613,12 @@
self.assertEqual(expected, strutils.mask_password(payload))
payload = """{'adminPass':'TL0EfN33'}"""
- payload = six.text_type(payload)
+ payload = str(payload)
expected = """{'adminPass':'***'}"""
self.assertEqual(expected, strutils.mask_password(payload))
payload = """{'token':'mytoken'}"""
- payload = six.text_type(payload)
+ payload = str(payload)
expected = """{'token':'***'}"""
self.assertEqual(expected, strutils.mask_password(payload))
@@ -950,7 +944,7 @@
"min_value": 300, "max_value": 300},
{"value": 55, "name": "doing 55 in a 54",
"max_value": 54},
- {"value": six.unichr(129), "name": "UnicodeError",
+ {"value": chr(129), "name": "UnicodeError",
"max_value": 1000})
def test_invalid_inputs(self, value, name, **kwargs):
self.assertRaises(ValueError, strutils.validate_integer,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.utils-4.6.0/oslo_utils/tests/tests_encodeutils.py
new/oslo.utils-4.8.0/oslo_utils/tests/tests_encodeutils.py
--- old/oslo.utils-4.6.0/oslo_utils/tests/tests_encodeutils.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/tests/tests_encodeutils.py 2021-02-16
10:01:47.000000000 +0100
@@ -19,8 +19,6 @@
from oslo_i18n import fixture as oslo_i18n_fixture
from oslotest import base as test_base
-import six
-import testtools
from oslo_utils import encodeutils
@@ -30,25 +28,23 @@
def test_safe_decode(self):
safe_decode = encodeutils.safe_decode
self.assertRaises(TypeError, safe_decode, True)
- self.assertEqual(six.u('ni\xf1o'), safe_decode(six.b("ni\xc3\xb1o"),
- incoming="utf-8"))
- if six.PY2:
- # In Python 3, bytes.decode() doesn't support anymore
- # bytes => bytes encodings like base64
- self.assertEqual(six.u("test"), safe_decode("dGVzdA==",
- incoming='base64'))
+ self.assertEqual('ni\xf1o',
+ safe_decode("ni\xc3\xb1o".encode("latin-1"),
+ incoming="utf-8"))
+
+ self.assertEqual("strange",
+ safe_decode('\x80strange'.encode("latin-1"),
+ errors='ignore'))
- self.assertEqual(six.u("strange"), safe_decode(six.b('\x80strange'),
- errors='ignore'))
-
- self.assertEqual(six.u('\xc0'), safe_decode(six.b('\xc0'),
+ self.assertEqual('\xc0', safe_decode('\xc0'.encode("latin-1"),
incoming='iso-8859-1'))
# Forcing incoming to ascii so it falls back to utf-8
- self.assertEqual(six.u('ni\xf1o'), safe_decode(six.b('ni\xc3\xb1o'),
- incoming='ascii'))
+ self.assertEqual('ni\xf1o',
+ safe_decode('ni\xc3\xb1o'.encode("latin-1"),
+ incoming='ascii'))
- self.assertEqual(six.u('foo'), safe_decode(b'foo'))
+ self.assertEqual('foo', safe_decode(b'foo'))
def test_safe_encode_none_instead_of_text(self):
self.assertRaises(TypeError, encodeutils.safe_encode, None)
@@ -68,28 +64,18 @@
def test_safe_encode_tuple_instead_of_text(self):
self.assertRaises(TypeError, encodeutils.safe_encode, ('foo', 'bar', ))
- def test_safe_encode_py2(self):
- if six.PY2:
- # In Python 3, str.encode() doesn't support anymore
- # text => text encodings like base64
- self.assertEqual(
- six.b("dGVzdA==\n"),
- encodeutils.safe_encode("test", encoding='base64'),
- )
- else:
- self.skipTest("Requires py2.x")
-
def test_safe_encode_force_incoming_utf8_to_ascii(self):
# Forcing incoming to ascii so it falls back to utf-8
self.assertEqual(
- six.b('ni\xc3\xb1o'),
- encodeutils.safe_encode(six.b('ni\xc3\xb1o'), incoming='ascii'),
+ 'ni\xc3\xb1o'.encode("latin-1"),
+ encodeutils.safe_encode('ni\xc3\xb1o'.encode("latin-1"),
+ incoming='ascii'),
)
def test_safe_encode_same_encoding_different_cases(self):
with mock.patch.object(encodeutils, 'safe_decode', mock.Mock()):
utf8 = encodeutils.safe_encode(
- six.u('foo\xf1bar'), encoding='utf-8')
+ 'foo\xf1bar', encoding='utf-8')
self.assertEqual(
encodeutils.safe_encode(utf8, 'UTF-8', 'utf-8'),
encodeutils.safe_encode(utf8, 'utf-8', 'UTF-8'),
@@ -101,11 +87,11 @@
encodeutils.safe_decode.assert_has_calls([])
def test_safe_encode_different_encodings(self):
- text = six.u('foo\xc3\xb1bar')
+ text = 'foo\xc3\xb1bar'
result = encodeutils.safe_encode(
text=text, incoming='utf-8', encoding='iso-8859-1')
self.assertNotEqual(text, result)
- self.assertNotEqual(six.b("foo\xf1bar"), result)
+ self.assertNotEqual("foo\xf1bar".encode("latin-1"), result)
def test_to_utf8(self):
self.assertEqual(encodeutils.to_utf8(b'a\xe9\xff'), # bytes
@@ -115,7 +101,7 @@
self.assertRaises(TypeError, encodeutils.to_utf8, 123) # invalid
# oslo.i18n Message objects should also be accepted for convenience.
- # It works because Message is a subclass of six.text_type. Use the
+ # It works because Message is a subclass of str. Use the
# lazy translation to get a Message instance of oslo_i18n.
msg = oslo_i18n_fixture.Translation().lazy("test")
self.assertEqual(encodeutils.to_utf8(msg),
@@ -177,79 +163,6 @@
self.assertEqual(encodeutils.exception_to_unicode(exc),
u'\u0420\u0443\u0441\u0441\u043a\u0438\u0439')
- @testtools.skipIf(six.PY3, 'test specific to Python 2')
- def test_unicode_exception(self):
- # Exception with a __unicode__() method, but no __str__()
- class UnicodeException(Exception):
- def __init__(self, value):
- Exception.__init__(self)
- self.value = value
-
- def __unicode__(self):
- return self.value
-
- # __unicode__() returns unicode
- exc = UnicodeException(u'unicode \xe9\u20ac')
- self.assertEqual(encodeutils.exception_to_unicode(exc),
- u'unicode \xe9\u20ac')
-
- # __unicode__() returns bytes (does this case really happen in the
- # wild?)
- exc = UnicodeException(b'utf-8 \xc3\xa9\xe2\x82\xac')
- self.assertEqual(encodeutils.exception_to_unicode(exc),
- u'utf-8 \xe9\u20ac')
-
- @testtools.skipIf(six.PY3, 'test specific to Python 2')
- def test_unicode_or_str_exception(self):
- # Exception with __str__() and __unicode__() methods
- class UnicodeOrStrException(Exception):
- def __init__(self, unicode_value, str_value):
- Exception.__init__(self)
- self.unicode_value = unicode_value
- self.str_value = str_value
-
- def __unicode__(self):
- return self.unicode_value
-
- def __str__(self):
- return self.str_value
-
- # __unicode__() returns unicode
- exc = UnicodeOrStrException(u'unicode \xe9\u20ac', b'str')
- self.assertEqual(encodeutils.exception_to_unicode(exc),
- u'unicode \xe9\u20ac')
-
- # __unicode__() returns bytes (does this case really happen in the
- # wild?)
- exc = UnicodeOrStrException(b'utf-8 \xc3\xa9\xe2\x82\xac', b'str')
- self.assertEqual(encodeutils.exception_to_unicode(exc),
- u'utf-8 \xe9\u20ac')
-
- @testtools.skipIf(six.PY3, 'test specific to Python 2')
- def test_unicode_only_exception(self):
- # Exception with a __unicode__() method and a __str__() which
- # raises an exception (similar to the Message class of oslo_i18n)
- class UnicodeOnlyException(Exception):
- def __init__(self, value):
- Exception.__init__(self)
- self.value = value
-
- def __unicode__(self):
- return self.value
-
- def __str__(self):
- raise UnicodeError("use unicode()")
-
- # __unicode__() returns unicode
- exc = UnicodeOnlyException(u'unicode \xe9\u20ac')
- self.assertEqual(encodeutils.exception_to_unicode(exc),
- u'unicode \xe9\u20ac')
-
- # __unicode__() returns bytes
- exc = UnicodeOnlyException(b'utf-8 \xc3\xa9\xe2\x82\xac')
- self.assertEqual(encodeutils.exception_to_unicode(exc),
- u'utf-8 \xe9\u20ac')
-
def test_oslo_i18n_message(self):
# use the lazy translation to get a Message instance of oslo_i18n
exc = oslo_i18n_fixture.Translation().lazy("test")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/timeutils.py
new/oslo.utils-4.8.0/oslo_utils/timeutils.py
--- old/oslo.utils-4.6.0/oslo_utils/timeutils.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/timeutils.py 2021-02-16
10:01:47.000000000 +0100
@@ -19,13 +19,13 @@
import calendar
import datetime
+import functools
import logging
import time
from debtcollector import removals
import iso8601
import pytz
-import six
from oslo_utils import reflection
@@ -66,9 +66,9 @@
try:
return iso8601.parse_date(timestr)
except iso8601.ParseError as e:
- raise ValueError(six.text_type(e))
+ raise ValueError(str(e))
except TypeError as e:
- raise ValueError(six.text_type(e))
+ raise ValueError(str(e))
@removals.remove(
@@ -114,7 +114,7 @@
Accept datetime string with timezone information.
Fix comparison with timezone aware datetime.
"""
- if isinstance(before, six.string_types):
+ if isinstance(before, str):
before = parse_isotime(before)
before = normalize_time(before)
@@ -129,7 +129,7 @@
Accept datetime string with timezone information.
Fix comparison with timezone aware datetime.
"""
- if isinstance(after, six.string_types):
+ if isinstance(after, str):
after = parse_isotime(after)
after = normalize_time(after)
@@ -377,7 +377,7 @@
if not enabled:
return func
- @six.wraps(func)
+ @functools.wraps(func)
def wrapper(*args, **kwargs):
with StopWatch() as w:
result = func(*args, **kwargs)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/oslo_utils/versionutils.py
new/oslo.utils-4.8.0/oslo_utils/versionutils.py
--- old/oslo.utils-4.6.0/oslo_utils/versionutils.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/oslo_utils/versionutils.py 2021-02-16
10:01:47.000000000 +0100
@@ -19,8 +19,9 @@
.. versionadded:: 1.6
"""
+import functools
+
import packaging.version
-import six
from oslo_utils._i18n import _
@@ -57,13 +58,13 @@
.. versionadded:: 2.0
"""
try:
- if isinstance(version, six.string_types):
+ if isinstance(version, str):
version = convert_version_to_tuple(version)
if isinstance(version, tuple):
- return six.moves.reduce(lambda x, y: (x * 1000) + y, version)
+ return functools.reduce(lambda x, y: (x * 1000) + y, version)
except Exception as ex:
msg = _("Version %s is invalid.") % version
- six.raise_from(ValueError(msg), ex)
+ raise ValueError(msg) from ex
def convert_version_to_str(version_int):
@@ -75,7 +76,7 @@
factor = 1000
while version_int != 0:
version_number = version_int - (version_int // factor * factor)
- version_numbers.insert(0, six.text_type(version_number))
+ version_numbers.insert(0, str(version_number))
version_int = version_int // factor
return '.'.join(map(str, version_numbers))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.utils-4.6.0/releasenotes/notes/add-md5-wrapper-7bf81c2464a7a224.yaml
new/oslo.utils-4.8.0/releasenotes/notes/add-md5-wrapper-7bf81c2464a7a224.yaml
---
old/oslo.utils-4.6.0/releasenotes/notes/add-md5-wrapper-7bf81c2464a7a224.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/oslo.utils-4.8.0/releasenotes/notes/add-md5-wrapper-7bf81c2464a7a224.yaml
2021-02-16 10:01:47.000000000 +0100
@@ -0,0 +1,16 @@
+---
+features:
+ - |
+ A wrapper for hashlib.md5() has been added to allow OpenStack to run on
+ systems where FIPS is enabled. Under FIPS, md5 is disabled and calls to
+ hashlib.md5() will fail. In most cases in OpenStack, though, md5 is not
+ used within a security context.
+
+ In https://bugs.python.org/issue9216, a proposal has been made to allow
+ the addition of a keyword parameter usedforsecurity, which can be used to
+ designate non-security context uses. In this case, md5() operations would
+ be permitted. This feature is expected to be delivered in python 3.9.
+
+ Downstream python already supports this option, though. This wrapper
+ simply allows for this option to be supported where the underlying python
+ version supports it.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/oslo.utils-4.6.0/releasenotes/notes/allow-to-convert-ipv4-address-from-text-to-binary-8c46ad2d9989e8c5.yaml
new/oslo.utils-4.8.0/releasenotes/notes/allow-to-convert-ipv4-address-from-text-to-binary-8c46ad2d9989e8c5.yaml
---
old/oslo.utils-4.6.0/releasenotes/notes/allow-to-convert-ipv4-address-from-text-to-binary-8c46ad2d9989e8c5.yaml
1970-01-01 01:00:00.000000000 +0100
+++
new/oslo.utils-4.8.0/releasenotes/notes/allow-to-convert-ipv4-address-from-text-to-binary-8c46ad2d9989e8c5.yaml
2021-02-16 10:01:47.000000000 +0100
@@ -0,0 +1,6 @@
+---
+features:
+ - |
+ Add a ``strict`` flag to ``netutils.is_valid_ipv4`` to allowing users to
+ restrict validation to IP addresses in presentation format (``a.b.c.d``)
+ as opposed to address format (``a.b.c.d``, ``a.b.c``, ``a.b``, ``a``).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/releasenotes/source/conf.py
new/oslo.utils-4.8.0/releasenotes/source/conf.py
--- old/oslo.utils-4.6.0/releasenotes/source/conf.py 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/releasenotes/source/conf.py 2021-02-16
10:01:47.000000000 +0100
@@ -1,4 +1,6 @@
# -*- coding: utf-8 -*-
+# Copyright (C) 2020 Red Hat, Inc.
+#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/releasenotes/source/index.rst
new/oslo.utils-4.8.0/releasenotes/source/index.rst
--- old/oslo.utils-4.6.0/releasenotes/source/index.rst 2020-09-11
21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/releasenotes/source/index.rst 2021-02-16
10:01:47.000000000 +0100
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ victoria
ussuri
train
stein
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/releasenotes/source/victoria.rst
new/oslo.utils-4.8.0/releasenotes/source/victoria.rst
--- old/oslo.utils-4.6.0/releasenotes/source/victoria.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/oslo.utils-4.8.0/releasenotes/source/victoria.rst 2021-02-16
10:01:47.000000000 +0100
@@ -0,0 +1,6 @@
+=============================
+Victoria Series Release Notes
+=============================
+
+.. release-notes::
+ :branch: stable/victoria
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/requirements.txt
new/oslo.utils-4.8.0/requirements.txt
--- old/oslo.utils-4.6.0/requirements.txt 2020-09-11 21:22:56.000000000
+0200
+++ new/oslo.utils-4.8.0/requirements.txt 2021-02-16 10:01:47.000000000
+0100
@@ -8,7 +8,6 @@
# that is a likely indicator that the feature belongs somewhere else.
pbr!=2.1.0,>=2.0.0 # Apache-2.0
-six>=1.10.0 # MIT
iso8601>=0.1.11 # MIT
oslo.i18n>=3.15.3 # Apache-2.0
pytz>=2013.6 # MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/test-requirements.txt
new/oslo.utils-4.8.0/test-requirements.txt
--- old/oslo.utils-4.6.0/test-requirements.txt 2020-09-11 21:22:56.000000000
+0200
+++ new/oslo.utils-4.8.0/test-requirements.txt 2021-02-16 10:01:47.000000000
+0100
@@ -22,3 +22,5 @@
# Bandit security code scanner
bandit>=1.6.0,<1.7.0 # Apache-2.0
+
+pre-commit>=2.6.0 # MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/oslo.utils-4.6.0/tox.ini new/oslo.utils-4.8.0/tox.ini
--- old/oslo.utils-4.6.0/tox.ini 2020-09-11 21:22:56.000000000 +0200
+++ new/oslo.utils-4.8.0/tox.ini 2021-02-16 10:01:47.000000000 +0100
@@ -1,19 +1,19 @@
[tox]
minversion = 3.1
-envlist = py37,pep8
+envlist = py3,pep8
ignore_basepython_conflict = true
[testenv]
basepython = python3
deps =
-
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt
commands = stestr run --slowest {posargs}
[testenv:pep8]
commands =
- flake8
+ pre-commit run -a
# Run security linter
bandit -r oslo_utils -x tests -n5
@@ -23,7 +23,7 @@
[testenv:docs]
whitelist_externals = rm
deps =
-
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
+
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/doc/requirements.txt
commands =
rm -fr doc/build