py3: conditionalize SocketServer import

The SocketServer is renamed to socketserver in python 3
This commit is contained in:
Pulkit Goyal 2016-06-27 16:48:54 +05:30
parent fdc0861e35
commit 38a359ce5c
7 changed files with 27 additions and 18 deletions

View File

@ -40,7 +40,6 @@ Config
from __future__ import absolute_import
import SocketServer
import errno
import gc
import hashlib
@ -68,6 +67,8 @@ from mercurial import (
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 @@ class chgcmdserver(commandserver.server):
'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 @@ class AutoExitMixIn: # use old-style to comply with SocketServer design
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 @@ class chgunixservice(commandserver.unixservice):
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

View File

@ -7,7 +7,6 @@
from __future__ import absolute_import
import SocketServer
import errno
import os
import struct
@ -21,6 +20,8 @@ from . import (
util,
)
socketserver = util.socketserver
logfile = None
def log(*args):
@ -330,7 +331,7 @@ class pipeservice(object):
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 @@ class unixservice(object):
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)

View File

@ -9,7 +9,6 @@
from __future__ import absolute_import
import BaseHTTPServer
import SocketServer
import errno
import os
import socket
@ -23,6 +22,7 @@ from .. import (
util,
)
socketserver = util.socketserver
urlerr = util.urlerr
urlreq = util.urlreq
@ -147,9 +147,9 @@ class _httprequesthandler(BaseHTTPServer.BaseHTTPRequestHandler):
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 @@ class _httprequesthandlerssl(_httprequesthandler):
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

View File

@ -17,6 +17,13 @@ except ImportError:
import pickle
pickle.dumps # silence pyflakes
try:
import SocketServer as socketserver
socketserver.ThreadingMixIn
except ImportError:
import socketserver
socketserver.ThreadingMixIn
try:
import xmlrpclib
xmlrpclib.Transport

View File

@ -54,6 +54,7 @@ for attr in (
# we do import urlreq, but we do it outside the loop
#'urlreq',
'stringio',
'socketserver',
'xmlrpclib',
):
globals()[attr] = getattr(pycompat, attr)

View File

@ -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)

View File

@ -15,7 +15,6 @@ Any help will be greatly appreciated. SUZUKI Hisao
__version__ = "0.2.1"
import BaseHTTPServer
import SocketServer
import os
import select
import socket
@ -24,6 +23,7 @@ import sys
from mercurial import util
urlparse = util.urlparse
socketserver = util.socketserver
class ProxyHandler (BaseHTTPServer.BaseHTTPRequestHandler):
__base = BaseHTTPServer.BaseHTTPRequestHandler
@ -135,7 +135,7 @@ class ProxyHandler (BaseHTTPServer.BaseHTTPRequestHandler):
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)