From e28bc95b8fc2c470149ad878824bd73e77128455 Mon Sep 17 00:00:00 2001 From: overweight <5324761+overweight@user.noreply.gitee.com> Date: Mon, 30 Sep 2019 11:15:03 -0400 Subject: [PATCH] Package init --- ...sn-t-need-MutableSet-inheritance.-Tr.patch | 33 ++++++ ...icit-version-for-small-int-as-string.patch | 67 +++++++++++++ IPy-0.81.tar.gz | Bin 0 -> 32318 bytes python-IPy.spec | 94 ++++++++++++++++++ 4 files changed, 194 insertions(+) create mode 100644 0003-Revert-IPSet-doesn-t-need-MutableSet-inheritance.-Tr.patch create mode 100644 0034-57-obey-explicit-version-for-small-int-as-string.patch create mode 100644 IPy-0.81.tar.gz create mode 100644 python-IPy.spec 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 0000000000000000000000000000000000000000..896d553d62185152abbd0bdc7047ee80d2af380e GIT binary patch literal 32318 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͊$CioV3F&2o)lpH8Vt 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 literal 0 HcmV?d00001 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