* Lib/linecache.py: don't crash on empty filename
* Lib/macpath.py: don't return trailing colon for dirname()
(XXX won't do for volume names -- but otherwise glob(':*:*.py')
loops forever)
* Lib/traceback.py: print SyntaxError correctly
* Lib/stat.py: moved to posixstat.py; added macstat.py which has
the constants for the Mac; and created new stat.py which includes
the right one
* Lib/urllib.py: fix caching bug (by disabling the cache)
diff --git a/Lib/urllib.py b/Lib/urllib.py
index e8f56a7..476570b 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -52,7 +52,13 @@
# Constructor
def __init__(self):
self.addheaders = []
- self.tempcache = {}
+ self.tempcache = None
+ # Undocumented feature: if you assign {} to tempcache,
+ # it is used to cache files retrieved with
+ # self.retrieve(). This is not enabled by default
+ # since it does not work for changing documents (and I
+ # haven't got the logic to check expiration headers
+ # yet).
self.ftpcache = ftpcache
# Undocumented feature: you can use a different
# ftp cache by assigning to the .ftpcache member;
@@ -66,12 +72,13 @@
def cleanup(self):
import os
- for url in self.tempcache.keys():
- try:
- os.unlink(self.tempcache[url][0])
- except os.error:
- pass
- del self.tempcache[url]
+ if self.tempcache:
+ for url in self.tempcache.keys():
+ try:
+ os.unlink(self.tempcache[url][0])
+ except os.error:
+ pass
+ del self.tempcache[url]
# Add a header to be used by the HTTP interface only
# e.g. u.addheader('Accept', 'sound/basic')
@@ -98,10 +105,10 @@
# retrieve(url) returns (filename, None) for a local object
# or (tempfilename, headers) for a remote object
def retrieve(self, url):
- if self.tempcache.has_key(url):
+ if self.tempcache and self.tempcache.has_key(url):
return self.tempcache[url]
url1 = unwrap(url)
- if self.tempcache.has_key(url1):
+ if self.tempcache and self.tempcache.has_key(url1):
self.tempcache[url] = self.tempcache[url1]
return self.tempcache[url1]
type, url1 = splittype(url1)
@@ -116,7 +123,8 @@
headers = fp.info()
import tempfile
tfn = tempfile.mktemp()
- self.tempcache[url] = result = tfn, headers
+ if self.tempcache is not None:
+ self.tempcache[url] = result = tfn, headers
tfp = open(tfn, 'w')
bs = 1024*8
block = fp.read(bs)