Mercurial > hg-stable
changeset 29433:33770d2b6cf9
py3: conditionalize SocketServer import
The SocketServer is renamed to socketserver in python 3
author | Pulkit Goyal <7895pulkit@gmail.com> |
---|---|
date | Mon, 27 Jun 2016 16:48:54 +0530 |
parents | 34b914ac573e |
children | 7dce56174916 |
files | hgext/chgserver.py mercurial/commandserver.py mercurial/hgweb/server.py mercurial/pycompat.py mercurial/util.py tests/test-check-py3-compat.t tests/tinyproxy.py |
diffstat | 7 files changed, 27 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/hgext/chgserver.py Mon Jun 27 16:37:37 2016 +0530 +++ b/hgext/chgserver.py Mon Jun 27 16:48:54 2016 +0530 @@ -40,7 +40,6 @@ from __future__ import absolute_import -import SocketServer import errno import gc import hashlib @@ -68,6 +67,8 @@ util, ) +socketserver = util.socketserver + # Note for extension authors: ONLY specify testedwith = 'internal' for # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should # be specifying the version(s) of Mercurial they are tested with, or @@ -530,7 +531,7 @@ 'setumask': setumask}) # copied from mercurial/commandserver.py -class _requesthandler(SocketServer.StreamRequestHandler): +class _requesthandler(socketserver.StreamRequestHandler): def handle(self): # use a different process group from the master process, making this # process pass kernel "is_current_pgrp_orphaned" check so signals like @@ -603,7 +604,7 @@ def process_request(self, request, address): self.lastactive = time.time() - return SocketServer.ForkingMixIn.process_request( + return socketserver.ForkingMixIn.process_request( self, request, address) def server_bind(self): @@ -656,8 +657,8 @@ self.repo = None self._inithashstate() self._checkextensions() - class cls(AutoExitMixIn, SocketServer.ForkingMixIn, - SocketServer.UnixStreamServer): + class cls(AutoExitMixIn, socketserver.ForkingMixIn, + socketserver.UnixStreamServer): ui = self.ui repo = self.repo hashstate = self.hashstate
--- a/mercurial/commandserver.py Mon Jun 27 16:37:37 2016 +0530 +++ b/mercurial/commandserver.py Mon Jun 27 16:48:54 2016 +0530 @@ -7,7 +7,6 @@ from __future__ import absolute_import -import SocketServer import errno import os import struct @@ -21,6 +20,8 @@ util, ) +socketserver = util.socketserver + logfile = None def log(*args): @@ -330,7 +331,7 @@ finally: _restoreio(ui, fin, fout) -class _requesthandler(SocketServer.StreamRequestHandler): +class _requesthandler(socketserver.StreamRequestHandler): def handle(self): ui = self.server.ui repo = self.server.repo @@ -366,13 +367,13 @@ self.ui = ui self.repo = repo self.address = opts['address'] - if not util.safehasattr(SocketServer, 'UnixStreamServer'): + if not util.safehasattr(socketserver, 'UnixStreamServer'): raise error.Abort(_('unsupported platform')) if not self.address: raise error.Abort(_('no socket path specified with --address')) def init(self): - class cls(SocketServer.ForkingMixIn, SocketServer.UnixStreamServer): + class cls(socketserver.ForkingMixIn, socketserver.UnixStreamServer): ui = self.ui repo = self.repo self.server = cls(self.address, _requesthandler)
--- a/mercurial/hgweb/server.py Mon Jun 27 16:37:37 2016 +0530 +++ b/mercurial/hgweb/server.py Mon Jun 27 16:48:54 2016 +0530 @@ -9,7 +9,6 @@ from __future__ import absolute_import import BaseHTTPServer -import SocketServer import errno import os import socket @@ -23,6 +22,7 @@ util, ) +socketserver = util.socketserver urlerr = util.urlerr urlreq = util.urlreq @@ -147,9 +147,9 @@ env['wsgi.input'] = self.rfile env['wsgi.errors'] = _error_logger(self) env['wsgi.multithread'] = isinstance(self.server, - SocketServer.ThreadingMixIn) + socketserver.ThreadingMixIn) env['wsgi.multiprocess'] = isinstance(self.server, - SocketServer.ForkingMixIn) + socketserver.ForkingMixIn) env['wsgi.run_once'] = 0 self.saved_status = None @@ -240,10 +240,10 @@ try: import threading threading.activeCount() # silence pyflakes and bypass demandimport - _mixin = SocketServer.ThreadingMixIn + _mixin = socketserver.ThreadingMixIn except ImportError: if util.safehasattr(os, "fork"): - _mixin = SocketServer.ForkingMixIn + _mixin = socketserver.ForkingMixIn else: class _mixin(object): pass
--- a/mercurial/pycompat.py Mon Jun 27 16:37:37 2016 +0530 +++ b/mercurial/pycompat.py Mon Jun 27 16:48:54 2016 +0530 @@ -18,6 +18,13 @@ pickle.dumps # silence pyflakes try: + import SocketServer as socketserver + socketserver.ThreadingMixIn +except ImportError: + import socketserver + socketserver.ThreadingMixIn + +try: import xmlrpclib xmlrpclib.Transport except ImportError:
--- a/mercurial/util.py Mon Jun 27 16:37:37 2016 +0530 +++ b/mercurial/util.py Mon Jun 27 16:48:54 2016 +0530 @@ -54,6 +54,7 @@ # we do import urlreq, but we do it outside the loop #'urlreq', 'stringio', + 'socketserver', 'xmlrpclib', ): globals()[attr] = getattr(pycompat, attr)
--- a/tests/test-check-py3-compat.t Mon Jun 27 16:37:37 2016 +0530 +++ b/tests/test-check-py3-compat.t Mon Jun 27 16:48:54 2016 +0530 @@ -28,7 +28,7 @@ hgext/blackbox.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) hgext/bugzilla.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) hgext/censor.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) - hgext/chgserver.py: error importing module: <ImportError> No module named 'SocketServer' (line *) (glob) + hgext/chgserver.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) hgext/children.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) hgext/churn.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) hgext/clonebundles.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) @@ -88,7 +88,6 @@ mercurial/changelog.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) mercurial/cmdutil.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) mercurial/commands.py: invalid syntax: invalid syntax (<unknown>, line *) (glob) - mercurial/commandserver.py: error importing module: <ImportError> No module named 'SocketServer' (line *) (glob) mercurial/context.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) mercurial/copies.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob) mercurial/crecord.py: error importing: <AttributeError> 'dict' object has no attribute 'iteritems' (error at revset.py:*) (glob)
--- a/tests/tinyproxy.py Mon Jun 27 16:37:37 2016 +0530 +++ b/tests/tinyproxy.py Mon Jun 27 16:48:54 2016 +0530 @@ -15,7 +15,6 @@ __version__ = "0.2.1" import BaseHTTPServer -import SocketServer import os import select import socket @@ -24,6 +23,7 @@ from mercurial import util urlparse = util.urlparse +socketserver = util.socketserver class ProxyHandler (BaseHTTPServer.BaseHTTPRequestHandler): __base = BaseHTTPServer.BaseHTTPRequestHandler @@ -135,7 +135,7 @@ do_PUT = do_GET do_DELETE = do_GET -class ThreadingHTTPServer (SocketServer.ThreadingMixIn, +class ThreadingHTTPServer (socketserver.ThreadingMixIn, BaseHTTPServer.HTTPServer): def __init__(self, *args, **kwargs): BaseHTTPServer.HTTPServer.__init__(self, *args, **kwargs)