commit e28bc95b8fc2c470149ad878824bd73e77128455 Author: overweight <5324761+overweight@user.noreply.gitee.com> Date: Mon Sep 30 11:15:03 2019 -0400 Package init diff --git a/0003-Revert-IPSet-doesn-t-need-MutableSet-inheritance.-Tr.patch b/0003-Revert-IPSet-doesn-t-need-MutableSet-inheritance.-Tr.patch new file mode 100644 index 0000000..f8d6b04 --- /dev/null +++ b/0003-Revert-IPSet-doesn-t-need-MutableSet-inheritance.-Tr.patch @@ -0,0 +1,33 @@ +From 29c6ebe53f02a5dba4f4d397b5a5d69682fe5471 Mon Sep 17 00:00:00 2001 +From: Jeff Ferland +Date: Tue, 30 Apr 2013 16:05:33 -0700 +Subject: [PATCH 03/35] Revert "IPSet doesn't **need** MutableSet inheritance. + Try/catch it." + +This reverts commit 4d6fbf91a50a2ebc24ff01d3406232d1666677ec. +We can't make IPSet work without various collections, so just use them all. +--- + IPy.py | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/IPy.py b/IPy.py +index 0e17aab..60f7a43 100644 +--- a/IPy.py ++++ b/IPy.py +@@ -1016,12 +1016,7 @@ class IP(IPint): + raise ValueError("%s cannot be converted to an IPv4 address." + % repr(self)) + +-try: +- IPSetBaseClass = collections.MutableSet +-except AttributeError: +- IPSetBaseClass = object +- +-class IPSet(IPSetBaseClass): ++class IPSet(collections.MutableSet): + def __init__(self, iterable=[]): + # Make sure it's iterable, otherwise wrap + if not isinstance(iterable, collections.Iterable): +-- +1.8.3.1 + diff --git a/0034-57-obey-explicit-version-for-small-int-as-string.patch b/0034-57-obey-explicit-version-for-small-int-as-string.patch new file mode 100644 index 0000000..56754e0 --- /dev/null +++ b/0034-57-obey-explicit-version-for-small-int-as-string.patch @@ -0,0 +1,67 @@ +From 55149cb1eecb486c2ea8a2170f7e58ae1b815e15 Mon Sep 17 00:00:00 2001 +From: Jeff Ferland +Date: Wed, 27 Feb 2019 14:45:30 -0800 +Subject: [PATCH 34/35] (#57) obey explicit version for small int as string + +--- + IPy.py | 8 ++++---- + test/test_IPy.py | 3 +++ + 2 files changed, 7 insertions(+), 4 deletions(-) + +diff --git a/IPy.py b/IPy.py +index 99c9196..486ad44 100644 +--- a/IPy.py ++++ b/IPy.py +@@ -243,7 +243,7 @@ class IPint(object): + else: + raise ValueError("can't parse") + +- (self.ip, parsedVersion) = parseAddress(ip) ++ (self.ip, parsedVersion) = parseAddress(ip, ipversion) + if ipversion == 0: + ipversion = parsedVersion + if prefixlen == -1: +@@ -1341,7 +1341,7 @@ def _parseAddressIPv6(ipstr): + index += 1 + return value + +-def parseAddress(ipstr): ++def parseAddress(ipstr, ipversion=0): + """ + Parse a string and return the corresponding IP address (as integer) + and a guess of the IP version. +@@ -1410,7 +1410,7 @@ def parseAddress(ipstr): + # assume IPv6 in pure hexadecimal notation + return (hexval, 6) + +- elif ipstr.find('.') != -1 or (intval is not None and intval < 256): ++ elif ipstr.find('.') != -1 or (intval is not None and intval < 256 and ipversion != 6): + # assume IPv4 ('127' gets interpreted as '127.0.0.0') + bytes = ipstr.split('.') + if len(bytes) > 4: +@@ -1428,7 +1428,7 @@ def parseAddress(ipstr): + # will be interpreted as IPv4 first byte + if intval > MAX_IPV6_ADDRESS: + raise ValueError("IP Address can't be larger than %x: %x" % (MAX_IPV6_ADDRESS, intval)) +- if intval <= MAX_IPV4_ADDRESS: ++ if intval <= MAX_IPV4_ADDRESS and ipversion != 6: + return (intval, 4) + else: + return (intval, 6) +diff --git a/test/test_IPy.py b/test/test_IPy.py +index d363d0e..dc4b61f 100644 +--- a/test/test_IPy.py ++++ b/test/test_IPy.py +@@ -891,6 +891,9 @@ class RegressionTest(unittest.TestCase): + self.assertEqual(len(IPy.IP('192.168.0.0/24')), 256) + self.assertRaises(ValueError, IPy.IP, '192.168.1.0/42') + ++ def testConsistentIP6StrInt(self): ++ self.assertEqual(IPy.IP('11', ipversion=6), IPy.IP(11, ipversion=6)) ++ + class TestConstrutor(unittest.TestCase): + def testCheckAddrPrefixlenOff(self): + self.assertRaises(ValueError, IPy.IP, 0xffffffff + 1, ipversion=4) +-- +1.8.3.1 + diff --git a/IPy-0.81.tar.gz b/IPy-0.81.tar.gz new file mode 100644 index 0000000..896d553 Binary files /dev/null and b/IPy-0.81.tar.gz differ diff --git a/python-IPy.spec b/python-IPy.spec new file mode 100644 index 0000000..cb83a6c --- /dev/null +++ b/python-IPy.spec @@ -0,0 +1,94 @@ +Name: python-IPy +Version: 0.81 +Release: 24 +Summary: Class and Tools for Handling of IPv4 and IPv6 Addresses and Networks +License: BSD +URL: https://github.com/autocracy/python-ipy +Source0: https://pypi.python.org/packages/source/I/IPy/IPy-%{version}.tar.gz + +Patch6000: 0003-Revert-IPSet-doesn-t-need-MutableSet-inheritance.-Tr.patch +Patch6001: 0034-57-obey-explicit-version-for-small-int-as-string.patch + +BuildArch: noarch +%if 0%{?with_python2} +BuildRequires: python2-devel python2-setuptools +%endif + +%if 0%{?with_python3} +BuildRequires: python3-devel python3-setuptools +%endif + +%description +The IP class allows a comfortable parsing and handling for most notations +in use for IPv4 and IPv6 addresses and networks. It was greatly inspired +by RIPE's Perl module NET::IP's interface but doesn't share the +implementation. It doesn't share non-CIDR netmasks, so funky stuff like a +netmask of 0xffffff0f can't be done here. + +%if 0%{?with_python2} +%package -n python2-IPy +Summary: Python2 package for python-IPy +%{?python_provide: %python_provide python2-IPy} + +%description -n python2-IPy +Python2 package for python-IPy +%endif + +%if 0%{?with_python3} +%package -n python3-IPy +Summary: Python3 package for python-IPy +%{?python_provide: %python_provide python3-IPy} +Provides: %{name}-python3 = %{version}-%{release} +Obsoletes: %{name}-python3 + +%description -n python3-IPy +Python3 package for python-IPy +%endif + +%prep +%autosetup -n IPy-%{version} -p1 + +%build +%if 0%{?with_python2} +%py2_build +%endif + +%if 0%{?with_python3} +%py3_build +%endif + +%install +%if 0%{?with_python2} +%py2_install +%endif + +%if 0%{?with_python3} +%py3_install +%endif + +%check +%if 0%{?with_python2} +PYTHONPATH=$PWD %{__python2} test/test_IPy.py +PYTHONPATH=$PWD %{__python2} test_doc.py +%endif + +%if 0%{?with_python3} +PYTHONPATH=$PWD %{__python3} test/test_IPy.py +#PYTHONPATH=$PWD %{__python3} test_doc.py # FAILS +%endif + +%if 0%{?with_python2} +%files -n python2-IPy +%defattr(-,root,root) +%{python2_sitelib}/* +%endif + +%if 0%{?with_python3} +%files -n python3-IPy +%defattr(-,root,root) +%{python3_sitelib}/* +%endif + +%changelog +* Thu Aug 22 2019 openEuler Buildteam - 0.81-24 +- Package init