[wwwsearch-commits] r21978 -
wwwsearch/ClientCookie/trunk/ClientCookie
jjlee at codespeak.net
jjlee at codespeak.net
Wed Jan 11 21:33:03 CET 2006
Author: jjlee
Date: Wed Jan 11 21:33:02 2006
New Revision: 21978
Modified:
wwwsearch/ClientCookie/trunk/ClientCookie/_Util.py
Log:
Fixes to response_seek_wrapper (thanks Moof)
Modified: wwwsearch/ClientCookie/trunk/ClientCookie/_Util.py
==============================================================================
--- wwwsearch/ClientCookie/trunk/ClientCookie/_Util.py (original)
+++ wwwsearch/ClientCookie/trunk/ClientCookie/_Util.py Wed Jan 11 21:33:02 2006
@@ -13,7 +13,7 @@
True = 1
False = 0
-import re, string, time
+import re, string, time, copy
from types import TupleType
from cStringIO import StringIO
@@ -554,12 +554,8 @@
# file-like object that always claims to be at end-of-file...
def read(self, size=-1): return ""
def readline(self, size=-1): return ""
- # ...and also supports these response methods
- def info(self):
- return self.headers
- def geturl(self):
- return self.url
-
+ def __iter__(self): return self
+ def next(self): return ""
class response_seek_wrapper(seek_wrapper):
"""Avoids unnecessarily clobbering urllib.addinfourl methods on .close().
@@ -576,32 +572,50 @@
.__iter__()
.next()
- and the following attributes are supported.
+ and the following attributes are supported if present (i.e. in Python 2.4
+ or newer):
.code
.msg
- Also supports pickling (but the stdlib does something to prevent it, IIRC).
+ Also supports pickling (but the stdlib currently does something to prevent
+ it: http://python.org/sf/1144636).
"""
def __init__(self, wrapped):
seek_wrapper.__init__(self, wrapped)
- self.msg = wrapped.msg
- self.code = wrapped.code
+ self.url = self.wrapped.geturl()
+ try:
+ self.msg = wrapped.msg
+ self.code = wrapped.code
+ except AttributeError:
+ pass # pre-2.4
self._headers = self.wrapped.info()
def close(self):
- self.url = self.wrapped.url
- self.wrapped.close()
- self.wrapped = eoffile()
+ wrapped = self.wrapped
+ wrapped.close()
+
+ new_wrapped = eoffile()
+ new_wrapped.url = self.url
+ try:
+ new_wrapped.url = self.url
+ new_wrapped.code = self.code
+ except AttributeError:
+ pass # pre-2.4
+ new_wrapped._headers = self._headers
+ self.wrapped = new_wrapped
def info(self):
return self._headers
+ def geturl(self):
+ return self.url
+
def __copy__(self):
cpy = seek_wrapper.__copy__(self)
- cpy._headers = self.wrapped.info().copy()
+ cpy._headers = copy.copy(self._headers)
return cpy
def set_data(self, data):
More information about the wwwsearch-commits
mailing list