Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-ipy for openSUSE:Factory checked in at 2021-01-29 14:57:11 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-ipy (Old) and /work/SRC/openSUSE:Factory/.python-ipy.new.28504 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-ipy" Fri Jan 29 14:57:11 2021 rev:10 rq:867592 version:1.01 Changes: -------- --- /work/SRC/openSUSE:Factory/python-ipy/python-ipy.changes 2019-05-25 13:17:42.760392831 +0200 +++ /work/SRC/openSUSE:Factory/.python-ipy.new.28504/python-ipy.changes 2021-01-29 14:57:28.441542667 +0100 @@ -1,0 +2,6 @@ +Thu Jan 28 22:53:39 UTC 2021 - Dirk M??ller <dmuel...@suse.com> + +- update to 1.01: + * Update to support up to Python 3.9 + +------------------------------------------------------------------- Old: ---- IPy-1.00.tar.gz New: ---- IPy-1.01.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-ipy.spec ++++++ --- /var/tmp/diff_new_pack.ErKNND/_old 2021-01-29 14:57:29.521544256 +0100 +++ /var/tmp/diff_new_pack.ErKNND/_new 2021-01-29 14:57:29.525544262 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-ipy # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# 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 @@ -18,12 +18,12 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-ipy -Version: 1.00 +Version: 1.01 Release: 0 Summary: Class and tools for handling of IPv4 and IPv6 addresses and networks License: BSD-3-Clause Group: Development/Languages/Python -Url: https://github.com/autocracy/python-ipy +URL: https://github.com/autocracy/python-ipy Source: https://files.pythonhosted.org/packages/source/I/IPy/IPy-%{version}.tar.gz BuildRequires: %{python_module setuptools} BuildRequires: fdupes ++++++ IPy-1.00.tar.gz -> IPy-1.01.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IPy-1.00/ChangeLog new/IPy-1.01/ChangeLog --- old/IPy-1.00/ChangeLog 2019-02-28 00:46:40.000000000 +0100 +++ new/IPy-1.01/ChangeLog 2020-12-01 21:11:08.000000000 +0100 @@ -1,4 +1,9 @@ +Version 1.01 (2020-12-01) +------------ + * Update to support up to Python 3.9 + Version 1.00 (2019-02-27) +------------ * Fix IPv6 string interpretation for small ints * Various Python3 language fixes * consider 127.0 range LOOPBACK not PRIVATE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IPy-1.00/IPy.py new/IPy-1.01/IPy.py --- old/IPy-1.00/IPy.py 2019-02-28 01:00:55.000000000 +0100 +++ new/IPy-1.01/IPy.py 2020-12-01 21:12:23.000000000 +0100 @@ -6,12 +6,14 @@ https://github.com/haypo/python-ipy """ -__version__ = '1.00' +__version__ = '1.01' import bisect -import collections -import sys import types +try: + import collections.abc as collections_abc +except ImportError: + import collections as collections_abc # Definition of the Ranges for IPv4 IPs # this should include www.iana.org/assignments/ipv4-address-space @@ -121,13 +123,14 @@ IPV6_TEST_MAP = 0xffffffffffffffffffffffff00000000 IPV6_MAP_MASK = 0x00000000000000000000ffff00000000 -if sys.version_info >= (3,): +try: + INT_TYPES = (int, long) + STR_TYPES = (str, unicode) + xrange +except NameError: INT_TYPES = (int,) STR_TYPES = (str,) xrange = range -else: - INT_TYPES = (int, long) - STR_TYPES = (str, unicode) class IPint(object): @@ -1022,10 +1025,10 @@ raise ValueError("%s cannot be converted to an IPv4 address." % repr(self)) -class IPSet(collections.MutableSet): +class IPSet(collections_abc.MutableSet): def __init__(self, iterable=[]): # Make sure it's iterable, otherwise wrap - if not isinstance(iterable, collections.Iterable): + if not isinstance(iterable, collections_abc.Iterable): raise TypeError("'%s' object is not iterable" % type(iterable).__name__) # Make sure we only accept IP objects @@ -1099,7 +1102,7 @@ def add(self, value): # Make sure it's iterable, otherwise wrap - if not isinstance(value, collections.Iterable): + if not isinstance(value, collections_abc.Iterable): value = [value] # Check type @@ -1113,7 +1116,7 @@ def discard(self, value): # Make sure it's iterable, otherwise wrap - if not isinstance(value, collections.Iterable): + if not isinstance(value, collections_abc.Iterable): value = [value] # This is much faster than iterating over the addresses diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IPy-1.00/PKG-INFO new/IPy-1.01/PKG-INFO --- old/IPy-1.00/PKG-INFO 2019-02-28 01:20:19.000000000 +0100 +++ new/IPy-1.01/PKG-INFO 2020-12-01 21:32:38.000000000 +0100 @@ -1,10 +1,10 @@ Metadata-Version: 1.1 Name: IPy -Version: 1.00 +Version: 1.01 Summary: Class and tools for handling of IPv4 and IPv6 addresses and networks Home-page: https://github.com/autocracy/python-ipy Author: Jeff Ferland -Author-email: j...@storyinmemo.com +Author-email: jeff_...@storyinmemo.com License: BSD License Download-URL: https://github.com/autocracy/python-ipy Description: IPy - class and tools for handling of IPv4 and IPv6 addresses and networks. @@ -186,7 +186,7 @@ Compatibility and links ======================= - IPy 1.00 works on Python version 2.6 - 3.7. + IPy 1.01 works on Python version 2.6 - 3.7. The IP module should work in Python 2.5 as long as the subtraction operation is not used. IPSet requires features of the collecitons class which appear @@ -209,147 +209,7 @@ Further Information might be available at: https://github.com/autocracy/python-ipy - What's new - ========== - Version 1.00 (2019-02-27) - * Fix IPv6 string interpretation for small ints - * Various Python3 language fixes - * consider 127.0 range LOOPBACK not PRIVATE - - Version 0.83 (2015-04-04) - ------------ - * Add carrier grade NAT ranges - * Unbreak lots of packing systems by not having a letter in the release version - - Version 0.82a (2014-10-07) - ------------ - * Fix version numbers in files - * Correct x.next() -> next(x) python3 compatability - - Version 0.82 (2014-10-06) - ------------ - - * Add support for array slices - * Add __and__ and isdisjoint for IPSet - * Fix a bug in IPSet where contains may incorrectly return false - * Added some fuzz testing - - Version 0.81 (2013-04-08) - ------------ - - * Correct reverseName() for IPv6 addresses, so IP('::1').reverseName() returns correct. - * Add network mask awareness to v46map() - * Fix Python 3 errors in IPSet class - * Make IPSet base class be object when MutableSet isn't available, fixing - errors in Python 2.5 - - Version 0.80 (2013-03-26) - ------------ - - * Drop support of Python older than 2.4 - * Python 3 does not need 2to3 conversion anymore (same code base) - * Fix adding of non-adjacent networks: - 192.168.0.0/24 + 192.168.255.0/24 made 192.168.0.0/23 - * Fix adding networks that don't create a valid subnet: - 192.168.1.0/24 + 192.168.2.0/24 made 192.168.1.0/23 - * Fix adding with an IPv6 address where .int() was < 32 bits made IPy believe it - was an IPv4 address: - ::ffff:0/112 + ::1:0:0/112 made 255.255.0.0/111 - * Add support of IPSets - * Add support for subtracting a network range - * Prevent IPv4 and IPv6 ranges from saying they contain each other - * Add a .v46map() method to convert mapped address ranges - such as IP('::ffff:192.168.1.1'); RFC 4291 - * Change sort order to more natural: - IPv4 before IPv6; less-specific prefixes first (/0 before /32) - - - Version 0.76 (2013-03-19) - ------------------------- - - * ip == other and ip != other doesn't fail with an exception anymore if other - is not a IP object - * Add IP.get_mac() method: get the 802.3 MAC address from IPv6 RFC 2464 - address. - * Fix IP('::/0')[0]: return an IPv6 instead of an IPv4 address - - Version 0.75 (2011-04-12) - ------------------------- - - * IP('::/0').netmask() gives IP('::') instead of IP('0.0.0.0') - - Version 0.74 (2011-02-16) - ------------------------- - - * Fix tests for Python 3.1 and 3.2 - * ip.__nonzero__() and (ipa in ipb) return a bool instead of 0 or 1 - * IP('0.0.0.0/0') + IP('0.0.0.0/0') raises an error, fix written by Arfrever - - Version 0.73 (2011-02-15) - ------------------------- - - * Support Python 3: setup.py runs 2to3 - * Update the ranges for IPv6 IPs - * Fix reverseName() and reverseNames() for IPv4 in IPv6 addresses - * Drop support of Python < 2.5 - - Version 0.72 (2010-11-23) - ------------------------- - - * Include examples and MANIFEST.in in source build (add them to - MANIFEST.in) - * Remove __rcsid__ constant from IPy module - - Version 0.71 (2010-10-01) - ------------------------- - - * Use xrange() instead of range() - * Use isinstance(x, int) instead of type(x) == types.IntType - * Prepare support of Python3 (use integer division: x // y) - * Fix IP(long) constructor: ensure that the address is not too large - * Constructor raise a TypeError if the type is not int, long, - str or unicode - * 223.0.0.0/8 is now public (belongs to APNIC) - - Version 0.70 (2009-10-29) - ------------------------- - - * New "major" version because it may break compatibility - * Fix __cmp__(): IP('0.0.0.0/0') and IP('0.0.0.0') are not equal - * Fix IP.net() of the network "::/0": "::" instead of "0.0.0.0". - IPy 0.63 should fix this bug, but it wasn't. - - Version 0.64 (2009-08-19) - ------------------------- - - * Create MANIFEST.in to fix setup.py bdist_rpm, fix by Robert Nickel - - Version 0.63 (2009-06-23) - ------------------------- - - * Fix formatting of "IPv4 in IPv6" network, eg. IP('::ffff:192.168.10.0/120'), - the netmask ("/120" in the example) was missing! - - Version 0.62 (2008-07-15) - ------------------------- - - * Fix reverse DNS of IPv6 address: use ".ip6.arpa." suffix instead of - deprecated ".ip6.int." suffix - - Version 0.61 (2008-06-12) - ------------------------- - - * Patch from Aras Vaichas allowing the [-1] operator - to work with an IP object of size 1. - - Version 0.60 (2008-05-16) - ------------------------- - - * strCompressed() formats '::ffff:a.b.c.d' correctly - * Use strCompressed() instead of strFullsize() to format IP addresses, - ouput is smarter with IPv6 address - * Remove check_addr_prefixlen because it generates invalid IP address Keywords: ipv4 ipv6 netmask Platform: UNKNOWN Classifier: Development Status :: 5 - Production/Stable diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IPy-1.00/README.rst new/IPy-1.01/README.rst --- old/IPy-1.00/README.rst 2019-02-28 00:55:17.000000000 +0100 +++ new/IPy-1.01/README.rst 2020-12-01 21:15:08.000000000 +0100 @@ -177,7 +177,7 @@ Compatibility and links ======================= -IPy 1.00 works on Python version 2.6 - 3.7. +IPy 1.01 works on Python version 2.6 - 3.7. The IP module should work in Python 2.5 as long as the subtraction operation is not used. IPSet requires features of the collecitons class which appear diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IPy-1.00/example/confbuilder.py new/IPy-1.01/example/confbuilder.py --- old/IPy-1.00/example/confbuilder.py 2018-02-01 09:32:18.000000000 +0100 +++ new/IPy-1.01/example/confbuilder.py 2020-12-01 21:08:10.000000000 +0100 @@ -1,3 +1,4 @@ +from __future__ import print_function # This is a hack I use to generate my tinydns configuration # It serves as e test for converting from Perl Net::IP to # Python and IPy @@ -15,11 +16,11 @@ 'ns.dorsch.org': '195.143.234.25', 'ns.c0re.jp': '217.6.214.130'} -print "# *** nameservers ***" -for x in ns.keys(): - print "=%s:%s" % (x, ns[x]) +print("# *** nameservers ***") +for x in ns: + print("=%s:%s" % (x, ns[x])) -print "\n# *** domains ***" +print("\n# *** domains ***") fd = open('domains') @@ -28,13 +29,13 @@ if x[-1] == '\n': x = x[:-1] (domain, owner) = x.split(':') - print "'%s:Contact for this domain is %s" % (domain, owner) - for y in ns.keys(): - print ".%s::%s" % (domain, y) + print("'%s:Contact for this domain is %s" % (domain, owner)) + for y in ns: + print(".%s::%s" % (domain, y)) fd.close() -print "\n# *** Networks ***" +print("\n# *** Networks ***") fd = open('networks') ip6map = {} @@ -47,12 +48,12 @@ if len(x) > 0 and x[0] != '#': nets = x.split(',') name = nets.pop(0) - print "# Network: %s" % name + print("# Network: %s" % name) for y in nets: ip = IPy.IP(y) - print "# Address range: %s (%s), %d addresses" % (ip.strCompressed(), ip.iptype(), ip.len()) - print "=net.%s:%s" % (name, ip.net()) - print "=broadcast.%s:%s" % (name, ip.broadcast()) + print("# Address range: %s (%s), %d addresses" % (ip.strCompressed(), ip.iptype(), ip.len())) + print("=net.%s:%s" % (name, ip.net())) + print("=broadcast.%s:%s" % (name, ip.broadcast())) if ip.version() == 4: for z in ip: @@ -61,14 +62,14 @@ rmap[z.int()] = z.strBin() + "." + name else: # IPv6 - for z in ns.keys(): + for z in ns: for v in ip.reverseName(): - print ".%s::%s" % (v, z) + print(".%s::%s" % (v, z)) ip6map[ip.strFullsize(0)] = name fd.close() -print "\n# *** hosts ***" +print("\n# *** hosts ***") fd = open('hosts') @@ -77,12 +78,12 @@ x = x[:-1] if x != '' and x[0] != '#': if "@Z'.".find(x[0]) >= 0: - print x + print(x) else: if "=+'".find(x[0]) >= 0: i = x.split(':') rmap[IPy.IP(i[1]).int()] = '' - print x + print(x) else: x = x[1:] x += '||||' @@ -107,35 +108,33 @@ ip = IPy.IP(y) if ip.version() == 4: # IPv4 is easy - if not nmap.has_key(ip.int()): - print >>sys.stderr, "*** warning: no network for %s (%s) - ignoring" % (y, name) - print "# no network for %s (%s)" % (y, name) + if ip.int() not in nmap: + print("*** warning: no network for %s (%s) - ignoring" % (y, name), file=sys.stderr) + print("# no network for %s (%s)" % (y, name)) else: - print "=%s.%s:%s" % (name, nmap[ip.int()], y) - print "'%s.%s:Host contact is %s" % (name, nmap[ip.int()], admin) + print("=%s.%s:%s" % (name, nmap[ip.int()], y)) + print("'%s.%s:Host contact is %s" % (name, nmap[ip.int()], admin)) rmap[ip.int()] = '' for z in aliases: - print "+%s:%s" % (z, ip) - print "'%s:Host contact is %s" % (z, admin) + print("+%s:%s" % (z, ip)) + print("'%s:Host contact is %s" % (z, admin)) else: #IPv6 here net = ip.strFullsize(0) net = net[:19] + ':0000:0000:0000:0000' - if ip6map.has_key(net): - print >>sys.stderr, "*** warning: no network for %s (%s) - ignoring" % (ip, name) - print "# no network for %s (%s) - ignoring" % (ip, name) + if net in ip6map: + print("*** warning: no network for %s (%s) - ignoring" % (ip, name), file=sys.stderr) + print("# no network for %s (%s) - ignoring" % (ip, name)) else: - print "6%s.%s:%s"; (name, ip6map[net], ip.strHex()[2:]) + print("6%s.%s:%s" % (name, ip6map[net], ip.strHex()[2:])) for z in aliases: - print "3%s:%s" % (name, ip.strHex()[2:]) - print "'%s:Host contact is %s" % (name, admin) + print("3%s:%s" % (name, ip.strHex()[2:])) + print("'%s:Host contact is %s" % (name, admin)) fd.close() -print "\n# *** reverse lookup ***" -k = nmap.keys() -k.sort() -for x in k: - if rmap.has_key(x) and rmap[x] != '': - print "=%s:%s" % (rmap[x], str(IPy.IP(x))) +print("\n# *** reverse lookup ***") +for x in sorted(nmap): + if rmap.get(x): + print("=%s:%s" % (rmap[x], str(IPy.IP(x)))) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IPy-1.00/setup.py new/IPy-1.01/setup.py --- old/IPy-1.00/setup.py 2019-02-28 01:20:06.000000000 +0100 +++ new/IPy-1.01/setup.py 2020-12-01 21:32:26.000000000 +0100 @@ -23,7 +23,7 @@ import sys from distutils.core import setup -VERSION = '1.00' +VERSION = '1.01' options = {} @@ -37,7 +37,7 @@ with open('ChangeLog') as fp: ChangeLog += fp.read().strip() -LONG_DESCRIPTION = README + ChangeLog +LONG_DESCRIPTION = README CLASSIFIERS = [ 'Development Status :: 5 - Production/Stable', 'Intended Audience :: Developers', @@ -62,7 +62,7 @@ long_description=LONG_DESCRIPTION, author="Maximillian Dornseif", maintainer="Jeff Ferland", - maintainer_email="j...@storyinmemo.com", + maintainer_email="jeff_...@storyinmemo.com", license="BSD License", keywords="ipv4 ipv6 netmask", url=URL, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/IPy-1.00/test/test_IPy.py new/IPy-1.01/test/test_IPy.py --- old/IPy-1.00/test/test_IPy.py 2019-02-28 00:46:37.000000000 +0100 +++ new/IPy-1.01/test/test_IPy.py 2020-12-01 21:08:10.000000000 +0100 @@ -788,7 +788,11 @@ it.setDaemon(True) it.start() it.join(timeout_duration) - if it.isAlive(): + if hasattr(it, 'is_alive'): + is_alive = it.is_alive() + else: + is_alive = it.isAlive() + if is_alive: return default else: return it.result