comparison mercurial/pycompat.py @ 28882:800ec7c048b0

pycompat: add util.urlerr util.urlreq classes for py3 compat python3 url.request and url.error are mapped as util.urlreq/util.urlerr python2 equivalents from urllib/urllib2 are mapped according to the py3 hierarchy
author timeless <timeless@mozdev.org>
date Thu, 07 Apr 2016 00:05:48 +0000
parents 68a946e83188
children b501579147f1
comparison
equal deleted inserted replaced
28881:d9f7f590f1e3 28882:800ec7c048b0
23 except ImportError: 23 except ImportError:
24 import queue as _queue 24 import queue as _queue
25 empty = _queue.Empty 25 empty = _queue.Empty
26 queue = _queue.Queue 26 queue = _queue.Queue
27 27
28 class _pycompatstub(object):
29 pass
30
31 def _alias(alias, origin, items):
32 """ populate a _pycompatstub
33
34 copies items from origin to alias
35 """
36 def hgcase(item):
37 return item.replace('_', '').lower()
38 for item in items:
39 try:
40 setattr(alias, hgcase(item), getattr(origin, item))
41 except AttributeError:
42 pass
43
44 urlreq = _pycompatstub()
45 urlerr = _pycompatstub()
46 try:
47 import urllib2
48 import urllib
49 _alias(urlreq, urllib, (
50 "addclosehook",
51 "addinfourl",
52 "ftpwrapper",
53 "pathname2url",
54 "quote",
55 "splitattr",
56 "splitpasswd",
57 "splitport",
58 "splituser",
59 "unquote",
60 "url2pathname",
61 "urlencode",
62 "urlencode",
63 ))
64 _alias(urlreq, urllib2, (
65 "AbstractHTTPHandler",
66 "BaseHandler",
67 "build_opener",
68 "FileHandler",
69 "FTPHandler",
70 "HTTPBasicAuthHandler",
71 "HTTPDigestAuthHandler",
72 "HTTPHandler",
73 "HTTPPasswordMgrWithDefaultRealm",
74 "HTTPSHandler",
75 "install_opener",
76 "ProxyHandler",
77 "Request",
78 "urlopen",
79 ))
80 _alias(urlerr, urllib2, (
81 "HTTPError",
82 "URLError",
83 ))
84
85 except ImportError:
86 import urllib.request
87 _alias(urlreq, urllib.request, (
88 "AbstractHTTPHandler",
89 "addclosehook",
90 "addinfourl",
91 "BaseHandler",
92 "build_opener",
93 "FileHandler",
94 "FTPHandler",
95 "ftpwrapper",
96 "HTTPHandler",
97 "HTTPSHandler",
98 "install_opener",
99 "pathname2url",
100 "HTTPBasicAuthHandler",
101 "HTTPDigestAuthHandler",
102 "ProxyHandler",
103 "quote",
104 "Request",
105 "splitattr",
106 "splitpasswd",
107 "splitport",
108 "splituser",
109 "unquote",
110 "url2pathname",
111 "urlopen",
112 ))
113 import urllib.error
114 _alias(urlerr, urllib.error, (
115 "HTTPError",
116 "URLError",
117 ))
118
28 try: 119 try:
29 xrange 120 xrange
30 except NameError: 121 except NameError:
31 import builtins 122 import builtins
32 builtins.xrange = range 123 builtins.xrange = range