103103import sys
104104import time
105105import urllib .parse
106- import contextlib
107- from functools import partial
108106
109107from http import HTTPStatus
110108
@@ -1239,7 +1237,6 @@ def test(HandlerClass=BaseHTTPRequestHandler,
12391237
12401238 """
12411239 ServerClass .address_family , addr = _get_best_family (bind , port )
1242-
12431240 HandlerClass .protocol_version = protocol
12441241 with ServerClass (addr , HandlerClass ) as httpd :
12451242 host , port = httpd .socket .getsockname ()[:2 ]
@@ -1256,36 +1253,40 @@ def test(HandlerClass=BaseHTTPRequestHandler,
12561253
12571254if __name__ == '__main__' :
12581255 import argparse
1256+ import contextlib
12591257
12601258 parser = argparse .ArgumentParser ()
12611259 parser .add_argument ('--cgi' , action = 'store_true' ,
1262- help = 'Run as CGI Server ' )
1260+ help = 'run as CGI server ' )
12631261 parser .add_argument ('--bind' , '-b' , metavar = 'ADDRESS' ,
1264- help = 'Specify alternate bind address '
1265- '[ default: all interfaces] ' )
1262+ help = 'specify alternate bind address '
1263+ '( default: all interfaces) ' )
12661264 parser .add_argument ('--directory' , '-d' , default = os .getcwd (),
1267- help = 'Specify alternative directory '
1268- '[default:current directory]' )
1269- parser .add_argument ('port' , action = 'store' ,
1270- default = 8000 , type = int ,
1265+ help = 'specify alternate directory '
1266+ '(default: current directory)' )
1267+ parser .add_argument ('port' , action = 'store' , default = 8000 , type = int ,
12711268 nargs = '?' ,
1272- help = 'Specify alternate port [ default: 8000] ' )
1269+ help = 'specify alternate port ( default: 8000) ' )
12731270 args = parser .parse_args ()
12741271 if args .cgi :
12751272 handler_class = CGIHTTPRequestHandler
12761273 else :
1277- handler_class = partial (SimpleHTTPRequestHandler ,
1278- directory = args .directory )
1274+ handler_class = SimpleHTTPRequestHandler
12791275
12801276 # ensure dual-stack is not disabled; ref #38907
12811277 class DualStackServer (ThreadingHTTPServer ):
1278+
12821279 def server_bind (self ):
12831280 # suppress exception when protocol is IPv4
12841281 with contextlib .suppress (Exception ):
12851282 self .socket .setsockopt (
12861283 socket .IPPROTO_IPV6 , socket .IPV6_V6ONLY , 0 )
12871284 return super ().server_bind ()
12881285
1286+ def finish_request (self , request , client_address ):
1287+ self .RequestHandlerClass (request , client_address , self ,
1288+ directory = args .directory )
1289+
12891290 test (
12901291 HandlerClass = handler_class ,
12911292 ServerClass = DualStackServer ,
0 commit comments