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__,