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 2023-07-18 22:09:09
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.utils (Old)
 and      /work/SRC/openSUSE:Factory/.python-oslo.utils.new.3193 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-oslo.utils"

Tue Jul 18 22:09:09 2023 rev:31 rq:1099312 version:6.2.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.utils/python-oslo.utils.changes      
2023-01-05 15:00:55.609043664 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-oslo.utils.new.3193/python-oslo.utils.changes
    2023-07-18 22:09:41.747516098 +0200
@@ -1,0 +2,16 @@
+Tue Jul 18 16:41:01 UTC 2023 - [email protected]
+
+- update to version 6.2.0
+  - Replace deprecated assertAlmostEquals method
+  - Fix compatibility with Python 3.8
+  - Moves supported python runtimes from version 3.8 to 3.10
+  - Bump bandit
+  - strutils: update string_to_bytes
+  - Implement zoneinfo support to drop dependency to pytz
+  - Add netutils.get_my_ipv6()
+  - Use the new openstack-python3-jobs template
+  - Revert "Moves supported python runtimes from version 3.8 to 3.10"
+  - Update units for current SI prefixes
+  - Update master for stable/2023.1
+
+-------------------------------------------------------------------

Old:
----
  oslo.utils-6.1.0.tar.gz

New:
----
  oslo.utils-6.2.0.tar.gz

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

Other differences:
------------------
++++++ python-oslo.utils.spec ++++++
--- /var/tmp/diff_new_pack.4rgIy8/_old  2023-07-18 22:09:42.399519743 +0200
+++ /var/tmp/diff_new_pack.4rgIy8/_new  2023-07-18 22:09:42.403519765 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-oslo.utils
 #
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 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:        6.1.0
+Version:        6.2.0
 Release:        0
 Summary:        OpenStack Utils Library
 License:        Apache-2.0
 Group:          Development/Languages/Python
 URL:            https://docs.openstack.org/oslo.utils
-Source0:        
https://files.pythonhosted.org/packages/source/o/oslo.utils/oslo.utils-6.1.0.tar.gz
+Source0:        
https://files.pythonhosted.org/packages/source/o/oslo.utils/oslo.utils-6.2.0.tar.gz
 BuildRequires:  openstack-macros
 BuildRequires:  python3-Babel
 BuildRequires:  python3-ddt
@@ -72,7 +72,7 @@
 Documentation for OpenStack utils library.
 
 %prep
-%autosetup -p1 -n oslo.utils-6.1.0
+%autosetup -p1 -n oslo.utils-6.2.0
 
 %py_req_cleanup
 
@@ -83,14 +83,14 @@
 %py3_install
 
 # generate html docs
-PBR_VERSION=6.1.0 %sphinx_build -b html doc/source doc/build/html
+PBR_VERSION=6.2.0 %sphinx_build -b html doc/source doc/build/html
 # remove the sphinx-build leftovers
 rm -rf doc/build/html/.{doctrees,buildinfo}
 
 %check
 # tests fail with python 3.8
 rm -v oslo_utils/tests/test_reflection.py
-python3 -m stestr.cli run
+%{openstack_stestr_run}
 
 %files -n python3-oslo.utils
 %license LICENSE

++++++ oslo.utils-6.1.0.tar.gz -> oslo.utils-6.2.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/.zuul.yaml 
new/oslo.utils-6.2.0/.zuul.yaml
--- old/oslo.utils-6.1.0/.zuul.yaml     2022-11-17 11:04:40.000000000 +0100
+++ new/oslo.utils-6.2.0/.zuul.yaml     2023-07-06 10:55:34.000000000 +0200
@@ -2,7 +2,7 @@
     templates:
       - check-requirements
       - lib-forward-testing-python3
-      - openstack-python3-antelope-jobs
+      - openstack-python3-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-6.1.0/AUTHORS new/oslo.utils-6.2.0/AUTHORS
--- old/oslo.utils-6.1.0/AUTHORS        2022-11-17 11:05:08.000000000 +0100
+++ new/oslo.utils-6.2.0/AUTHORS        2023-07-06 10:56:01.000000000 +0200
@@ -25,6 +25,7 @@
 Bence Romsics <[email protected]>
 Bin Zhou <[email protected]>
 Brant Knudson <[email protected]>
+Brian Haley <[email protected]>
 Brian Rosmaita <[email protected]>
 BubaVV <[email protected]>
 Cedric Brandily <[email protected]>
@@ -64,6 +65,7 @@
 Flaper Fesp <[email protected]>
 Flavio Percoco <[email protected]>
 Gary Kotton <[email protected]>
+Ghanshyam <[email protected]>
 Ghanshyam Mann <[email protected]>
 Ghe Rivero <[email protected]>
 Guang Yee <[email protected]>
@@ -110,6 +112,7 @@
 Omar Shykhkerimov <[email protected]>
 OpenStack Release Bot <[email protected]>
 Paul Belanger <[email protected]>
+Petr Vaněk <[email protected]>
 Pierre Riteau <[email protected]>
 Radomir Dopieralski <[email protected]>
 Rahul Nair <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/ChangeLog 
new/oslo.utils-6.2.0/ChangeLog
--- old/oslo.utils-6.1.0/ChangeLog      2022-11-17 11:05:08.000000000 +0100
+++ new/oslo.utils-6.2.0/ChangeLog      2023-07-06 10:56:01.000000000 +0200
@@ -1,6 +1,21 @@
 CHANGES
 =======
 
+6.2.0
+-----
+
+* Replace deprecated assertAlmostEquals method
+* strutils: update string\_to\_bytes
+* Add netutils.get\_my\_ipv6()
+* Bump bandit
+* Fix compatibility with Python 3.8
+* Revert "Moves supported python runtimes from version 3.8 to 3.10"
+* Moves supported python runtimes from version 3.8 to 3.10
+* Update units for current SI prefixes
+* Implement zoneinfo support to drop dependency to pytz
+* Use the new openstack-python3-jobs template
+* Update master for stable/2023.1
+
 6.1.0
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/PKG-INFO 
new/oslo.utils-6.2.0/PKG-INFO
--- old/oslo.utils-6.1.0/PKG-INFO       2022-11-17 11:05:08.786223000 +0100
+++ new/oslo.utils-6.2.0/PKG-INFO       2023-07-06 10:56:01.374003600 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: oslo.utils
-Version: 6.1.0
+Version: 6.2.0
 Summary: Oslo Utility library
 Home-page: https://docs.openstack.org/oslo.utils/latest/
 Author: OpenStack
@@ -47,6 +47,7 @@
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Requires-Python: >=3.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/oslo.utils.egg-info/PKG-INFO 
new/oslo.utils-6.2.0/oslo.utils.egg-info/PKG-INFO
--- old/oslo.utils-6.1.0/oslo.utils.egg-info/PKG-INFO   2022-11-17 
11:05:08.000000000 +0100
+++ new/oslo.utils-6.2.0/oslo.utils.egg-info/PKG-INFO   2023-07-06 
10:56:01.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: oslo.utils
-Version: 6.1.0
+Version: 6.2.0
 Summary: Oslo Utility library
 Home-page: https://docs.openstack.org/oslo.utils/latest/
 Author: OpenStack
@@ -47,6 +47,7 @@
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
 Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Requires-Python: >=3.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/oslo.utils.egg-info/SOURCES.txt 
new/oslo.utils-6.2.0/oslo.utils.egg-info/SOURCES.txt
--- old/oslo.utils-6.1.0/oslo.utils.egg-info/SOURCES.txt        2022-11-17 
11:05:08.000000000 +0100
+++ new/oslo.utils-6.2.0/oslo.utils.egg-info/SOURCES.txt        2023-07-06 
10:56:01.000000000 +0200
@@ -102,13 +102,16 @@
 releasenotes/notes/drop-python27-support-f97f680651693b47.yaml
 releasenotes/notes/fix_mask_password_regex-c0661f95a23369a4.yaml
 releasenotes/notes/image-utils-handle-scientific-notation-6f65d46e9c8c8f8c.yaml
+releasenotes/notes/implement-zoneinfo-to-remove-pytz-fba6f70db09ecdb8.yaml
 releasenotes/notes/introduce-keystoneidsentinel-16bf3e7f2ae7e9f3.yaml
 releasenotes/notes/mask-dict-passwords-99357ffb7972fb0b.yaml
 releasenotes/notes/mask-password-pattern-c8c880098743de3e.yaml
 releasenotes/notes/mask-password-patterns-f41524069b8ae488.yaml
 releasenotes/notes/netutils-get_mac_addr_by_ipv6-c3ce6a35a69f7c2b.yaml
+releasenotes/notes/netutils-get_my_ipv6-c9f124374655326b.yaml
 releasenotes/notes/remove-fnmatch-f227b54f237a02c2.yaml
 releasenotes/notes/remove-timeutils-deprecated-helpers-5de68c21dd281529.yaml
+releasenotes/source/2023.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.utils-6.1.0/oslo.utils.egg-info/pbr.json 
new/oslo.utils-6.2.0/oslo.utils.egg-info/pbr.json
--- old/oslo.utils-6.1.0/oslo.utils.egg-info/pbr.json   2022-11-17 
11:05:08.000000000 +0100
+++ new/oslo.utils-6.2.0/oslo.utils.egg-info/pbr.json   2023-07-06 
10:56:01.000000000 +0200
@@ -1 +1 @@
-{"git_version": "d49d594", "is_release": true}
\ No newline at end of file
+{"git_version": "8115085", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/oslo.utils.egg-info/requires.txt 
new/oslo.utils-6.2.0/oslo.utils.egg-info/requires.txt
--- old/oslo.utils-6.1.0/oslo.utils.egg-info/requires.txt       2022-11-17 
11:05:08.000000000 +0100
+++ new/oslo.utils-6.2.0/oslo.utils.egg-info/requires.txt       2023-07-06 
10:56:01.000000000 +0200
@@ -6,3 +6,4 @@
 packaging>=20.4
 pyparsing>=2.1.0
 pytz>=2013.6
+tzdata>=2022.4
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/oslo_utils/netutils.py 
new/oslo.utils-6.2.0/oslo_utils/netutils.py
--- old/oslo.utils-6.1.0/oslo_utils/netutils.py 2022-11-17 11:04:40.000000000 
+0100
+++ new/oslo.utils-6.2.0/oslo_utils/netutils.py 2023-07-06 10:55:34.000000000 
+0200
@@ -414,6 +414,52 @@
     return LOCALHOST
 
 
+def get_my_ipv6():
+    """Returns the actual IPv6 address of the local machine.
+
+    This code figures out what source address would be used if some traffic
+    were to be sent out to some well known address on the Internet. In this
+    case, IPv6 from RFC3849 is used, but the specific address does not
+    matter much. No traffic is actually sent.
+
+    .. versionadded:: 6.1
+       Return ``'::1'`` if there is no default interface.
+    """
+    try:
+        csock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
+        csock.connect(('2001:db8::1', 80))
+        (addr, _, _, _) = csock.getsockname()
+        csock.close()
+        return addr
+    except socket.error:
+        return _get_my_ipv6_address()
+
+
+def _get_my_ipv6_address():
+    """Figure out the best IPv6 address
+    """
+    LOCALHOST = '::1'
+    gtw = netifaces.gateways()
+    try:
+        interface = gtw['default'][netifaces.AF_INET6][1]
+    except (KeyError, IndexError):
+        LOG.info('Could not determine default network interface, '
+                 'using %s for IPv6 address', LOCALHOST)
+        return LOCALHOST
+
+    try:
+        return netifaces.ifaddresses(interface)[netifaces.AF_INET6][0]['addr']
+    except (KeyError, IndexError):
+        LOG.info('Could not determine IPv6 address for interface '
+                 '%(interface)s, using %(address)s',
+                 {'interface': interface, 'address': LOCALHOST})
+    except Exception as e:
+        LOG.info('Could not determine IPv6 address for '
+                 'interface %(interface)s: %(error)s',
+                 {'interface': interface, 'error': e})
+    return LOCALHOST
+
+
 class _ModifiedSplitResult(parse.SplitResult):
     """Split results class for urlsplit."""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/oslo_utils/strutils.py 
new/oslo.utils-6.2.0/oslo_utils/strutils.py
--- old/oslo.utils-6.1.0/oslo_utils/strutils.py 2022-11-17 11:04:40.000000000 
+0100
+++ new/oslo.utils-6.2.0/oslo_utils/strutils.py 2023-07-06 10:55:34.000000000 
+0200
@@ -37,11 +37,24 @@
     'Gi': 3,
     'T': 4,
     'Ti': 4,
+    'P': 5,
+    'Pi': 5,
+    'E': 6,
+    'Ei': 6,
+    'Z': 7,
+    'Zi': 7,
+    'Y': 8,
+    'Yi': 8,
+    'R': 9,
+    'Ri': 9,
+    'Q': 10,
+    'Qi': 10,
 }
 UNIT_SYSTEM_INFO = {
-    'IEC': (1024, re.compile(r'(^[-+]?\d*\.?\d+)([KMGT]i?)?(b|bit|B)$')),
-    'SI': (1000, re.compile(r'(^[-+]?\d*\.?\d+)([kMGT])?(b|bit|B)$')),
-    'mixed': (None, re.compile(r'(^[-+]?\d*\.?\d+)([kKMGT]i?)?(b|bit|B)$')),
+    'IEC': (1024, re.compile(r'(^[-+]?\d*\.?\d+)([KMGTPEZYRQ]i?)?(b|bit|B)$')),
+    'SI': (1000, re.compile(r'(^[-+]?\d*\.?\d+)([kMGTPEZYRQ])?(b|bit|B)$')),
+    'mixed': (None, re.compile(
+        r'(^[-+]?\d*\.?\d+)([kKMGTPEZYRQ]i?)?(b|bit|B)$')),
 }
 
 TRUE_STRINGS = ('1', 't', 'true', 'on', 'y', 'yes')
@@ -182,13 +195,19 @@
 
     The units supported for IEC / mixed::
 
-        Kb(it), Kib(it), Mb(it), Mib(it), Gb(it), Gib(it), Tb(it), Tib(it)
-        KB, KiB, MB, MiB, GB, GiB, TB, TiB
+        Kb(it), Kib(it), Mb(it), Mib(it), Gb(it), Gib(it), Tb(it), Tib(it),
+        Pb(it), Pib(it), Eb(it), Eib(it), Zb(it), Zib(it), Yb(it), Yib(it),
+        Rb(it), Rib(it), Qb(it), Qib(it)
+
+        KB, KiB, MB, MiB, GB, GiB, TB, TiB, PB, PiB, EB, EiB, ZB, ZiB,
+        YB, YiB, RB, RiB, QB, QiB
 
     The units supported for SI ::
 
-        kb(it), Mb(it), Gb(it), Tb(it)
-        kB, MB, GB, TB
+        kb(it), Mb(it), Gb(it), Tb(it), Pb(it), Eb(it), Zb(it), Yb(it),
+        Rb(it), Qb(it)
+
+        kB, MB, GB, TB, PB, EB, ZB, YB, RB, QB
 
     SI units are interpreted as power-of-ten (e.g. 1kb = 1000b).  Note
     that the SI unit system does not support capital letter 'K'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/oslo_utils/tests/test_netutils.py 
new/oslo.utils-6.2.0/oslo_utils/tests/test_netutils.py
--- old/oslo.utils-6.1.0/oslo_utils/tests/test_netutils.py      2022-11-17 
11:04:40.000000000 +0100
+++ new/oslo.utils-6.2.0/oslo_utils/tests/test_netutils.py      2023-07-06 
10:55:34.000000000 +0200
@@ -276,13 +276,21 @@
         for input_str in invalid_inputs:
             self.assertFalse(netutils.is_valid_port(input_str))
 
-    def test_get_my_ip(self):
+    def test_get_my_ipv4(self):
         sock_attrs = {
             'return_value.getsockname.return_value': ['1.2.3.4', '']}
         with mock.patch('socket.socket', **sock_attrs):
             addr = netutils.get_my_ipv4()
         self.assertEqual(addr, '1.2.3.4')
 
+    def test_get_my_ipv6(self):
+        sock_attrs = {
+            'return_value.getsockname.return_value': ['2001:db8::2', '',
+                                                      '', '']}
+        with mock.patch('socket.socket', **sock_attrs):
+            addr = netutils.get_my_ipv6()
+        self.assertEqual(addr, '2001:db8::2')
+
     def test_is_int_in_range(self):
         valid_inputs = [(1, -100, 100),
                         ('1', -100, 100),
@@ -323,37 +331,44 @@
 
     @mock.patch('socket.socket')
     @mock.patch('oslo_utils.netutils._get_my_ipv4_address')
-    def test_get_my_ip_socket_error(self, ip, mock_socket):
+    def test_get_my_ipv4_socket_error(self, ip, mock_socket):
         mock_socket.side_effect = socket.error
         ip.return_value = '1.2.3.4'
         addr = netutils.get_my_ipv4()
         self.assertEqual(addr, '1.2.3.4')
 
+    @mock.patch('socket.socket')
+    @mock.patch('oslo_utils.netutils._get_my_ipv6_address')
+    def test_get_my_ipv6_socket_error(self, ip, mock_socket):
+        mock_socket.side_effect = socket.error
+        ip.return_value = '2001:db8::2'
+        addr = netutils.get_my_ipv6()
+        self.assertEqual(addr, '2001:db8::2')
+
     @mock.patch('netifaces.gateways')
     @mock.patch('netifaces.ifaddresses')
-    def test_get_my_ipv4_address_with_default_route(
+    def test_get_my_ip_address_with_default_route(
             self, ifaddr, gateways):
-        with mock.patch.dict(netifaces.__dict__, {'AF_INET': '0'}):
-            ifaddr.return_value = {'0': [{'addr': '172.18.204.1'}]}
-            addr = netutils._get_my_ipv4_address()
-        self.assertEqual('172.18.204.1', addr)
+        ifaddr.return_value = {netifaces.AF_INET: [{'addr': '172.18.204.1'}],
+                               netifaces.AF_INET6: [{'addr': '2001:db8::2'}]}
+        self.assertEqual('172.18.204.1', netutils._get_my_ipv4_address())
+        self.assertEqual('2001:db8::2', netutils._get_my_ipv6_address())
 
     @mock.patch('netifaces.gateways')
     @mock.patch('netifaces.ifaddresses')
-    def test_get_my_ipv4_address_without_default_route(
+    def test_get_my_ip_address_without_default_route(
             self, ifaddr, gateways):
-        with mock.patch.dict(netifaces.__dict__, {'AF_INET': '0'}):
-            ifaddr.return_value = {}
-            addr = netutils._get_my_ipv4_address()
-        self.assertEqual('127.0.0.1', addr)
+        ifaddr.return_value = {}
+        self.assertEqual('127.0.0.1', netutils._get_my_ipv4_address())
+        self.assertEqual('::1', netutils._get_my_ipv6_address())
 
     @mock.patch('netifaces.gateways')
     @mock.patch('netifaces.ifaddresses')
     def test_get_my_ipv4_address_without_default_interface(
             self, ifaddr, gateways):
         gateways.return_value = {}
-        addr = netutils._get_my_ipv4_address()
-        self.assertEqual('127.0.0.1', addr)
+        self.assertEqual('127.0.0.1', netutils._get_my_ipv4_address())
+        self.assertEqual('::1', netutils._get_my_ipv6_address())
         self.assertFalse(ifaddr.called)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/oslo_utils/tests/test_strutils.py 
new/oslo.utils-6.2.0/oslo_utils/tests/test_strutils.py
--- old/oslo.utils-6.1.0/oslo_utils/tests/test_strutils.py      2022-11-17 
11:04:40.000000000 +0100
+++ new/oslo.utils-6.2.0/oslo_utils/tests/test_strutils.py      2023-07-06 
10:55:34.000000000 +0200
@@ -207,10 +207,22 @@
         ('M', dict(unit_prefix='M')),
         ('G', dict(unit_prefix='G')),
         ('T', dict(unit_prefix='T')),
+        ('P', dict(unit_prefix='P')),
+        ('E', dict(unit_prefix='E')),
+        ('Z', dict(unit_prefix='Z')),
+        ('Y', dict(unit_prefix='Y')),
+        ('R', dict(unit_prefix='R')),
+        ('Q', dict(unit_prefix='Q')),
         ('Ki', dict(unit_prefix='Ki')),
         ('Mi', dict(unit_prefix='Mi')),
         ('Gi', dict(unit_prefix='Gi')),
         ('Ti', dict(unit_prefix='Ti')),
+        ('Pi', dict(unit_prefix='Pi')),
+        ('Ei', dict(unit_prefix='Ei')),
+        ('Zi', dict(unit_prefix='Zi')),
+        ('Yi', dict(unit_prefix='Yi')),
+        ('Ri', dict(unit_prefix='Ri')),
+        ('Qi', dict(unit_prefix='Qi')),
         ('invalid_unit_prefix', dict(unit_prefix='B', assert_error=True)),
     ]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/oslo_utils/tests/test_timeutils.py 
new/oslo.utils-6.2.0/oslo_utils/tests/test_timeutils.py
--- old/oslo.utils-6.1.0/oslo_utils/tests/test_timeutils.py     2022-11-17 
11:04:40.000000000 +0100
+++ new/oslo.utils-6.2.0/oslo_utils/tests/test_timeutils.py     2023-07-06 
10:55:34.000000000 +0200
@@ -192,8 +192,8 @@
         before = timeutils.utcnow()
         after = before + datetime.timedelta(days=7, seconds=59,
                                             microseconds=123456)
-        self.assertAlmostEquals(604859.123456,
-                                timeutils.delta_seconds(before, after))
+        self.assertAlmostEqual(604859.123456,
+                               timeutils.delta_seconds(before, after))
 
     def test_is_soon(self):
         expires = timeutils.utcnow() + datetime.timedelta(minutes=5)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/oslo_utils/timeutils.py 
new/oslo.utils-6.2.0/oslo_utils/timeutils.py
--- old/oslo.utils-6.1.0/oslo_utils/timeutils.py        2022-11-17 
11:04:40.000000000 +0100
+++ new/oslo.utils-6.2.0/oslo_utils/timeutils.py        2023-07-06 
10:55:34.000000000 +0200
@@ -24,7 +24,13 @@
 import time
 
 import iso8601
-import pytz
+
+try:
+    import zoneinfo
+except ImportError:
+    # zoneinfo is available in Python >= 3.9
+    import pytz
+    zoneinfo = None
 
 from oslo_utils import reflection
 
@@ -225,8 +231,14 @@
     if tzname:
         # Need to handle either iso8601 or python UTC format
         tzname = 'UTC' if tzname == 'UTC+00:00' else tzname
-        tzinfo = pytz.timezone(tzname)
-        dt = tzinfo.localize(dt)
+
+        if zoneinfo:
+            tzinfo = zoneinfo.ZoneInfo(tzname)
+            dt = dt.replace(tzinfo=tzinfo)
+        else:
+            tzinfo = pytz.timezone(tzname)
+            dt = tzinfo.localize(dt)
+
     return dt
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/oslo_utils/units.py 
new/oslo.utils-6.2.0/oslo_utils/units.py
--- old/oslo.utils-6.1.0/oslo_utils/units.py    2022-11-17 11:04:40.000000000 
+0100
+++ new/oslo.utils-6.2.0/oslo_utils/units.py    2023-07-06 10:55:34.000000000 
+0200
@@ -34,6 +34,10 @@
 "Binary zetta unit"
 Yi = 1024 ** 8
 "Binary yotta unit"
+Ri = 1024 ** 9
+"Binary ronna unit"
+Qi = 1024 ** 10
+"Binary quetta unit"
 
 # Decimal unit constants.
 k = 1000
@@ -52,3 +56,7 @@
 "Decimal zetta unit"
 Y = 1000 ** 8
 "Decimal yotta unit"
+R = 1000 ** 9
+"Decimal ronna unit"
+Q = 1000 ** 10
+"Decimal quetta unit"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.utils-6.1.0/releasenotes/notes/implement-zoneinfo-to-remove-pytz-fba6f70db09ecdb8.yaml
 
new/oslo.utils-6.2.0/releasenotes/notes/implement-zoneinfo-to-remove-pytz-fba6f70db09ecdb8.yaml
--- 
old/oslo.utils-6.1.0/releasenotes/notes/implement-zoneinfo-to-remove-pytz-fba6f70db09ecdb8.yaml
     1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.utils-6.2.0/releasenotes/notes/implement-zoneinfo-to-remove-pytz-fba6f70db09ecdb8.yaml
     2023-07-06 10:55:34.000000000 +0200
@@ -0,0 +1,5 @@
+---
+other:
+  - |
+    Implement zoneinfo to allow us to remove pytz's dependency for Python 3.9
+    and 3.10.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.utils-6.1.0/releasenotes/notes/netutils-get_my_ipv6-c9f124374655326b.yaml
 
new/oslo.utils-6.2.0/releasenotes/notes/netutils-get_my_ipv6-c9f124374655326b.yaml
--- 
old/oslo.utils-6.1.0/releasenotes/notes/netutils-get_my_ipv6-c9f124374655326b.yaml
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.utils-6.2.0/releasenotes/notes/netutils-get_my_ipv6-c9f124374655326b.yaml
  2023-07-06 10:55:34.000000000 +0200
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    New method ``netutils.get_my_ipv6()`` returns the IPv6 address
+    of the local machine.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/releasenotes/source/2023.1.rst 
new/oslo.utils-6.2.0/releasenotes/source/2023.1.rst
--- old/oslo.utils-6.1.0/releasenotes/source/2023.1.rst 1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.utils-6.2.0/releasenotes/source/2023.1.rst 2023-07-06 
10:55:34.000000000 +0200
@@ -0,0 +1,6 @@
+===========================
+2023.1 Series Release Notes
+===========================
+
+.. release-notes::
+   :branch: stable/2023.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/releasenotes/source/index.rst 
new/oslo.utils-6.2.0/releasenotes/source/index.rst
--- old/oslo.utils-6.1.0/releasenotes/source/index.rst  2022-11-17 
11:04:40.000000000 +0100
+++ new/oslo.utils-6.2.0/releasenotes/source/index.rst  2023-07-06 
10:55:34.000000000 +0200
@@ -6,6 +6,7 @@
    :maxdepth: 1
 
    unreleased
+   2023.1
    zed
    yoga
    xena
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/requirements.txt 
new/oslo.utils-6.2.0/requirements.txt
--- old/oslo.utils-6.1.0/requirements.txt       2022-11-17 11:04:40.000000000 
+0100
+++ new/oslo.utils-6.2.0/requirements.txt       2023-07-06 10:55:34.000000000 
+0200
@@ -11,3 +11,4 @@
 debtcollector>=1.2.0 # Apache-2.0
 pyparsing>=2.1.0 # MIT
 packaging>=20.4 # BSD
+tzdata>=2022.4 # MIT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/setup.cfg 
new/oslo.utils-6.2.0/setup.cfg
--- old/oslo.utils-6.1.0/setup.cfg      2022-11-17 11:05:08.790223000 +0100
+++ new/oslo.utils-6.2.0/setup.cfg      2023-07-06 10:56:01.374003600 +0200
@@ -17,6 +17,7 @@
        Programming Language :: Python :: 3
        Programming Language :: Python :: 3.8
        Programming Language :: Python :: 3.9
+       Programming Language :: Python :: 3.10
        Programming Language :: Python :: 3 :: Only
        Programming Language :: Python :: Implementation :: CPython
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.utils-6.1.0/test-requirements.txt 
new/oslo.utils-6.2.0/test-requirements.txt
--- old/oslo.utils-6.1.0/test-requirements.txt  2022-11-17 11:04:40.000000000 
+0100
+++ new/oslo.utils-6.2.0/test-requirements.txt  2023-07-06 10:55:34.000000000 
+0200
@@ -21,6 +21,6 @@
 oslo.config>=5.2.0 # Apache-2.0
 
 # Bandit security code scanner
-bandit>=1.6.0,<1.7.0 # Apache-2.0
+bandit>=1.7.0,<1.8.0 # Apache-2.0
 
 pre-commit>=2.6.0 # MIT

Reply via email to