mercurial/urllibcompat.py
author Augie Fackler <augie@google.com>
Sun, 06 Oct 2019 09:45:02 -0400
changeset 43076 2372284d9457
parent 40159 5774fc623a18
child 43077 687b865b95ad
permissions -rw-r--r--
formatting: blacken the codebase This is using my patch to black (https://github.com/psf/black/pull/826) so we don't un-wrap collection literals. Done with: hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S # skip-blame mass-reformatting only # no-check-commit reformats foo_bar functions Differential Revision: https://phab.mercurial-scm.org/D6971
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
34465
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
     1
# urllibcompat.py - adapters to ease using urllib2 on Py2 and urllib on Py3
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
     2
#
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
     3
# Copyright 2017 Google, Inc.
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
     4
#
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
     5
# This software may be used and distributed according to the terms of the
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
     6
# GNU General Public License version 2 or any later version.
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
     7
from __future__ import absolute_import
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
     8
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
     9
from . import pycompat
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
    10
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    11
_sysstr = pycompat.sysstr
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    12
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    13
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    14
class _pycompatstub(object):
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    15
    def __init__(self):
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    16
        self._aliases = {}
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    17
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    18
    def _registeraliases(self, origin, items):
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    19
        """Add items that will be populated at the first access"""
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    20
        items = map(_sysstr, items)
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    21
        self._aliases.update(
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    22
            (item.replace(r'_', r'').lower(), (origin, item)) for item in items
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    23
        )
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    24
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    25
    def _registeralias(self, origin, attr, name):
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    26
        """Alias ``origin``.``attr`` as ``name``"""
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    27
        self._aliases[_sysstr(name)] = (origin, _sysstr(attr))
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    28
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    29
    def __getattr__(self, name):
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    30
        try:
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    31
            origin, item = self._aliases[name]
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    32
        except KeyError:
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    33
            raise AttributeError(name)
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    34
        self.__dict__[name] = obj = getattr(origin, item)
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    35
        return obj
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    36
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    37
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    38
httpserver = _pycompatstub()
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    39
urlreq = _pycompatstub()
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    40
urlerr = _pycompatstub()
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    41
34465
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
    42
if pycompat.ispy3:
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    43
    import urllib.parse
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    44
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    45
    urlreq._registeraliases(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    46
        urllib.parse,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    47
        (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    48
            "splitattr",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    49
            "splitpasswd",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    50
            "splitport",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    51
            "splituser",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    52
            "urlparse",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    53
            "urlunparse",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    54
        ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    55
    )
36077
a3d42d1865f1 wireprotoserver: define and use parse_qs from urllib
Gregory Szorc <gregory.szorc@gmail.com>
parents: 34467
diff changeset
    56
    urlreq._registeralias(urllib.parse, "parse_qs", "parseqs")
36809
3c15b84ab66c hgweb: teach WSGI parser about query strings
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36077
diff changeset
    57
    urlreq._registeralias(urllib.parse, "parse_qsl", "parseqsl")
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    58
    urlreq._registeralias(urllib.parse, "unquote_to_bytes", "unquote")
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    59
    import urllib.request
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    60
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    61
    urlreq._registeraliases(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    62
        urllib.request,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    63
        (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    64
            "AbstractHTTPHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    65
            "BaseHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    66
            "build_opener",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    67
            "FileHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    68
            "FTPHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    69
            "ftpwrapper",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    70
            "HTTPHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    71
            "HTTPSHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    72
            "install_opener",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    73
            "pathname2url",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    74
            "HTTPBasicAuthHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    75
            "HTTPDigestAuthHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    76
            "HTTPPasswordMgrWithDefaultRealm",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    77
            "ProxyHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    78
            "Request",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    79
            "url2pathname",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    80
            "urlopen",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    81
        ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    82
    )
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    83
    import urllib.response
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    84
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    85
    urlreq._registeraliases(urllib.response, ("addclosehook", "addinfourl",))
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    86
    import urllib.error
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    87
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    88
    urlerr._registeraliases(urllib.error, ("HTTPError", "URLError",))
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
    89
    import http.server
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    90
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    91
    httpserver._registeraliases(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    92
        http.server,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    93
        (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    94
            "HTTPServer",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    95
            "BaseHTTPRequestHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    96
            "SimpleHTTPRequestHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    97
            "CGIHTTPRequestHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    98
        ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
    99
    )
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   100
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   101
    # urllib.parse.quote() accepts both str and bytes, decodes bytes
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   102
    # (if necessary), and returns str. This is wonky. We provide a custom
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   103
    # implementation that only accepts bytes and emits bytes.
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   104
    def quote(s, safe=r'/'):
40159
5774fc623a18 py3: coerce bytestr to bytes to appease urllib.parse.quote_from_bytes()
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36835
diff changeset
   105
        # bytestr has an __iter__ that emits characters. quote_from_bytes()
5774fc623a18 py3: coerce bytestr to bytes to appease urllib.parse.quote_from_bytes()
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36835
diff changeset
   106
        # does an iteration and expects ints. We coerce to bytes to appease it.
5774fc623a18 py3: coerce bytestr to bytes to appease urllib.parse.quote_from_bytes()
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36835
diff changeset
   107
        if isinstance(s, pycompat.bytestr):
5774fc623a18 py3: coerce bytestr to bytes to appease urllib.parse.quote_from_bytes()
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36835
diff changeset
   108
            s = bytes(s)
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   109
        s = urllib.parse.quote_from_bytes(s, safe=safe)
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   110
        return s.encode('ascii', 'strict')
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   111
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   112
    # urllib.parse.urlencode() returns str. We use this function to make
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   113
    # sure we return bytes.
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   114
    def urlencode(query, doseq=False):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   115
        s = urllib.parse.urlencode(query, doseq=doseq)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   116
        return s.encode('ascii')
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   117
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   118
    urlreq.quote = quote
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   119
    urlreq.urlencode = urlencode
34465
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   120
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   121
    def getfullurl(req):
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   122
        return req.full_url
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   123
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   124
    def gethost(req):
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   125
        return req.host
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   126
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   127
    def getselector(req):
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   128
        return req.selector
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   129
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   130
    def getdata(req):
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   131
        return req.data
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   132
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   133
    def hasdata(req):
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   134
        return req.data is not None
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   135
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   136
34465
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   137
else:
34467
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   138
    import BaseHTTPServer
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   139
    import CGIHTTPServer
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   140
    import SimpleHTTPServer
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   141
    import urllib2
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   142
    import urllib
192f7b126ed2 urllibcompat: move some adapters from pycompat to urllibcompat
Augie Fackler <augie@google.com>
parents: 34465
diff changeset
   143
    import urlparse
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   144
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   145
    urlreq._registeraliases(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   146
        urllib,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   147
        (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   148
            "addclosehook",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   149
            "addinfourl",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   150
            "ftpwrapper",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   151
            "pathname2url",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   152
            "quote",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   153
            "splitattr",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   154
            "splitpasswd",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   155
            "splitport",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   156
            "splituser",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   157
            "unquote",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   158
            "url2pathname",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   159
            "urlencode",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   160
        ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   161
    )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   162
    urlreq._registeraliases(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   163
        urllib2,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   164
        (
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   165
            "AbstractHTTPHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   166
            "BaseHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   167
            "build_opener",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   168
            "FileHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   169
            "FTPHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   170
            "HTTPBasicAuthHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   171
            "HTTPDigestAuthHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   172
            "HTTPHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   173
            "HTTPPasswordMgrWithDefaultRealm",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   174
            "HTTPSHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   175
            "install_opener",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   176
            "ProxyHandler",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   177
            "Request",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   178
            "urlopen",
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   179
        ),
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   180
    )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   181
    urlreq._registeraliases(urlparse, ("urlparse", "urlunparse",))
36077
a3d42d1865f1 wireprotoserver: define and use parse_qs from urllib
Gregory Szorc <gregory.szorc@gmail.com>
parents: 34467
diff changeset
   182
    urlreq._registeralias(urlparse, "parse_qs", "parseqs")
36809
3c15b84ab66c hgweb: teach WSGI parser about query strings
Gregory Szorc <gregory.szorc@gmail.com>
parents: 36077
diff changeset
   183
    urlreq._registeralias(urlparse, "parse_qsl", "parseqsl")
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   184
    urlerr._registeraliases(urllib2, ("HTTPError", "URLError",))
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   185
    httpserver._registeraliases(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   186
        BaseHTTPServer, ("HTTPServer", "BaseHTTPRequestHandler",)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   187
    )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   188
    httpserver._registeraliases(SimpleHTTPServer, ("SimpleHTTPRequestHandler",))
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40159
diff changeset
   189
    httpserver._registeraliases(CGIHTTPServer, ("CGIHTTPRequestHandler",))
34465
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   190
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   191
    def gethost(req):
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   192
        return req.get_host()
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   193
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   194
    def getselector(req):
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   195
        return req.get_selector()
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   196
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   197
    def getfullurl(req):
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   198
        return req.get_full_url()
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   199
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   200
    def getdata(req):
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   201
        return req.get_data()
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   202
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   203
    def hasdata(req):
80d4681150b9 urllibcompat: new library to help abstract out some python3 urllib2 stuff
Augie Fackler <augie@google.com>
parents:
diff changeset
   204
        return req.has_data()