git: c6aca476cbbb - main - www/py-py-restclient: Fix build with setuptools 58.0.0+
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 25 Mar 2022 13:51:17 UTC
The branch main has been updated by sunpoet:
URL: https://cgit.FreeBSD.org/ports/commit/?id=c6aca476cbbb28671a3ec7867cd461a538db1bc6
commit c6aca476cbbb28671a3ec7867cd461a538db1bc6
Author: Po-Chuan Hsieh <sunpoet@FreeBSD.org>
AuthorDate: 2022-03-25 13:35:18 +0000
Commit: Po-Chuan Hsieh <sunpoet@FreeBSD.org>
CommitDate: 2022-03-25 13:38:25 +0000
www/py-py-restclient: Fix build with setuptools 58.0.0+
With hat: python
---
www/py-py-restclient/files/patch-2to3 | 312 ++++++++++++++++++++++++++++++++++
1 file changed, 312 insertions(+)
diff --git a/www/py-py-restclient/files/patch-2to3 b/www/py-py-restclient/files/patch-2to3
new file mode 100644
index 000000000000..0698237eb7ae
--- /dev/null
+++ b/www/py-py-restclient/files/patch-2to3
@@ -0,0 +1,312 @@
+--- restclient/bin/rest_cli.py.orig 2009-08-19 17:00:34 UTC
++++ restclient/bin/rest_cli.py
+@@ -17,12 +17,12 @@
+ import os
+ import sys
+ from optparse import OptionParser, OptionGroup
+-import urlparse
+-import urllib
++import urllib.parse
++import urllib.request, urllib.parse, urllib.error
+
+ # python 2.6 and above compatibility
+ try:
+- from urlparse import parse_qs as _parse_qs
++ from urllib.parse import parse_qs as _parse_qs
+ except ImportError:
+ from cgi import parse_qs as _parse_qs
+
+@@ -31,7 +31,7 @@ from restclient.transport import useCurl, CurlTranspor
+
+ class Url(object):
+ def __init__(self, string):
+- parts = urlparse.urlsplit(urllib.unquote(string))
++ parts = urllib.parse.urlsplit(urllib.parse.unquote(string))
+ if parts[0] != 'http' and parts[0] != 'https':
+ raise ValueError('Invalid url: %s.' % string)
+
+@@ -74,8 +74,8 @@ def make_query(string, method='GET', fname=None,
+ list_headers=None, output=None, proxy=None):
+ try:
+ uri = Url(string)
+- except ValueError, e:
+- print >>sys.stderr, e
++ except ValueError as e:
++ print(e, file=sys.stderr)
+ return
+
+ transport = None
+@@ -84,7 +84,7 @@ def make_query(string, method='GET', fname=None,
+ try:
+ proxy_url = Url(proxy)
+ except:
+- print >>sys.stderr, "proxy url is invalid"
++ print("proxy url is invalid", file=sys.stderr)
+ return
+ proxy_infos = { "proxy_host": proxy_url.hostname }
+ if proxy_url.port is not None:
+@@ -132,7 +132,7 @@ def make_query(string, method='GET', fname=None,
+ f.write(data)
+ f.close()
+ except:
+- print >>sys.stderr, "Can't save result in %s" % output
++ print("Can't save result in %s" % output, file=sys.stderr)
+ return
+
+
+--- restclient/errors.py.orig 2009-08-19 17:00:34 UTC
++++ restclient/errors.py
+@@ -38,7 +38,7 @@ class ResourceError(Exception):
+ return self.msg
+ try:
+ return self._fmt % self.__dict__
+- except (NameError, ValueError, KeyError), e:
++ except (NameError, ValueError, KeyError) as e:
+ return 'Unprintable exception %s: %s' \
+ % (self.__class__.__name__, str(e))
+
+--- restclient/rest.py.orig 2009-08-23 09:33:14 UTC
++++ restclient/rest.py
+@@ -57,9 +57,9 @@ This module provide a common interface for all HTTP eq
+ import cgi
+ import mimetypes
+ import os
+-import StringIO
++import io
+ import types
+-import urllib
++import urllib.request, urllib.parse, urllib.error
+
+ try:
+ import chardet
+@@ -337,13 +337,13 @@ class RestClient(object):
+ except IOError:
+ pass
+ size = int(os.fstat(body.fileno())[6])
+- elif isinstance(body, types.StringTypes):
++ elif isinstance(body, (str,)):
+ size = len(body)
+ body = to_bytestring(body)
+ elif isinstance(body, dict):
+ _headers.setdefault('Content-Type', "application/x-www-form-urlencoded; charset=utf-8")
+ body = form_encode(body)
+- print body
++ print(body)
+ size = len(body)
+ else:
+ raise RequestError('Unable to calculate '
+@@ -360,7 +360,7 @@ class RestClient(object):
+ try:
+ resp, data = self.transport.request(self.make_uri(uri, path, **params),
+ method=method, body=body, headers=_headers)
+- except TransportError, e:
++ except TransportError as e:
+ raise RequestError(str(e))
+
+ self.status = status_code = resp.status
+@@ -444,7 +444,7 @@ class RestClient(object):
+ _path = []
+ trailing_slash = False
+ for s in path:
+- if s is not None and isinstance(s, basestring):
++ if s is not None and isinstance(s, str):
+ if len(s) > 1 and s.endswith('/'):
+ trailing_slash = True
+ else:
+@@ -463,7 +463,7 @@ class RestClient(object):
+ retval.append(path_str)
+
+ params = []
+- for k, v in query.items():
++ for k, v in list(query.items()):
+ if type(v) in (list, tuple):
+ params.extend([(k, i) for i in v if i is not None])
+ elif v is not None:
+@@ -478,16 +478,16 @@ class RestClient(object):
+
+ def url_quote(s, charset='utf-8', safe='/:'):
+ """URL encode a single string with a given encoding."""
+- if isinstance(s, unicode):
++ if isinstance(s, str):
+ s = s.encode(charset)
+ elif not isinstance(s, str):
+ s = str(s)
+- return urllib.quote(s, safe=safe)
++ return urllib.parse.quote(s, safe=safe)
+
+ def url_encode(obj, charset="utf8", encode_keys=False):
+ if isinstance(obj, dict):
+ items = []
+- for k, v in obj.iteritems():
++ for k, v in obj.items():
+ if not isinstance(v, (tuple, list)):
+ v = [v]
+ items.append((k, v))
+@@ -496,7 +496,7 @@ def url_encode(obj, charset="utf8", encode_keys=False)
+
+ tmp = []
+ for key, values in items:
+- if encode_keys and isinstance(key, unicode):
++ if encode_keys and isinstance(key, str):
+ key = key.encode(charset)
+ else:
+ key = str(key)
+@@ -504,18 +504,18 @@ def url_encode(obj, charset="utf8", encode_keys=False)
+ for value in values:
+ if value is None:
+ continue
+- elif isinstance(value, unicode):
++ elif isinstance(value, str):
+ value = value.encode(charset)
+ else:
+ value = str(value)
+- tmp.append('%s=%s' % (urllib.quote(key),
+- urllib.quote_plus(value)))
++ tmp.append('%s=%s' % (urllib.parse.quote(key),
++ urllib.parse.quote_plus(value)))
+
+ return '&'.join(tmp)
+
+ def form_encode(obj, charser="utf8"):
+ tmp = []
+- for key, value in obj.items():
++ for key, value in list(obj.items()):
+ tmp.append("%s=%s" % (url_quote(key),
+ url_quote(value)))
+ return to_bytestring("&".join(tmp))
+@@ -596,39 +596,39 @@ def _getCharacterEncoding(http_headers, xml_data):
+ elif xml_data[:4] == '\x00\x3c\x00\x3f':
+ # UTF-16BE
+ sniffed_xml_encoding = 'utf-16be'
+- xml_data = unicode(xml_data, 'utf-16be').encode('utf-8')
++ xml_data = str(xml_data, 'utf-16be').encode('utf-8')
+ elif (len(xml_data) >= 4) and (xml_data[:2] == '\xfe\xff') and (xml_data[2:4] != '\x00\x00'):
+ # UTF-16BE with BOM
+ sniffed_xml_encoding = 'utf-16be'
+- xml_data = unicode(xml_data[2:], 'utf-16be').encode('utf-8')
++ xml_data = str(xml_data[2:], 'utf-16be').encode('utf-8')
+ elif xml_data[:4] == '\x3c\x00\x3f\x00':
+ # UTF-16LE
+ sniffed_xml_encoding = 'utf-16le'
+- xml_data = unicode(xml_data, 'utf-16le').encode('utf-8')
++ xml_data = str(xml_data, 'utf-16le').encode('utf-8')
+ elif (len(xml_data) >= 4) and (xml_data[:2] == '\xff\xfe') and (xml_data[2:4] != '\x00\x00'):
+ # UTF-16LE with BOM
+ sniffed_xml_encoding = 'utf-16le'
+- xml_data = unicode(xml_data[2:], 'utf-16le').encode('utf-8')
++ xml_data = str(xml_data[2:], 'utf-16le').encode('utf-8')
+ elif xml_data[:4] == '\x00\x00\x00\x3c':
+ # UTF-32BE
+ sniffed_xml_encoding = 'utf-32be'
+- xml_data = unicode(xml_data, 'utf-32be').encode('utf-8')
++ xml_data = str(xml_data, 'utf-32be').encode('utf-8')
+ elif xml_data[:4] == '\x3c\x00\x00\x00':
+ # UTF-32LE
+ sniffed_xml_encoding = 'utf-32le'
+- xml_data = unicode(xml_data, 'utf-32le').encode('utf-8')
++ xml_data = str(xml_data, 'utf-32le').encode('utf-8')
+ elif xml_data[:4] == '\x00\x00\xfe\xff':
+ # UTF-32BE with BOM
+ sniffed_xml_encoding = 'utf-32be'
+- xml_data = unicode(xml_data[4:], 'utf-32be').encode('utf-8')
++ xml_data = str(xml_data[4:], 'utf-32be').encode('utf-8')
+ elif xml_data[:4] == '\xff\xfe\x00\x00':
+ # UTF-32LE with BOM
+ sniffed_xml_encoding = 'utf-32le'
+- xml_data = unicode(xml_data[4:], 'utf-32le').encode('utf-8')
++ xml_data = str(xml_data[4:], 'utf-32le').encode('utf-8')
+ elif xml_data[:3] == '\xef\xbb\xbf':
+ # UTF-8 with BOM
+ sniffed_xml_encoding = 'utf-8'
+- xml_data = unicode(xml_data[3:], 'utf-8').encode('utf-8')
++ xml_data = str(xml_data[3:], 'utf-8').encode('utf-8')
+ else:
+ # ASCII-compatible
+ pass
+@@ -652,7 +652,7 @@ def _getCharacterEncoding(http_headers, xml_data):
+ true_encoding = http_encoding or 'us-ascii'
+ elif http_content_type.startswith('text/'):
+ true_encoding = http_encoding or 'us-ascii'
+- elif http_headers and (not http_headers.has_key('content-type')):
++ elif http_headers and ('content-type' not in http_headers):
+ true_encoding = xml_encoding or 'iso-8859-1'
+ else:
+ true_encoding = xml_encoding or 'utf-8'
+--- restclient/transport/_curl.py.orig 2009-08-19 17:00:34 UTC
++++ restclient/transport/_curl.py
+@@ -20,7 +20,7 @@ curl transport
+ """
+
+ import re
+-import StringIO
++import io
+ import sys
+
+
+@@ -36,7 +36,7 @@ except ImportError:
+
+ NORMALIZE_SPACE = re.compile(r'(?:\r\n)?[ \t]+')
+ def _normalize_headers(headers):
+- return dict([ (key.lower(), NORMALIZE_SPACE.sub(value, ' ').strip()) for (key, value) in headers.iteritems()])
++ return dict([ (key.lower(), NORMALIZE_SPACE.sub(value, ' ').strip()) for (key, value) in headers.items()])
+
+
+ def _get_pycurl_errcode(symbol, default):
+@@ -164,8 +164,8 @@ class CurlTransport(HTTPTransportBase):
+ else: # no timeout by default
+ c.setopt(pycurl.TIMEOUT, 0)
+
+- data = StringIO.StringIO()
+- header = StringIO.StringIO()
++ data = io.StringIO()
++ header = io.StringIO()
+ c.setopt(pycurl.WRITEFUNCTION, data.write)
+ c.setopt(pycurl.HEADERFUNCTION, header.write)
+ c.setopt(pycurl.URL, url)
+@@ -226,7 +226,7 @@ class CurlTransport(HTTPTransportBase):
+ content = body
+ else:
+ body = to_bytestring(body)
+- content = StringIO.StringIO(body)
++ content = io.StringIO(body)
+ if 'Content-Length' in headers:
+ del headers['Content-Length']
+ content_length = len(body)
+@@ -240,14 +240,14 @@ class CurlTransport(HTTPTransportBase):
+ if headers:
+ _normalize_headers(headers)
+ c.setopt(pycurl.HTTPHEADER,
+- ["%s: %s" % pair for pair in sorted(headers.iteritems())])
++ ["%s: %s" % pair for pair in sorted(headers.items())])
+
+ try:
+ c.perform()
+- except pycurl.error, e:
++ except pycurl.error as e:
+ if e[0] != CURLE_SEND_ERROR:
+ if restclient.debuglevel > 0:
+- print >>sys.stderr, str(e)
++ print(str(e), file=sys.stderr)
+ raise TransportError(e)
+
+ response_headers = self._parseHeaders(header)
+--- restclient/transport/base.py.orig 2009-08-19 17:00:34 UTC
++++ restclient/transport/base.py
+@@ -46,7 +46,7 @@ class HTTPResponse(dict):
+ reason = "Ok"
+
+ def __init__(self, info):
+- for key, value in info.iteritems():
++ for key, value in info.items():
+ self[key] = value
+ self.status = int(self.get('status', self.status))
+ self.final_url = self.get('final_url', self.final_url)
+@@ -55,7 +55,7 @@ class HTTPResponse(dict):
+ if name == 'dict':
+ return self
+ else:
+- raise AttributeError, name
++ raise AttributeError(name)
+
+ def __repr__(self):
+ return "<%s status %s for %s>" % (self.__class__.__name__,