29
29
except ImportError :
30
30
USER_SITE = None
31
31
32
- DEFAULT_VERSION = "1.1"
32
+ DEFAULT_VERSION = "1.1.1 "
33
33
DEFAULT_URL = "https://pypi.python.org/packages/source/s/setuptools/"
34
34
35
35
def _python_cmd (* args ):
@@ -254,14 +254,18 @@ def get_best_downloader():
254
254
return dl
255
255
256
256
def download_setuptools (version = DEFAULT_VERSION , download_base = DEFAULT_URL ,
257
- to_dir = os .curdir , delay = 15 ):
257
+ to_dir = os .curdir , delay = 15 ,
258
+ downloader_factory = get_best_downloader ):
258
259
"""Download setuptools from a specified location and return its filename
259
260
260
261
`version` should be a valid setuptools version number that is available
261
262
as an egg for download under the `download_base` URL (which should end
262
263
with a '/'). `to_dir` is the directory where the egg will be downloaded.
263
264
`delay` is the number of seconds to pause before an actual download
264
265
attempt.
266
+
267
+ ``downloader_factory`` should be a function taking no arguments and
268
+ returning a function for downloading a URL to a target.
265
269
"""
266
270
# making sure we use the absolute path
267
271
to_dir = os .path .abspath (to_dir )
@@ -270,7 +274,7 @@ def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL,
270
274
saveto = os .path .join (to_dir , tgz_name )
271
275
if not os .path .exists (saveto ): # Avoid repeated downloads
272
276
log .warn ("Downloading %s" , url )
273
- downloader = get_best_downloader ()
277
+ downloader = downloader_factory ()
274
278
downloader (url , saveto )
275
279
return os .path .realpath (saveto )
276
280
@@ -346,14 +350,20 @@ def _parse_args():
346
350
'--download-base' , dest = 'download_base' , metavar = "URL" ,
347
351
default = DEFAULT_URL ,
348
352
help = 'alternative URL from where to download the setuptools package' )
353
+ parser .add_option (
354
+ '--insecure' , dest = 'downloader_factory' , action = 'store_const' ,
355
+ const = lambda : download_file_insecure , default = get_best_downloader ,
356
+ help = 'Use internal, non-validating downloader'
357
+ )
349
358
options , args = parser .parse_args ()
350
359
# positional arguments are ignored
351
360
return options
352
361
353
362
def main (version = DEFAULT_VERSION ):
354
363
"""Install or upgrade setuptools and EasyInstall"""
355
364
options = _parse_args ()
356
- tarball = download_setuptools (download_base = options .download_base )
365
+ tarball = download_setuptools (download_base = options .download_base ,
366
+ downloader_factory = options .downloader_factory )
357
367
return _install (tarball , _build_install_args (options ))
358
368
359
369
if __name__ == '__main__' :
0 commit comments