Mercurial > hg
comparison mercurial/statichttprepo.py @ 43076:2372284d9457
formatting: blacken the codebase
This is using my patch to black
(https://github.com/psf/black/pull/826) so we don't un-wrap collection
literals.
Done with:
hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S
# skip-blame mass-reformatting only
# no-check-commit reformats foo_bar functions
Differential Revision: https://phab.mercurial-scm.org/D6971
author | Augie Fackler <augie@google.com> |
---|---|
date | Sun, 06 Oct 2019 09:45:02 -0400 |
parents | 3518da504303 |
children | 687b865b95ad |
comparison
equal
deleted
inserted
replaced
43075:57875cf423c9 | 43076:2372284d9457 |
---|---|
27 ) | 27 ) |
28 | 28 |
29 urlerr = util.urlerr | 29 urlerr = util.urlerr |
30 urlreq = util.urlreq | 30 urlreq = util.urlreq |
31 | 31 |
32 | |
32 class httprangereader(object): | 33 class httprangereader(object): |
33 def __init__(self, url, opener): | 34 def __init__(self, url, opener): |
34 # we assume opener has HTTPRangeHandler | 35 # we assume opener has HTTPRangeHandler |
35 self.url = url | 36 self.url = url |
36 self.pos = 0 | 37 self.pos = 0 |
43 def __exit__(self, exc_type, exc_value, traceback): | 44 def __exit__(self, exc_type, exc_value, traceback): |
44 self.close() | 45 self.close() |
45 | 46 |
46 def seek(self, pos): | 47 def seek(self, pos): |
47 self.pos = pos | 48 self.pos = pos |
49 | |
48 def read(self, bytes=None): | 50 def read(self, bytes=None): |
49 req = urlreq.request(pycompat.strurl(self.url)) | 51 req = urlreq.request(pycompat.strurl(self.url)) |
50 end = '' | 52 end = '' |
51 if bytes: | 53 if bytes: |
52 end = self.pos + bytes - 1 | 54 end = self.pos + bytes - 1 |
65 | 67 |
66 if code == 200: | 68 if code == 200: |
67 # HTTPRangeHandler does nothing if remote does not support | 69 # HTTPRangeHandler does nothing if remote does not support |
68 # Range headers and returns the full entity. Let's slice it. | 70 # Range headers and returns the full entity. Let's slice it. |
69 if bytes: | 71 if bytes: |
70 data = data[self.pos:self.pos + bytes] | 72 data = data[self.pos : self.pos + bytes] |
71 else: | 73 else: |
72 data = data[self.pos:] | 74 data = data[self.pos :] |
73 elif bytes: | 75 elif bytes: |
74 data = data[:bytes] | 76 data = data[:bytes] |
75 self.pos += len(data) | 77 self.pos += len(data) |
76 return data | 78 return data |
79 | |
77 def readlines(self): | 80 def readlines(self): |
78 return self.read().splitlines(True) | 81 return self.read().splitlines(True) |
82 | |
79 def __iter__(self): | 83 def __iter__(self): |
80 return iter(self.readlines()) | 84 return iter(self.readlines()) |
85 | |
81 def close(self): | 86 def close(self): |
82 pass | 87 pass |
88 | |
83 | 89 |
84 # _RangeError and _HTTPRangeHandler were originally in byterange.py, | 90 # _RangeError and _HTTPRangeHandler were originally in byterange.py, |
85 # which was itself extracted from urlgrabber. See the last version of | 91 # which was itself extracted from urlgrabber. See the last version of |
86 # byterange.py from history if you need more information. | 92 # byterange.py from history if you need more information. |
87 class _RangeError(IOError): | 93 class _RangeError(IOError): |
88 """Error raised when an unsatisfiable range is requested.""" | 94 """Error raised when an unsatisfiable range is requested.""" |
95 | |
89 | 96 |
90 class _HTTPRangeHandler(urlreq.basehandler): | 97 class _HTTPRangeHandler(urlreq.basehandler): |
91 """Handler that enables HTTP Range headers. | 98 """Handler that enables HTTP Range headers. |
92 | 99 |
93 This was extremely simple. The Range header is a HTTP feature to | 100 This was extremely simple. The Range header is a HTTP feature to |
105 | 112 |
106 def http_error_416(self, req, fp, code, msg, hdrs): | 113 def http_error_416(self, req, fp, code, msg, hdrs): |
107 # HTTP's Range Not Satisfiable error | 114 # HTTP's Range Not Satisfiable error |
108 raise _RangeError('Requested Range Not Satisfiable') | 115 raise _RangeError('Requested Range Not Satisfiable') |
109 | 116 |
117 | |
110 def build_opener(ui, authinfo): | 118 def build_opener(ui, authinfo): |
111 # urllib cannot handle URLs with embedded user or passwd | 119 # urllib cannot handle URLs with embedded user or passwd |
112 urlopener = url.opener(ui, authinfo) | 120 urlopener = url.opener(ui, authinfo) |
113 urlopener.add_handler(_HTTPRangeHandler()) | 121 urlopener.add_handler(_HTTPRangeHandler()) |
114 | 122 |
129 else: | 137 else: |
130 return self.base | 138 return self.base |
131 | 139 |
132 return statichttpvfs | 140 return statichttpvfs |
133 | 141 |
142 | |
134 class statichttppeer(localrepo.localpeer): | 143 class statichttppeer(localrepo.localpeer): |
135 def local(self): | 144 def local(self): |
136 return None | 145 return None |
146 | |
137 def canpush(self): | 147 def canpush(self): |
138 return False | 148 return False |
139 | 149 |
140 class statichttprepository(localrepo.localrepository, | 150 |
141 localrepo.revlogfilestorage): | 151 class statichttprepository( |
152 localrepo.localrepository, localrepo.revlogfilestorage | |
153 ): | |
142 supported = localrepo.localrepository._basesupported | 154 supported = localrepo.localrepository._basesupported |
143 | 155 |
144 def __init__(self, ui, path): | 156 def __init__(self, ui, path): |
145 self._url = path | 157 self._url = path |
146 self.ui = ui | 158 self.ui = ui |
176 # we do not care about empty old-style repositories here | 188 # we do not care about empty old-style repositories here |
177 msg = _("'%s' does not appear to be an hg repository") % path | 189 msg = _("'%s' does not appear to be an hg repository") % path |
178 raise error.RepoError(msg) | 190 raise error.RepoError(msg) |
179 | 191 |
180 supportedrequirements = localrepo.gathersupportedrequirements(ui) | 192 supportedrequirements = localrepo.gathersupportedrequirements(ui) |
181 localrepo.ensurerequirementsrecognized(requirements, | 193 localrepo.ensurerequirementsrecognized( |
182 supportedrequirements) | 194 requirements, supportedrequirements |
195 ) | |
183 localrepo.ensurerequirementscompatible(ui, requirements) | 196 localrepo.ensurerequirementscompatible(ui, requirements) |
184 | 197 |
185 # setup store | 198 # setup store |
186 self.store = localrepo.makestore(requirements, self.path, vfsclass) | 199 self.store = localrepo.makestore(requirements, self.path, vfsclass) |
187 self.spath = self.store.path | 200 self.spath = self.store.path |
189 self.sjoin = self.store.join | 202 self.sjoin = self.store.join |
190 self._filecache = {} | 203 self._filecache = {} |
191 self.requirements = requirements | 204 self.requirements = requirements |
192 | 205 |
193 rootmanifest = manifest.manifestrevlog(self.svfs) | 206 rootmanifest = manifest.manifestrevlog(self.svfs) |
194 self.manifestlog = manifest.manifestlog(self.svfs, self, rootmanifest, | 207 self.manifestlog = manifest.manifestlog( |
195 self.narrowmatch()) | 208 self.svfs, self, rootmanifest, self.narrowmatch() |
209 ) | |
196 self.changelog = changelog.changelog(self.svfs) | 210 self.changelog = changelog.changelog(self.svfs) |
197 self._tags = None | 211 self._tags = None |
198 self.nodetagscache = None | 212 self.nodetagscache = None |
199 self._branchcaches = branchmap.BranchMapCache() | 213 self._branchcaches = branchmap.BranchMapCache() |
200 self._revbranchcache = None | 214 self._revbranchcache = None |
214 | 228 |
215 def peer(self): | 229 def peer(self): |
216 return statichttppeer(self) | 230 return statichttppeer(self) |
217 | 231 |
218 def wlock(self, wait=True): | 232 def wlock(self, wait=True): |
219 raise error.LockUnavailable(0, _('lock not available'), 'lock', | 233 raise error.LockUnavailable( |
220 _('cannot lock static-http repository')) | 234 0, |
235 _('lock not available'), | |
236 'lock', | |
237 _('cannot lock static-http repository'), | |
238 ) | |
221 | 239 |
222 def lock(self, wait=True): | 240 def lock(self, wait=True): |
223 raise error.Abort(_('cannot lock static-http repository')) | 241 raise error.Abort(_('cannot lock static-http repository')) |
224 | 242 |
225 def _writecaches(self): | 243 def _writecaches(self): |
226 pass # statichttprepository are read only | 244 pass # statichttprepository are read only |
245 | |
227 | 246 |
228 def instance(ui, path, create, intents=None, createopts=None): | 247 def instance(ui, path, create, intents=None, createopts=None): |
229 if create: | 248 if create: |
230 raise error.Abort(_('cannot create new static-http repository')) | 249 raise error.Abort(_('cannot create new static-http repository')) |
231 return statichttprepository(ui, path[7:]) | 250 return statichttprepository(ui, path[7:]) |