--- urllib2.py.orig 2005-11-04 20:41:52.000000000 +0100 +++ urllib2.py 2006-04-20 16:25:52.000000000 +0200 @@ -88,24 +88,18 @@ # check digest against correct (i.e. non-apache) implementation import base64 -import ftplib -import gopherlib -import httplib import inspect -import md5 import mimetypes import mimetools import os import posixpath import random import re -import sha import socket import sys import time import urlparse import bisect -import cookielib try: from cStringIO import StringIO @@ -188,6 +182,7 @@ self.add_header(key, value) self.unredirected_hdrs = {} if origin_req_host is None: + import cookielib origin_req_host = cookielib.request_host(self) self.origin_req_host = origin_req_host self.unverifiable = unverifiable @@ -353,7 +348,7 @@ meth = getattr(processor, meth_name) req = meth(req) - response = self._open(req, data) + response = self._open(req) # post-process response meth_name = protocol+"_response" @@ -363,7 +358,7 @@ return response - def _open(self, req, data=None): + def _open(self, req): result = self._call_chain(self.handle_open, 'default', 'default_open', req) if result: @@ -412,7 +407,7 @@ If any of the handlers passed as arguments are subclasses of the default handlers, the default handlers will not be used. """ - + import httplib opener = OpenerDirector() default_classes = [ProxyHandler, UnknownHandler, HTTPHandler, HTTPDefaultErrorHandler, HTTPRedirectHandler, @@ -823,6 +818,7 @@ # and server to avoid chosen plaintext attacks, to provide mutual # authentication, and to provide some message integrity protection. # This isn't a fabulous effort, but it's probably Good Enough. + import sha dig = sha.new("%s:%s:%s:%s" % (self.nonce_count, nonce, time.ctime(), randombytes(8))).hexdigest() return dig[:16] @@ -887,8 +883,10 @@ def get_algorithm_impls(self, algorithm): # lambdas assume digest modules are imported at the top level if algorithm == 'MD5': + import md5 H = lambda x: md5.new(x).hexdigest() elif algorithm == 'SHA': + import sha H = lambda x: sha.new(x).hexdigest() # XXX MD5-sess KD = lambda s, d: H("%s:%s" % (s, d)) @@ -1016,21 +1014,23 @@ class HTTPHandler(AbstractHTTPHandler): def http_open(self, req): + import httplib return self.do_open(httplib.HTTPConnection, req) http_request = AbstractHTTPHandler.do_request_ -if hasattr(httplib, 'HTTPS'): - class HTTPSHandler(AbstractHTTPHandler): +class HTTPSHandler(AbstractHTTPHandler): - def https_open(self, req): - return self.do_open(httplib.HTTPSConnection, req) + def https_open(self, req): + import httplib + return self.do_open(httplib.HTTPSConnection, req) - https_request = AbstractHTTPHandler.do_request_ + https_request = AbstractHTTPHandler.do_request_ class HTTPCookieProcessor(BaseHandler): def __init__(self, cookiejar=None): if cookiejar is None: + import cookielib cookiejar = cookielib.CookieJar() self.cookiejar = cookiejar @@ -1144,6 +1144,7 @@ class FTPHandler(BaseHandler): def ftp_open(self, req): + import ftplib host = req.get_host() if not host: raise IOError, ('ftp error', 'no host given') @@ -1247,6 +1248,7 @@ class GopherHandler(BaseHandler): def gopher_open(self, req): + import gopherlib host = req.get_host() if not host: raise GopherError('no host given')