diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2013-08-31 12:12:16 -0400 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2013-08-31 12:12:16 -0400 |
commit | 0424d55854a4814a17377460975b791a8cb24a62 (patch) | |
tree | e8de9171debfcbbdad46d15ced20eda41685206e | |
parent | ae675b923b2079bad5d2bba83502cefc83a1edc2 (diff) | |
download | external_python_setuptools-0424d55854a4814a17377460975b791a8cb24a62.tar.gz external_python_setuptools-0424d55854a4814a17377460975b791a8cb24a62.tar.bz2 external_python_setuptools-0424d55854a4814a17377460975b791a8cb24a62.zip |
ez_setup.py now takes a --insecure argument to bypass the secure downloaders. download_setuptools also now accepts a new keyword argument 'download_factory', enabling programmitic invocation to customize the downloader resolution. Fixes #75. Thanks to Pablo Algarvio for the report and suggestions.
-rw-r--r-- | CHANGES.txt | 7 | ||||
-rw-r--r-- | CONTRIBUTORS.txt | 1 | ||||
-rw-r--r-- | ez_setup.py | 16 |
3 files changed, 21 insertions, 3 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index 3e2caeb0..7ac75d7d 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -2,6 +2,13 @@ CHANGES ======= +---- +next +---- + +* Issue #75: Add ``--insecure`` option to ez_setup.py to accommodate + environments where a trusted SSL connection cannot be validated. + --- 1.1 --- diff --git a/CONTRIBUTORS.txt b/CONTRIBUTORS.txt index f1966505..dd0b8c7f 100644 --- a/CONTRIBUTORS.txt +++ b/CONTRIBUTORS.txt @@ -21,6 +21,7 @@ Contributors * Marc Abramowitz * Martin von Löwis * Noufal Ibrahim +* Pedro Algarvio * Pete Hollobon * Phillip J. Eby * Philip Jenvey diff --git a/ez_setup.py b/ez_setup.py index 7a597d22..5c494460 100644 --- a/ez_setup.py +++ b/ez_setup.py @@ -254,7 +254,8 @@ def get_best_downloader(): return dl def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, - to_dir=os.curdir, delay=15): + to_dir=os.curdir, delay=15, + downloader_factory=get_best_downloader): """Download setuptools from a specified location and return its filename `version` should be a valid setuptools version number that is available @@ -262,6 +263,9 @@ def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, with a '/'). `to_dir` is the directory where the egg will be downloaded. `delay` is the number of seconds to pause before an actual download attempt. + + ``downloader_factory`` should be a function taking no arguments and + returning a function for downloading a URL to a target. """ # making sure we use the absolute path to_dir = os.path.abspath(to_dir) @@ -270,7 +274,7 @@ def download_setuptools(version=DEFAULT_VERSION, download_base=DEFAULT_URL, saveto = os.path.join(to_dir, tgz_name) if not os.path.exists(saveto): # Avoid repeated downloads log.warn("Downloading %s", url) - downloader = get_best_downloader() + downloader = downloader_factory() downloader(url, saveto) return os.path.realpath(saveto) @@ -346,6 +350,11 @@ def _parse_args(): '--download-base', dest='download_base', metavar="URL", default=DEFAULT_URL, help='alternative URL from where to download the setuptools package') + parser.add_option( + '--insecure', dest='downloader_factory', action='store_const', + const=lambda: download_file_insecure, default=get_best_downloader, + help='Use internal, non-validating downloader' + ) options, args = parser.parse_args() # positional arguments are ignored return options @@ -353,7 +362,8 @@ def _parse_args(): def main(version=DEFAULT_VERSION): """Install or upgrade setuptools and EasyInstall""" options = _parse_args() - tarball = download_setuptools(download_base=options.download_base) + tarball = download_setuptools(download_base=options.download_base, + downloader_factory=options.downloader_factory) return _install(tarball, _build_install_args(options)) if __name__ == '__main__': |