--- a/mercurial/byterange.py Thu Nov 16 08:52:55 2006 +0100
+++ b/mercurial/byterange.py Fri Nov 17 08:06:54 2006 +0100
@@ -121,7 +121,7 @@
"""
return (self.realpos - self.firstbyte)
- def seek(self,offset,whence=0):
+ def seek(self, offset, whence=0):
"""Seek within the byte range.
Positioning is identical to that described under tell().
"""
@@ -170,7 +170,7 @@
size = (self.lastbyte - self.realpos)
return size
- def _do_seek(self,offset):
+ def _do_seek(self, offset):
"""Seek based on whether wrapped object supports seek().
offset is relative to the current position (self.realpos).
"""
@@ -179,9 +179,9 @@
self._poor_mans_seek(offset)
else:
self.fo.seek(self.realpos + offset)
- self.realpos+= offset
+ self.realpos += offset
- def _poor_mans_seek(self,offset):
+ def _poor_mans_seek(self, offset):
"""Seek by calling the wrapped file objects read() method.
This is used for file like objects that do not have native
seek support. The wrapped objects read() method is called
@@ -199,7 +199,7 @@
buf = self.fo.read(bufsize)
if len(buf) != bufsize:
raise RangeError('Requested Range Not Satisfiable')
- pos+= bufsize
+ pos += bufsize
class FileRangeHandler(urllib2.FileHandler):
"""FileHandler subclass that adds Range support.
@@ -221,16 +221,17 @@
if port or socket.gethostbyname(host) not in self.get_names():
raise urllib2.URLError('file not on local host')
fo = open(localfile,'rb')
- brange = req.headers.get('Range',None)
+ brange = req.headers.get('Range', None)
brange = range_header_to_tuple(brange)
assert brange != ()
if brange:
- (fb,lb) = brange
- if lb == '': lb = size
+ (fb, lb) = brange
+ if lb == '':
+ lb = size
if fb < 0 or fb > size or lb > size:
raise RangeError('Requested Range Not Satisfiable')
size = (lb - fb)
- fo = RangeableFileObject(fo, (fb,lb))
+ fo = RangeableFileObject(fo, (fb, lb))
headers = mimetools.Message(StringIO(
'Content-Type: %s\nContent-Length: %d\nLast-modified: %s\n' %
(mtype or 'text/plain', size, modified)))
@@ -292,18 +293,19 @@
# -- range support modifications start here
rest = None
- range_tup = range_header_to_tuple(req.headers.get('Range',None))
+ range_tup = range_header_to_tuple(req.headers.get('Range', None))
assert range_tup != ()
if range_tup:
- (fb,lb) = range_tup
- if fb > 0: rest = fb
+ (fb, lb) = range_tup
+ if fb > 0:
+ rest = fb
# -- range support modifications end here
fp, retrlen = fw.retrfile(file, type, rest)
# -- range support modifications start here
if range_tup:
- (fb,lb) = range_tup
+ (fb, lb) = range_tup
if lb == '':
if retrlen is None or retrlen == 0:
raise RangeError('Requested Range Not Satisfiable due to unobtainable file length.')
@@ -314,7 +316,7 @@
raise RangeError('Requested Range Not Satisfiable')
else:
retrlen = lb - fb
- fp = RangeableFileObject(fp, (0,retrlen))
+ fp = RangeableFileObject(fp, (0, retrlen))
# -- range support modifications end here
headers = ""
@@ -340,8 +342,12 @@
# argument and pass it on to ftp.ntransfercmd
def retrfile(self, file, type, rest=None):
self.endtransfer()
- if type in ('d', 'D'): cmd = 'TYPE A'; isdir = 1
- else: cmd = 'TYPE ' + type; isdir = 0
+ if type in ('d', 'D'):
+ cmd = 'TYPE A'
+ isdir = 1
+ else:
+ cmd = 'TYPE ' + type
+ isdir = 0
try:
self.ftp.voidcmd(cmd)
except ftplib.all_errors:
@@ -372,8 +378,10 @@
# Set transfer mode to ASCII!
self.ftp.voidcmd('TYPE A')
# Try a directory listing
- if file: cmd = 'LIST ' + file
- else: cmd = 'LIST'
+ if file:
+ cmd = 'LIST ' + file
+ else:
+ cmd = 'LIST'
conn = self.ftp.ntransfercmd(cmd)
self.busy = 1
# Pass back both a suitably decorated object and a retrieval length
@@ -401,15 +409,16 @@
"""
global _rangere
- if range_header is None: return None
+ if range_header is None:
+ return None
if _rangere is None:
import re
_rangere = re.compile(r'^bytes=(\d{1,})-(\d*)')
match = _rangere.match(range_header)
if match:
- tup = range_tuple_normalize(match.group(1,2))
+ tup = range_tuple_normalize(match.group(1, 2))
if tup and tup[1]:
- tup = (tup[0],tup[1]+1)
+ tup = (tup[0], tup[1]+1)
return tup
return ()
@@ -418,11 +427,12 @@
Return a string of the form "bytes=<firstbyte>-<lastbyte>" or None
if no range is needed.
"""
- if range_tup is None: return None
+ if range_tup is None:
+ return None
range_tup = range_tuple_normalize(range_tup)
if range_tup:
if range_tup[1]:
- range_tup = (range_tup[0],range_tup[1] - 1)
+ range_tup = (range_tup[0], range_tup[1] - 1)
return 'bytes=%s-%s' % range_tup
def range_tuple_normalize(range_tup):
@@ -432,19 +442,28 @@
an int. Finally, return None if the normalized tuple == (0,'')
as that is equivelant to retrieving the entire file.
"""
- if range_tup is None: return None
+ if range_tup is None:
+ return None
# handle first byte
fb = range_tup[0]
- if fb in (None,''): fb = 0
- else: fb = int(fb)
+ if fb in (None, ''):
+ fb = 0
+ else:
+ fb = int(fb)
# handle last byte
- try: lb = range_tup[1]
- except IndexError: lb = ''
+ try:
+ lb = range_tup[1]
+ except IndexError:
+ lb = ''
else:
- if lb is None: lb = ''
- elif lb != '': lb = int(lb)
+ if lb is None:
+ lb = ''
+ elif lb != '':
+ lb = int(lb)
# check if range is over the entire file
- if (fb,lb) == (0,''): return None
+ if (fb, lb) == (0, ''):
+ return None
# check that the range is valid
- if lb < fb: raise RangeError('Invalid byte range: %s-%s' % (fb,lb))
- return (fb,lb)
+ if lb < fb:
+ raise RangeError('Invalid byte range: %s-%s' % (fb, lb))
+ return (fb, lb)