Mercurial > public > mercurial-scm > hg
comparison mercurial/byterange.py @ 27504:ce3ae9ccd800
byterange: use absolute_import
There were a lot of imports scattered around this file. They have been
consolidated at the top of the file where they belong.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 21 Dec 2015 21:42:14 -0800 |
parents | 328739ea70c3 |
children | 032c4c2f802a |
comparison
equal
deleted
inserted
replaced
27503:0f4596622273 | 27504:ce3ae9ccd800 |
---|---|
15 # This file is part of urlgrabber, a high-level cross-protocol url-grabber | 15 # This file is part of urlgrabber, a high-level cross-protocol url-grabber |
16 # Copyright 2002-2004 Michael D. Stenner, Ryan Tomayko | 16 # Copyright 2002-2004 Michael D. Stenner, Ryan Tomayko |
17 | 17 |
18 # $Id: byterange.py,v 1.9 2005/02/14 21:55:07 mstenner Exp $ | 18 # $Id: byterange.py,v 1.9 2005/02/14 21:55:07 mstenner Exp $ |
19 | 19 |
20 from __future__ import absolute_import | |
21 | |
22 import email | |
23 import ftplib | |
24 import mimetypes | |
20 import os | 25 import os |
26 import re | |
27 import socket | |
21 import stat | 28 import stat |
22 import urllib | 29 import urllib |
23 import urllib2 | 30 import urllib2 |
24 import email.Utils | 31 |
32 addclosehook = urllib.addclosehook | |
33 addinfourl = urllib.addinfourl | |
34 splitattr = urllib.splitattr | |
35 splitpasswd = urllib.splitpasswd | |
36 splitport = urllib.splitport | |
37 splituser = urllib.splituser | |
38 unquote = urllib.unquote | |
25 | 39 |
26 class RangeError(IOError): | 40 class RangeError(IOError): |
27 """Error raised when an unsatisfiable range is requested.""" | 41 """Error raised when an unsatisfiable range is requested.""" |
28 pass | 42 pass |
29 | 43 |
194 """FileHandler subclass that adds Range support. | 208 """FileHandler subclass that adds Range support. |
195 This class handles Range headers exactly like an HTTP | 209 This class handles Range headers exactly like an HTTP |
196 server would. | 210 server would. |
197 """ | 211 """ |
198 def open_local_file(self, req): | 212 def open_local_file(self, req): |
199 import mimetypes | |
200 import email | |
201 host = req.get_host() | 213 host = req.get_host() |
202 file = req.get_selector() | 214 file = req.get_selector() |
203 localfile = urllib.url2pathname(file) | 215 localfile = urllib.url2pathname(file) |
204 stats = os.stat(localfile) | 216 stats = os.stat(localfile) |
205 size = stats[stat.ST_SIZE] | 217 size = stats[stat.ST_SIZE] |
231 # Unfortunately, a large amount of base FTP code had to be copied | 243 # Unfortunately, a large amount of base FTP code had to be copied |
232 # from urllib and urllib2 in order to insert the FTP REST command. | 244 # from urllib and urllib2 in order to insert the FTP REST command. |
233 # Code modifications for range support have been commented as | 245 # Code modifications for range support have been commented as |
234 # follows: | 246 # follows: |
235 # -- range support modifications start/end here | 247 # -- range support modifications start/end here |
236 | |
237 from urllib import splitport, splituser, splitpasswd, splitattr, \ | |
238 unquote, addclosehook, addinfourl | |
239 import ftplib | |
240 import socket | |
241 import mimetypes | |
242 import email | |
243 | 248 |
244 class FTPRangeHandler(urllib2.FTPHandler): | 249 class FTPRangeHandler(urllib2.FTPHandler): |
245 def ftp_open(self, req): | 250 def ftp_open(self, req): |
246 host = req.get_host() | 251 host = req.get_host() |
247 if not host: | 252 if not host: |
404 """ | 409 """ |
405 global _rangere | 410 global _rangere |
406 if range_header is None: | 411 if range_header is None: |
407 return None | 412 return None |
408 if _rangere is None: | 413 if _rangere is None: |
409 import re | |
410 _rangere = re.compile(r'^bytes=(\d{1,})-(\d*)') | 414 _rangere = re.compile(r'^bytes=(\d{1,})-(\d*)') |
411 match = _rangere.match(range_header) | 415 match = _rangere.match(range_header) |
412 if match: | 416 if match: |
413 tup = range_tuple_normalize(match.group(1, 2)) | 417 tup = range_tuple_normalize(match.group(1, 2)) |
414 if tup and tup[1]: | 418 if tup and tup[1]: |