changeset 36077:a3d42d1865f1

wireprotoserver: define and use parse_qs from urllib The cgi module is deprecated since Python 2.6. Let's replace uses of it in wireprotoserver with a similar function from urllib. Differential Revision: https://phab.mercurial-scm.org/D2094
author Gregory Szorc <gregory.szorc@gmail.com>
date Tue, 06 Feb 2018 18:13:15 -0800
parents 465858451347
children 7f68235f23ff
files mercurial/urllibcompat.py mercurial/wireprotoserver.py
diffstat 2 files changed, 4 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/urllibcompat.py	Wed Feb 07 17:18:27 2018 -0800
+++ b/mercurial/urllibcompat.py	Tue Feb 06 18:13:15 2018 -0800
@@ -47,6 +47,7 @@
         "urlparse",
         "urlunparse",
     ))
+    urlreq._registeralias(urllib.parse, "parse_qs", "parseqs")
     urlreq._registeralias(urllib.parse, "unquote_to_bytes", "unquote")
     import urllib.request
     urlreq._registeraliases(urllib.request, (
@@ -157,6 +158,7 @@
         "urlparse",
         "urlunparse",
     ))
+    urlreq._registeralias(urlparse, "parse_qs", "parseqs")
     urlerr._registeraliases(urllib2, (
         "HTTPError",
         "URLError",
--- a/mercurial/wireprotoserver.py	Wed Feb 07 17:18:27 2018 -0800
+++ b/mercurial/wireprotoserver.py	Tue Feb 06 18:13:15 2018 -0800
@@ -7,7 +7,6 @@
 from __future__ import absolute_import
 
 import abc
-import cgi
 import contextlib
 import struct
 import sys
@@ -134,12 +133,12 @@
         args = util.rapply(pycompat.bytesurl, self._req.form.copy())
         postlen = int(self._req.env.get(r'HTTP_X_HGARGS_POST', 0))
         if postlen:
-            args.update(cgi.parse_qs(
+            args.update(urlreq.parseqs(
                 self._req.read(postlen), keep_blank_values=True))
             return args
 
         argvalue = decodevaluefromheaders(self._req, r'X-HgArg')
-        args.update(cgi.parse_qs(argvalue, keep_blank_values=True))
+        args.update(urlreq.parseqs(argvalue, keep_blank_values=True))
         return args
 
     def forwardpayload(self, fp):