comparison mercurial/byterange.py @ 14947:3aa34005a73d

byterange: replace uses of hasattr with getattr
author Augie Fackler <durin42@gmail.com>
date Mon, 25 Jul 2011 15:09:17 -0500
parents a7d5816087a9
children 7de7630053cb
comparison
equal deleted inserted replaced
14946:28762bf809d8 14947:3aa34005a73d
101 101
102 def __getattr__(self, name): 102 def __getattr__(self, name):
103 """This effectively allows us to wrap at the instance level. 103 """This effectively allows us to wrap at the instance level.
104 Any attribute not found in _this_ object will be searched for 104 Any attribute not found in _this_ object will be searched for
105 in self.fo. This includes methods.""" 105 in self.fo. This includes methods."""
106 if hasattr(self.fo, name): 106 return getattr(self.fo, name)
107 return getattr(self.fo, name)
108 raise AttributeError(name)
109 107
110 def tell(self): 108 def tell(self):
111 """Return the position within the range. 109 """Return the position within the range.
112 This is different from fo.seek in that position 0 is the 110 This is different from fo.seek in that position 0 is the
113 first byte position of the range tuple. For example, if 111 first byte position of the range tuple. For example, if
168 def _do_seek(self, offset): 166 def _do_seek(self, offset):
169 """Seek based on whether wrapped object supports seek(). 167 """Seek based on whether wrapped object supports seek().
170 offset is relative to the current position (self.realpos). 168 offset is relative to the current position (self.realpos).
171 """ 169 """
172 assert offset >= 0 170 assert offset >= 0
173 if not hasattr(self.fo, 'seek'): 171 seek = getattr(self.fo, 'seek', self._poor_mans_seek)
174 self._poor_mans_seek(offset) 172 seek(self.realpos + offset)
175 else:
176 self.fo.seek(self.realpos + offset)
177 self.realpos += offset 173 self.realpos += offset
178 174
179 def _poor_mans_seek(self, offset): 175 def _poor_mans_seek(self, offset):
180 """Seek by calling the wrapped file objects read() method. 176 """Seek by calling the wrapped file objects read() method.
181 This is used for file like objects that do not have native 177 This is used for file like objects that do not have native