[wwwsearch-commits] r29100 - wwwsearch/mechanize/trunk/mechanize
jjlee at codespeak.net
jjlee at codespeak.net
Wed Jun 21 22:29:51 CEST 2006
Author: jjlee
Date: Wed Jun 21 22:29:48 2006
New Revision: 29100
Added:
wwwsearch/mechanize/trunk/mechanize/_upgrade.py
Modified:
wwwsearch/mechanize/trunk/mechanize/__init__.py
wwwsearch/mechanize/trunk/mechanize/_mechanize.py
wwwsearch/mechanize/trunk/mechanize/_opener.py
wwwsearch/mechanize/trunk/mechanize/_response.py
wwwsearch/mechanize/trunk/mechanize/_urllib2.py
wwwsearch/mechanize/trunk/mechanize/_urllib2_support.py
Log:
Move request / response class upgrade handlers into new module _upgrade
Modified: wwwsearch/mechanize/trunk/mechanize/__init__.py
==============================================================================
--- wwwsearch/mechanize/trunk/mechanize/__init__.py (original)
+++ wwwsearch/mechanize/trunk/mechanize/__init__.py Wed Jun 21 22:29:48 2006
@@ -24,8 +24,6 @@
from _urllib2_support import XHTMLCompatibleHeadParser
except ImportError:
pass
-#from _gzip import HTTPGzipProcessor # crap ATM
-
# cookies
from _clientcookie import Cookie, CookiePolicy, DefaultCookiePolicy, \
Modified: wwwsearch/mechanize/trunk/mechanize/_mechanize.py
==============================================================================
--- wwwsearch/mechanize/trunk/mechanize/_mechanize.py (original)
+++ wwwsearch/mechanize/trunk/mechanize/_mechanize.py Wed Jun 21 22:29:48 2006
@@ -14,6 +14,7 @@
from _useragent import UserAgent
from _html import DefaultFactory
from _response import response_seek_wrapper, closeable_response
+import _upgrade
import _request
__version__ = (0, 1, 3, None, None) # 0.1.3
@@ -49,42 +50,6 @@
response.close()
del self._history[:]
-# Horrible, but needed, at least until fork urllib2. Even then, may want
-# to preseve urllib2 compatibility.
-def upgrade_response(response):
- # a urllib2 handler constructed the response, i.e. the response is an
- # urllib.addinfourl, instead of a _Util.closeable_response as returned
- # by e.g. mechanize.HTTPHandler
- try:
- code = response.code
- except AttributeError:
- code = None
- try:
- msg = response.msg
- except AttributeError:
- msg = None
-
- # may have already-.read() data from .seek() cache
- data = None
- get_data = getattr(response, "get_data", None)
- if get_data:
- data = get_data()
-
- response = closeable_response(
- response.fp, response.info(), response.geturl(), code, msg)
- response = response_seek_wrapper(response)
- if data:
- response.set_data(data)
- return response
-class ResponseUpgradeProcessor(urllib2.BaseHandler):
- # upgrade responses to be .close()able without becoming unusable
- handler_order = 0 # before anything else
- def any_response(self, request, response):
- if not hasattr(response, 'closeable_response'):
- response = upgrade_response(response)
- return response
-
-
class Browser(UserAgent):
"""Browser-like class with support for history, forms and links.
@@ -101,7 +66,7 @@
"""
handler_classes = UserAgent.handler_classes.copy()
- handler_classes["_response_upgrade"] = ResponseUpgradeProcessor
+ handler_classes["_response_upgrade"] = _upgrade.ResponseUpgradeProcessor
default_others = copy.copy(UserAgent.default_others)
default_others.append("_response_upgrade")
@@ -239,7 +204,7 @@
if not hasattr(response, "seek"):
response = response_seek_wrapper(response)
if not hasattr(response, "closeable_response"):
- response = upgrade_response(response)
+ response = _upgrade.upgrade_response(response)
else:
response = copy.copy(response)
Modified: wwwsearch/mechanize/trunk/mechanize/_opener.py
==============================================================================
--- wwwsearch/mechanize/trunk/mechanize/_opener.py (original)
+++ wwwsearch/mechanize/trunk/mechanize/_opener.py Wed Jun 21 22:29:48 2006
@@ -21,6 +21,7 @@
set = sets.Set
import _urllib2_support
+import _upgrade
from _util import isstringlike
from _request import Request
@@ -257,7 +258,7 @@
urllib2.FTPHandler,
urllib2.FileHandler,
# processors
- _urllib2_support.HTTPRequestUpgradeProcessor,
+ _upgrade.HTTPRequestUpgradeProcessor,
_urllib2_support.HTTPCookieProcessor,
_urllib2_support.HTTPErrorProcessor,
]
Modified: wwwsearch/mechanize/trunk/mechanize/_response.py
==============================================================================
--- wwwsearch/mechanize/trunk/mechanize/_response.py (original)
+++ wwwsearch/mechanize/trunk/mechanize/_response.py Wed Jun 21 22:29:48 2006
@@ -342,3 +342,31 @@
mime_headers = mimetools.Message(StringIO("\n".join(hdr_text)))
r = closeable_response(StringIO(data), mime_headers, url, code, msg)
return response_seek_wrapper(r)
+
+# Horrible, but needed, at least until fork urllib2. Even then, may want
+# to preseve urllib2 compatibility.
+def upgrade_response(response):
+ # a urllib2 handler constructed the response, i.e. the response is an
+ # urllib.addinfourl, instead of a _Util.closeable_response as returned
+ # by e.g. mechanize.HTTPHandler
+ try:
+ code = response.code
+ except AttributeError:
+ code = None
+ try:
+ msg = response.msg
+ except AttributeError:
+ msg = None
+
+ # may have already-.read() data from .seek() cache
+ data = None
+ get_data = getattr(response, "get_data", None)
+ if get_data:
+ data = get_data()
+
+ response = closeable_response(
+ response.fp, response.info(), response.geturl(), code, msg)
+ response = response_seek_wrapper(response)
+ if data:
+ response.set_data(data)
+ return response
Added: wwwsearch/mechanize/trunk/mechanize/_upgrade.py
==============================================================================
--- (empty file)
+++ wwwsearch/mechanize/trunk/mechanize/_upgrade.py Wed Jun 21 22:29:48 2006
@@ -0,0 +1,32 @@
+from urllib2 import BaseHandler
+
+from _request import Request
+from _response import upgrade_response
+
+
+class HTTPRequestUpgradeProcessor(BaseHandler):
+ # upgrade urllib2.Request to this module's Request
+ # yuck!
+ handler_order = 0 # before anything else
+
+ def http_request(self, request):
+ if not hasattr(request, "add_unredirected_header"):
+ newrequest = Request(request._Request__original, request.data,
+ request.headers)
+ try: newrequest.origin_req_host = request.origin_req_host
+ except AttributeError: pass
+ try: newrequest.unverifiable = request.unverifiable
+ except AttributeError: pass
+ request = newrequest
+ return request
+
+ https_request = http_request
+
+
+class ResponseUpgradeProcessor(BaseHandler):
+ # upgrade responses to be .close()able without becoming unusable
+ handler_order = 0 # before anything else
+ def any_response(self, request, response):
+ if not hasattr(response, 'closeable_response'):
+ response = upgrade_response(response)
+ return response
Modified: wwwsearch/mechanize/trunk/mechanize/_urllib2.py
==============================================================================
--- wwwsearch/mechanize/trunk/mechanize/_urllib2.py (original)
+++ wwwsearch/mechanize/trunk/mechanize/_urllib2.py Wed Jun 21 22:29:48 2006
@@ -38,7 +38,6 @@
from _urllib2_support import \
HTTPHandler, \
HTTPRedirectHandler, \
- HTTPRequestUpgradeProcessor, \
HTTPEquivProcessor, \
SeekableProcessor, \
HTTPCookieProcessor, \
@@ -48,6 +47,12 @@
HTTPResponseDebugProcessor, \
HTTPRedirectDebugProcessor, \
HTTPRobotRulesProcessor
+from _upgrade import \
+ HTTPRequestUpgradeProcessor, \
+ ResponseUpgradeProcessor
+# crap ATM
+## from _gzip import \
+## HTTPGzipProcessor
import httplib
if hasattr(httplib, 'HTTPS'):
from _urllib2_support import HTTPSHandler
Modified: wwwsearch/mechanize/trunk/mechanize/_urllib2_support.py
==============================================================================
--- wwwsearch/mechanize/trunk/mechanize/_urllib2_support.py (original)
+++ wwwsearch/mechanize/trunk/mechanize/_urllib2_support.py Wed Jun 21 22:29:48 2006
@@ -127,24 +127,6 @@
"The last 30x error message was:\n"
-class HTTPRequestUpgradeProcessor(BaseHandler):
- # upgrade urllib2.Request to this module's Request
- # yuck!
- handler_order = 0 # before anything else
-
- def http_request(self, request):
- if not hasattr(request, "add_unredirected_header"):
- newrequest = Request(request._Request__original, request.data,
- request.headers)
- try: newrequest.origin_req_host = request.origin_req_host
- except AttributeError: pass
- try: newrequest.unverifiable = request.unverifiable
- except AttributeError: pass
- request = newrequest
- return request
-
- https_request = http_request
-
# XXX would self.reset() work, instead of raising this exception?
class EndOfHeadError(Exception): pass
class AbstractHeadParser:
More information about the wwwsearch-commits
mailing list