@@ -1829,11 +1829,9 @@ class Fetch(object):
urldata_cache[key] = self.ud
def localpath(self, url):
- if url not in self.urls:
- self.ud[url] = FetchData(url, self.d)
-
- self.ud[url].setup_localpath(self.d)
- return self.ud[url].localpath
+ ud = self._get_urldata(url)
+ ud.setup_localpath(self.d)
+ return ud.localpath
def localpaths(self):
"""
@@ -1842,7 +1840,7 @@ class Fetch(object):
local = []
def localpath(url):
- ud = self.ud[url]
+ ud = self._get_urldata(url)
ud.setup_localpath(self.d)
local.append(ud.localpath)
@@ -1863,7 +1861,7 @@ class Fetch(object):
checksum_missing_messages = []
def download(url):
- ud = self.ud[url]
+ ud = self._get_urldata(url)
ud.setup_localpath(self.d)
m = ud.method
done = False
@@ -1979,7 +1977,7 @@ class Fetch(object):
urls = self.urls
def checkstatus(url):
- ud = self.ud[url]
+ ud = self._get_urldata(url)
ud.setup_localpath(self.d)
m = ud.method
logger.debug("Testing URL %s", url)
@@ -2011,7 +2009,7 @@ class Fetch(object):
unpack_tracer.start(root, self.ud, self.d)
def unpack(url):
- ud = self.ud[url]
+ ud = self._get_urldata(url)
ud.setup_localpath(self.d)
if ud.lockfile:
@@ -2038,9 +2036,7 @@ class Fetch(object):
urls = self.urls
def clean(url):
- if url not in self.ud:
- self.ud[url] = FetchData(url, self.d)
- ud = self.ud[url]
+ ud = self._get_urldata(url)
ud.setup_localpath(self.d)
if not ud.localfile and ud.localpath is None:
@@ -2071,7 +2067,7 @@ class Fetch(object):
urldata = []
def expand_urldata(url):
- ud = self.ud[url]
+ ud = self._get_urldata(url)
urldata.append(ud)
urldata += ud.method.implicit_urldata(ud, self.d)
@@ -2080,6 +2076,12 @@ class Fetch(object):
return urldata
+ def _get_urldata(self, url):
+ if url not in self.ud:
+ self.ud[url] = FetchData(url, self.d)
+ self.ud[url].unpack_tracer = unpack_tracer
+ return self.ud[url]
+
class FetchConnectionCache(object):
"""
A class which represents an container for socket connections.