# HG changeset patch # User Johnny Wezel # Date 1454880617 -3600 # Node ID 1fe2c20adeba2d89b5d05e13144607cd5834f72f # Parent 50b5966b55663b3a95e157680dc033b321360eac Python3 support diff -r 50b5966b5566 -r 1fe2c20adeba test/test_main.py --- a/test/test_main.py Mon Sep 14 15:19:11 2015 +0100 +++ b/test/test_main.py Sun Feb 07 22:30:17 2016 +0100 @@ -1,5 +1,12 @@ # coding=utf-8 +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import * import unittest from whois import extract_domain diff -r 50b5966b5566 -r 1fe2c20adeba test/test_nicclient.py --- a/test/test_nicclient.py Mon Sep 14 15:19:11 2015 +0100 +++ b/test/test_nicclient.py Sun Feb 07 22:30:17 2016 +0100 @@ -1,5 +1,12 @@ # coding=utf-8 +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import * import unittest from whois.whois import NICClient diff -r 50b5966b5566 -r 1fe2c20adeba test/test_parser.py --- a/test/test_parser.py Mon Sep 14 15:19:11 2015 +0100 +++ b/test/test_parser.py Sun Feb 07 22:30:17 2016 +0100 @@ -1,3 +1,10 @@ +from __future__ import print_function +from __future__ import unicode_literals +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import * import unittest import os @@ -69,7 +76,7 @@ result = results.get(key) expected = expected_results.get(key) if expected != result: - print "%s \t(%s):\t %s != %s" % (domain, key, result, expected) + print("%s \t(%s):\t %s != %s" % (domain, key, result, expected)) fail += 1 if fail: diff -r 50b5966b5566 -r 1fe2c20adeba whois/__init__.py --- a/whois/__init__.py Mon Sep 14 15:19:11 2015 +0100 +++ b/whois/__init__.py Sun Feb 07 22:30:17 2016 +0100 @@ -1,10 +1,17 @@ +from __future__ import print_function +from __future__ import absolute_import +from __future__ import unicode_literals +from __future__ import division +from future import standard_library +standard_library.install_aliases() +from builtins import * import re import sys import os import subprocess import socket -from parser import WhoisEntry -from whois import NICClient +from .parser import WhoisEntry +from .whois import NICClient def whois(url, command=False): @@ -50,7 +57,7 @@ if not line.startswith('#') ] - if type(url) is not unicode: + if type(url) is not str: url = url.decode('utf-8') url = re.sub('^.*://', '', url.encode('idna')).split('/')[0].lower() domain = [] @@ -67,6 +74,6 @@ try: url = sys.argv[1] except IndexError: - print 'Usage: %s url' % sys.argv[0] + print('Usage: %s url' % sys.argv[0]) else: - print whois(url) + print(whois(url)) diff -r 50b5966b5566 -r 1fe2c20adeba whois/parser.py --- a/whois/parser.py Mon Sep 14 15:19:11 2015 +0100 +++ b/whois/parser.py Sun Feb 07 22:30:17 2016 +0100 @@ -1,3 +1,12 @@ +from __future__ import absolute_import +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from future import standard_library +standard_library.install_aliases() +from builtins import * +from builtins import str +from past.builtins import basestring # coding=utf-8 # parser.py - Module for parsing whois response data # Copyright (c) 2008 Andrey Petrov @@ -11,7 +20,7 @@ import re try: import dateutil.parser as dp - from time_zones import tz_data + from .time_zones import tz_data DATEUTIL = True except ImportError: DATEUTIL = False @@ -110,7 +119,7 @@ """The first time an attribute is called it will be calculated here. The attribute is then set to be accessed directly by subsequent calls. """ - for attr, regex in self._regex.items(): + for attr, regex in list(self._regex.items()): if regex: values = [] for value in re.findall(regex, self.text, re.IGNORECASE): diff -r 50b5966b5566 -r 1fe2c20adeba whois/time_zones.py --- a/whois/time_zones.py Mon Sep 14 15:19:11 2015 +0100 +++ b/whois/time_zones.py Sun Feb 07 22:30:17 2016 +0100 @@ -1,3 +1,10 @@ +from __future__ import unicode_literals +from __future__ import print_function +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import * _tz_string = '''-12 Y -11 X NUT SST -10 W CKT HAST HST TAHT TKT diff -r 50b5966b5566 -r 1fe2c20adeba whois/whois.py --- a/whois/whois.py Mon Sep 14 15:19:11 2015 +0100 +++ b/whois/whois.py Sun Feb 07 22:30:17 2016 +0100 @@ -24,6 +24,14 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ +from __future__ import print_function +from __future__ import unicode_literals +from __future__ import division +from __future__ import absolute_import +from future import standard_library +standard_library.install_aliases() +from builtins import * +from builtins import object import re import sys import socket @@ -31,17 +39,7 @@ def enforce_ascii(a): - if isinstance(a, str) or isinstance(a, unicode): - r = "" - for i in a: - if ord(i) >= 128: - r += "?" - else: - r += i - return r - else: - return a - + return a if isinstance(a, bytes) else bytes([63 if ord(c) > 127 else ord(c) for c in a]) class NICClient(object): @@ -102,7 +100,7 @@ s.connect((hostname, 43)) # end takes bytes as an input queryBytes = None - if type(query) is not unicode: + if type(query) is not str: query = query.decode('utf-8') if hostname == NICClient.DENICHOST: @@ -121,12 +119,12 @@ break s.close() except socket.error as socketerror: - print 'Socket Error:', socketerror + print('Socket Error:', socketerror) return '' else: nhost = None response = enforce_ascii(response) - if 'with "=xxx"' in response: + if b'with "=xxx"' in response: return self.whois(query, hostname, flags, True) if flags & NICClient.WHOIS_RECURSE and nhost is None: nhost = self.findwhois_server(response.decode(), hostname, query) @@ -136,8 +134,8 @@ def choose_server(self, domain): """Choose initial lookup NIC host""" - if type(domain) is not unicode: - domain = domain.decode('utf-8').encode('idna') + if type(domain) is not str: + domain = domain.decode('utf-8').encode('idna').decode('utf-8') if domain.endswith("-NORID"): return NICClient.NORIDHOST pos = domain.rfind('.') @@ -250,4 +248,4 @@ options, args = parse_command_line(sys.argv) if options.b_quicklookup: flags = flags | NICClient.WHOIS_QUICK - print nic_client.whois_lookup(options.__dict__, args[1], flags) + print(nic_client.whois_lookup(options.__dict__, args[1], flags))