com.googler.python 1.0.7 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +4 -2
- package/python3.4.2/lib/python3.4/site-packages/pip/__init__.py +1 -277
- package/python3.4.2/lib/python3.4/site-packages/pip/__main__.py +19 -7
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/__init__.py +246 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/basecommand.py +373 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/{baseparser.py → _internal/baseparser.py} +240 -224
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/build_env.py +92 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/cache.py +202 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/cmdoptions.py +609 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/__init__.py +79 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/check.py +42 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/completion.py +94 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/configuration.py +227 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/download.py +233 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/freeze.py +96 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/hash.py +57 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/{commands → _internal/commands}/help.py +36 -33
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/install.py +477 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/list.py +343 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/search.py +135 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/show.py +164 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/uninstall.py +71 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/commands/wheel.py +179 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/compat.py +235 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/configuration.py +378 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/download.py +922 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/exceptions.py +249 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/index.py +1117 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/locations.py +194 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/models/__init__.py +4 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/models/index.py +15 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/{_vendor/requests/packages/urllib3/contrib → _internal/operations}/__init__.py +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/operations/check.py +106 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/operations/freeze.py +252 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/operations/prepare.py +378 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/pep425tags.py +317 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/__init__.py +69 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/req_file.py +338 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/req_install.py +1115 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/req_set.py +164 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/req/req_uninstall.py +455 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/resolve.py +354 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/{status_codes.py → _internal/status_codes.py} +8 -6
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/__init__.py +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/appdirs.py +258 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/deprecation.py +77 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/encoding.py +33 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/filesystem.py +28 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/glibc.py +84 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/hashes.py +94 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/logging.py +132 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/misc.py +851 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/outdated.py +163 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/packaging.py +70 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/setuptools_build.py +8 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/temp_dir.py +82 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/typing.py +29 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/utils/ui.py +421 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/__init__.py +471 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/bazaar.py +113 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/git.py +311 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/mercurial.py +105 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/vcs/subversion.py +271 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_internal/wheel.py +817 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/__init__.py +109 -8
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/appdirs.py +604 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/__init__.py +11 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/_cmd.py +60 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/adapter.py +134 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/cache.py +39 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +2 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +133 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +43 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/compat.py +29 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/controller.py +373 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/filewrapper.py +78 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/heuristics.py +138 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/serialize.py +194 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/cachecontrol/wrapper.py +27 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/certifi/__init__.py +3 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/certifi/__main__.py +2 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests → certifi}/cacert.pem +1765 -2358
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/certifi/core.py +37 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/__init__.py +39 -32
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/big5freq.py +386 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/big5prober.py +47 -42
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/chardistribution.py +233 -231
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/charsetgroupprober.py +106 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/charsetprober.py +145 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/cli/__init__.py +1 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/cli/chardetect.py +85 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/codingstatemachine.py +88 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/compat.py +34 -34
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/cp949prober.py +49 -44
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/enums.py +76 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/escprober.py +101 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/escsm.py +246 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/eucjpprober.py +92 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/euckrfreq.py +195 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/euckrprober.py +47 -42
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/euctwfreq.py +387 -428
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/euctwprober.py +46 -41
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/gb2312freq.py +283 -472
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/gb2312prober.py +46 -41
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/hebrewprober.py +292 -283
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/jisfreq.py +325 -569
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/jpcntx.py +233 -219
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langbulgarianmodel.py +228 -229
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langcyrillicmodel.py +333 -329
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langgreekmodel.py +225 -225
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langhebrewmodel.py +200 -201
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langhungarianmodel.py +225 -225
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/langthaimodel.py +199 -200
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/langturkishmodel.py +193 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/latin1prober.py +145 -139
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/mbcharsetprober.py +91 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/mbcsgroupprober.py +54 -54
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/mbcssm.py +572 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/sbcharsetprober.py +132 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/sbcsgroupprober.py +73 -69
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/sjisprober.py +92 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/universaldetector.py +286 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/chardet → chardet}/utf8prober.py +82 -76
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/chardet/version.py +9 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/__init__.py +7 -7
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/ansi.py +102 -50
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/ansitowin32.py +236 -190
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/initialise.py +82 -56
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/win32.py +156 -137
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/colorama/winterm.py +162 -120
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/__init__.py +23 -23
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/__init__.py +6 -6
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/misc.py +41 -41
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/shutil.py +761 -761
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg +84 -84
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/sysconfig.py +788 -788
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/_backport/tarfile.py +2607 -2607
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/compat.py +1117 -1064
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/database.py +1318 -1301
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/index.py +516 -488
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/locators.py +1292 -1194
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/manifest.py +393 -364
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/markers.py +131 -190
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/metadata.py +1068 -1026
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/resources.py +355 -317
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/scripts.py +415 -323
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/t32.exe +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/t64.exe +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/util.py +1755 -1575
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/version.py +736 -721
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/w32.exe +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/w64.exe +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distlib/wheel.py +984 -958
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/distro.py +1104 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/__init__.py +35 -23
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{ihatexml.py → _ihatexml.py} +288 -285
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{inputstream.py → _inputstream.py} +923 -881
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{tokenizer.py → _tokenizer.py} +1721 -1731
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{trie → _trie}/__init__.py +14 -12
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{trie → _trie}/_base.py +37 -37
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{trie → _trie}/datrie.py +44 -44
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{trie → _trie}/py.py +67 -67
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/{utils.py → _utils.py} +124 -82
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/constants.py +2947 -3104
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py +29 -20
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/{_base.py → base.py} +12 -12
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py +73 -65
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/lint.py +93 -93
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/optionaltags.py +207 -205
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/sanitizer.py +896 -12
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/filters/whitespace.py +38 -38
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/html5parser.py +2791 -2713
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/serializer.py +409 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py +30 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py +54 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treeadapters/sax.py +50 -44
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py +88 -76
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/{_base.py → base.py} +417 -377
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/dom.py +236 -227
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/etree.py +340 -337
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py +366 -369
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py +154 -57
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/{_base.py → base.py} +252 -200
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/dom.py +43 -46
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/etree.py +130 -138
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/{lxmletree.py → etree_lxml.py} +213 -208
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/{genshistream.py → genshi.py} +69 -69
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/__init__.py +2 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/codec.py +118 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/compat.py +12 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/core.py +387 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/idnadata.py +1585 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/intranges.py +53 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/package_data.py +2 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/idna/uts46data.py +7634 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/ipaddress.py +2419 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/__init__.py +347 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/linklockfile.py +73 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/mkdirlockfile.py +84 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/pidlockfile.py +190 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/sqlitelockfile.py +156 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/lockfile/symlinklockfile.py +70 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/msgpack/__init__.py +66 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/msgpack/_version.py +1 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/msgpack/exceptions.py +41 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/msgpack/fallback.py +971 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/__about__.py +21 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/__init__.py +14 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/_compat.py +30 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/_structures.py +70 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/markers.py +301 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/requirements.py +130 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/specifiers.py +774 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/utils.py +63 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/packaging/version.py +441 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{pkg_resources.py → pkg_resources/__init__.py} +3125 -2762
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pkg_resources/py31compat.py +22 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/__init__.py +127 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/bar.py +88 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/counter.py +48 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/helpers.py +91 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/progress/spinner.py +44 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pyparsing.py +5720 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pytoml/__init__.py +3 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pytoml/core.py +13 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pytoml/parser.py +374 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/pytoml/writer.py +127 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/__init__.py +123 -77
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/__version__.py +14 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/_internal_utils.py +42 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/adapters.py +525 -388
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/api.py +152 -120
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/auth.py +293 -193
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/certs.py +18 -24
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/compat.py +73 -115
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/cookies.py +542 -454
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/exceptions.py +122 -75
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/help.py +120 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/hooks.py +34 -45
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/models.py +948 -803
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages.py +16 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/sessions.py +737 -637
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/status_codes.py +91 -88
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/structures.py +105 -127
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/utils.py +904 -673
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/retrying.py +267 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/six.py +891 -646
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/__init__.py +97 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/_collections.py +319 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/connection.py +373 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/connectionpool.py +905 -710
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +593 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +343 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/appengine.py +296 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/contrib/ntlmpool.py +112 -120
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +455 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +810 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/contrib/socks.py +188 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/exceptions.py +246 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/fields.py +178 -177
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/filepost.py +94 -100
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/packages/__init__.py +5 -4
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +53 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/packages/ordered_dict.py +259 -260
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/packages/six.py +868 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/packages/ssl_match_hostname/__init__.py +19 -13
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/packages/ssl_match_hostname/_implementation.py +157 -105
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/poolmanager.py +440 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/request.py +148 -141
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/response.py +626 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/__init__.py +54 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/connection.py +130 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/request.py +118 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/response.py +81 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/retry.py +401 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/selectors.py +581 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/ssl_.py +341 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/util/timeout.py +242 -234
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/{requests/packages/urllib3 → urllib3}/util/url.py +230 -162
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/urllib3/util/wait.py +40 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/__init__.py +342 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/labels.py +231 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/mklabels.py +59 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/tests.py +153 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/webencodings/x_user_defined.py +325 -0
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/_markerlib/__init__.py +0 -16
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/_markerlib/markers.py +0 -119
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/sanitizer.py +0 -271
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/serializer/__init__.py +0 -16
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/serializer/htmlserializer.py +0 -320
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/html5lib/treewalkers/pulldom.py +0 -63
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/re-vendor.py +0 -34
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/__init__.py +0 -3
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/big5freq.py +0 -925
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/chardetect.py +0 -46
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/charsetgroupprober.py +0 -106
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/charsetprober.py +0 -62
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/codingstatemachine.py +0 -61
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/constants.py +0 -39
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/escprober.py +0 -86
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/escsm.py +0 -242
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/eucjpprober.py +0 -90
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/euckrfreq.py +0 -596
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/mbcharsetprober.py +0 -86
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/mbcssm.py +0 -575
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/sbcharsetprober.py +0 -120
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/sjisprober.py +0 -91
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/chardet/universaldetector.py +0 -170
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/__init__.py +0 -58
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/_collections.py +0 -205
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/connection.py +0 -204
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py +0 -422
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/exceptions.py +0 -126
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/packages/six.py +0 -385
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/poolmanager.py +0 -258
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/response.py +0 -308
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/__init__.py +0 -27
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/connection.py +0 -45
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/request.py +0 -68
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/response.py +0 -13
- package/python3.4.2/lib/python3.4/site-packages/pip/_vendor/requests/packages/urllib3/util/ssl_.py +0 -133
- package/python3.4.2/lib/python3.4/site-packages/pip/backwardcompat/__init__.py +0 -138
- package/python3.4.2/lib/python3.4/site-packages/pip/basecommand.py +0 -201
- package/python3.4.2/lib/python3.4/site-packages/pip/cmdoptions.py +0 -371
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/__init__.py +0 -88
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/bundle.py +0 -42
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/completion.py +0 -59
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/freeze.py +0 -114
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/install.py +0 -314
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/list.py +0 -162
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/search.py +0 -132
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/show.py +0 -80
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/uninstall.py +0 -59
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/unzip.py +0 -7
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/wheel.py +0 -195
- package/python3.4.2/lib/python3.4/site-packages/pip/commands/zip.py +0 -351
- package/python3.4.2/lib/python3.4/site-packages/pip/download.py +0 -644
- package/python3.4.2/lib/python3.4/site-packages/pip/exceptions.py +0 -46
- package/python3.4.2/lib/python3.4/site-packages/pip/index.py +0 -990
- package/python3.4.2/lib/python3.4/site-packages/pip/locations.py +0 -171
- package/python3.4.2/lib/python3.4/site-packages/pip/log.py +0 -276
- package/python3.4.2/lib/python3.4/site-packages/pip/pep425tags.py +0 -102
- package/python3.4.2/lib/python3.4/site-packages/pip/req.py +0 -1931
- package/python3.4.2/lib/python3.4/site-packages/pip/runner.py +0 -18
- package/python3.4.2/lib/python3.4/site-packages/pip/util.py +0 -720
- package/python3.4.2/lib/python3.4/site-packages/pip/vcs/__init__.py +0 -251
- package/python3.4.2/lib/python3.4/site-packages/pip/vcs/bazaar.py +0 -131
- package/python3.4.2/lib/python3.4/site-packages/pip/vcs/git.py +0 -194
- package/python3.4.2/lib/python3.4/site-packages/pip/vcs/mercurial.py +0 -151
- package/python3.4.2/lib/python3.4/site-packages/pip/vcs/subversion.py +0 -273
- package/python3.4.2/lib/python3.4/site-packages/pip/wheel.py +0 -560
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
from __future__ import absolute_import, division
|
|
2
|
+
|
|
3
|
+
import contextlib
|
|
4
|
+
import itertools
|
|
5
|
+
import logging
|
|
6
|
+
import sys
|
|
7
|
+
import time
|
|
8
|
+
from signal import SIGINT, default_int_handler, signal
|
|
9
|
+
|
|
10
|
+
from pip._vendor import six
|
|
11
|
+
from pip._vendor.progress.bar import (
|
|
12
|
+
Bar, ChargingBar, FillingCirclesBar, FillingSquaresBar, IncrementalBar,
|
|
13
|
+
ShadyBar,
|
|
14
|
+
)
|
|
15
|
+
from pip._vendor.progress.helpers import HIDE_CURSOR, SHOW_CURSOR, WritelnMixin
|
|
16
|
+
from pip._vendor.progress.spinner import Spinner
|
|
17
|
+
|
|
18
|
+
from pip._internal.compat import WINDOWS
|
|
19
|
+
from pip._internal.utils.logging import get_indentation
|
|
20
|
+
from pip._internal.utils.misc import format_size
|
|
21
|
+
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
|
22
|
+
|
|
23
|
+
if MYPY_CHECK_RUNNING:
|
|
24
|
+
from typing import Any
|
|
25
|
+
|
|
26
|
+
try:
|
|
27
|
+
from pip._vendor import colorama
|
|
28
|
+
# Lots of different errors can come from this, including SystemError and
|
|
29
|
+
# ImportError.
|
|
30
|
+
except Exception:
|
|
31
|
+
colorama = None
|
|
32
|
+
|
|
33
|
+
logger = logging.getLogger(__name__)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def _select_progress_class(preferred, fallback):
|
|
37
|
+
encoding = getattr(preferred.file, "encoding", None)
|
|
38
|
+
|
|
39
|
+
# If we don't know what encoding this file is in, then we'll just assume
|
|
40
|
+
# that it doesn't support unicode and use the ASCII bar.
|
|
41
|
+
if not encoding:
|
|
42
|
+
return fallback
|
|
43
|
+
|
|
44
|
+
# Collect all of the possible characters we want to use with the preferred
|
|
45
|
+
# bar.
|
|
46
|
+
characters = [
|
|
47
|
+
getattr(preferred, "empty_fill", six.text_type()),
|
|
48
|
+
getattr(preferred, "fill", six.text_type()),
|
|
49
|
+
]
|
|
50
|
+
characters += list(getattr(preferred, "phases", []))
|
|
51
|
+
|
|
52
|
+
# Try to decode the characters we're using for the bar using the encoding
|
|
53
|
+
# of the given file, if this works then we'll assume that we can use the
|
|
54
|
+
# fancier bar and if not we'll fall back to the plaintext bar.
|
|
55
|
+
try:
|
|
56
|
+
six.text_type().join(characters).encode(encoding)
|
|
57
|
+
except UnicodeEncodeError:
|
|
58
|
+
return fallback
|
|
59
|
+
else:
|
|
60
|
+
return preferred
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
_BaseBar = _select_progress_class(IncrementalBar, Bar) # type: Any
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
class InterruptibleMixin(object):
|
|
67
|
+
"""
|
|
68
|
+
Helper to ensure that self.finish() gets called on keyboard interrupt.
|
|
69
|
+
|
|
70
|
+
This allows downloads to be interrupted without leaving temporary state
|
|
71
|
+
(like hidden cursors) behind.
|
|
72
|
+
|
|
73
|
+
This class is similar to the progress library's existing SigIntMixin
|
|
74
|
+
helper, but as of version 1.2, that helper has the following problems:
|
|
75
|
+
|
|
76
|
+
1. It calls sys.exit().
|
|
77
|
+
2. It discards the existing SIGINT handler completely.
|
|
78
|
+
3. It leaves its own handler in place even after an uninterrupted finish,
|
|
79
|
+
which will have unexpected delayed effects if the user triggers an
|
|
80
|
+
unrelated keyboard interrupt some time after a progress-displaying
|
|
81
|
+
download has already completed, for example.
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
def __init__(self, *args, **kwargs):
|
|
85
|
+
"""
|
|
86
|
+
Save the original SIGINT handler for later.
|
|
87
|
+
"""
|
|
88
|
+
super(InterruptibleMixin, self).__init__(*args, **kwargs)
|
|
89
|
+
|
|
90
|
+
self.original_handler = signal(SIGINT, self.handle_sigint)
|
|
91
|
+
|
|
92
|
+
# If signal() returns None, the previous handler was not installed from
|
|
93
|
+
# Python, and we cannot restore it. This probably should not happen,
|
|
94
|
+
# but if it does, we must restore something sensible instead, at least.
|
|
95
|
+
# The least bad option should be Python's default SIGINT handler, which
|
|
96
|
+
# just raises KeyboardInterrupt.
|
|
97
|
+
if self.original_handler is None:
|
|
98
|
+
self.original_handler = default_int_handler
|
|
99
|
+
|
|
100
|
+
def finish(self):
|
|
101
|
+
"""
|
|
102
|
+
Restore the original SIGINT handler after finishing.
|
|
103
|
+
|
|
104
|
+
This should happen regardless of whether the progress display finishes
|
|
105
|
+
normally, or gets interrupted.
|
|
106
|
+
"""
|
|
107
|
+
super(InterruptibleMixin, self).finish()
|
|
108
|
+
signal(SIGINT, self.original_handler)
|
|
109
|
+
|
|
110
|
+
def handle_sigint(self, signum, frame):
|
|
111
|
+
"""
|
|
112
|
+
Call self.finish() before delegating to the original SIGINT handler.
|
|
113
|
+
|
|
114
|
+
This handler should only be in place while the progress display is
|
|
115
|
+
active.
|
|
116
|
+
"""
|
|
117
|
+
self.finish()
|
|
118
|
+
self.original_handler(signum, frame)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
class SilentBar(Bar):
|
|
122
|
+
|
|
123
|
+
def update(self):
|
|
124
|
+
pass
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
class BlueEmojiBar(IncrementalBar):
|
|
128
|
+
|
|
129
|
+
suffix = "%(percent)d%%"
|
|
130
|
+
bar_prefix = " "
|
|
131
|
+
bar_suffix = " "
|
|
132
|
+
phases = (u"\U0001F539", u"\U0001F537", u"\U0001F535") # type: Any
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
class DownloadProgressMixin(object):
|
|
136
|
+
|
|
137
|
+
def __init__(self, *args, **kwargs):
|
|
138
|
+
super(DownloadProgressMixin, self).__init__(*args, **kwargs)
|
|
139
|
+
self.message = (" " * (get_indentation() + 2)) + self.message
|
|
140
|
+
|
|
141
|
+
@property
|
|
142
|
+
def downloaded(self):
|
|
143
|
+
return format_size(self.index)
|
|
144
|
+
|
|
145
|
+
@property
|
|
146
|
+
def download_speed(self):
|
|
147
|
+
# Avoid zero division errors...
|
|
148
|
+
if self.avg == 0.0:
|
|
149
|
+
return "..."
|
|
150
|
+
return format_size(1 / self.avg) + "/s"
|
|
151
|
+
|
|
152
|
+
@property
|
|
153
|
+
def pretty_eta(self):
|
|
154
|
+
if self.eta:
|
|
155
|
+
return "eta %s" % self.eta_td
|
|
156
|
+
return ""
|
|
157
|
+
|
|
158
|
+
def iter(self, it, n=1):
|
|
159
|
+
for x in it:
|
|
160
|
+
yield x
|
|
161
|
+
self.next(n)
|
|
162
|
+
self.finish()
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
class WindowsMixin(object):
|
|
166
|
+
|
|
167
|
+
def __init__(self, *args, **kwargs):
|
|
168
|
+
# The Windows terminal does not support the hide/show cursor ANSI codes
|
|
169
|
+
# even with colorama. So we'll ensure that hide_cursor is False on
|
|
170
|
+
# Windows.
|
|
171
|
+
# This call neds to go before the super() call, so that hide_cursor
|
|
172
|
+
# is set in time. The base progress bar class writes the "hide cursor"
|
|
173
|
+
# code to the terminal in its init, so if we don't set this soon
|
|
174
|
+
# enough, we get a "hide" with no corresponding "show"...
|
|
175
|
+
if WINDOWS and self.hide_cursor:
|
|
176
|
+
self.hide_cursor = False
|
|
177
|
+
|
|
178
|
+
super(WindowsMixin, self).__init__(*args, **kwargs)
|
|
179
|
+
|
|
180
|
+
# Check if we are running on Windows and we have the colorama module,
|
|
181
|
+
# if we do then wrap our file with it.
|
|
182
|
+
if WINDOWS and colorama:
|
|
183
|
+
self.file = colorama.AnsiToWin32(self.file)
|
|
184
|
+
# The progress code expects to be able to call self.file.isatty()
|
|
185
|
+
# but the colorama.AnsiToWin32() object doesn't have that, so we'll
|
|
186
|
+
# add it.
|
|
187
|
+
self.file.isatty = lambda: self.file.wrapped.isatty()
|
|
188
|
+
# The progress code expects to be able to call self.file.flush()
|
|
189
|
+
# but the colorama.AnsiToWin32() object doesn't have that, so we'll
|
|
190
|
+
# add it.
|
|
191
|
+
self.file.flush = lambda: self.file.wrapped.flush()
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
class BaseDownloadProgressBar(WindowsMixin, InterruptibleMixin,
|
|
195
|
+
DownloadProgressMixin):
|
|
196
|
+
|
|
197
|
+
file = sys.stdout
|
|
198
|
+
message = "%(percent)d%%"
|
|
199
|
+
suffix = "%(downloaded)s %(download_speed)s %(pretty_eta)s"
|
|
200
|
+
|
|
201
|
+
# NOTE: The "type: ignore" comments on the following classes are there to
|
|
202
|
+
# work around https://github.com/python/typing/issues/241
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
class DefaultDownloadProgressBar(BaseDownloadProgressBar,
|
|
206
|
+
_BaseBar): # type: ignore
|
|
207
|
+
pass
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
class DownloadSilentBar(BaseDownloadProgressBar, SilentBar): # type: ignore
|
|
211
|
+
pass
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
class DownloadIncrementalBar(BaseDownloadProgressBar, # type: ignore
|
|
215
|
+
IncrementalBar):
|
|
216
|
+
pass
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
class DownloadChargingBar(BaseDownloadProgressBar, # type: ignore
|
|
220
|
+
ChargingBar):
|
|
221
|
+
pass
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
class DownloadShadyBar(BaseDownloadProgressBar, ShadyBar): # type: ignore
|
|
225
|
+
pass
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
class DownloadFillingSquaresBar(BaseDownloadProgressBar, # type: ignore
|
|
229
|
+
FillingSquaresBar):
|
|
230
|
+
pass
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
class DownloadFillingCirclesBar(BaseDownloadProgressBar, # type: ignore
|
|
234
|
+
FillingCirclesBar):
|
|
235
|
+
pass
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
class DownloadBlueEmojiProgressBar(BaseDownloadProgressBar, # type: ignore
|
|
239
|
+
BlueEmojiBar):
|
|
240
|
+
pass
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
class DownloadProgressSpinner(WindowsMixin, InterruptibleMixin,
|
|
244
|
+
DownloadProgressMixin, WritelnMixin, Spinner):
|
|
245
|
+
|
|
246
|
+
file = sys.stdout
|
|
247
|
+
suffix = "%(downloaded)s %(download_speed)s"
|
|
248
|
+
|
|
249
|
+
def next_phase(self):
|
|
250
|
+
if not hasattr(self, "_phaser"):
|
|
251
|
+
self._phaser = itertools.cycle(self.phases)
|
|
252
|
+
return next(self._phaser)
|
|
253
|
+
|
|
254
|
+
def update(self):
|
|
255
|
+
message = self.message % self
|
|
256
|
+
phase = self.next_phase()
|
|
257
|
+
suffix = self.suffix % self
|
|
258
|
+
line = ''.join([
|
|
259
|
+
message,
|
|
260
|
+
" " if message else "",
|
|
261
|
+
phase,
|
|
262
|
+
" " if suffix else "",
|
|
263
|
+
suffix,
|
|
264
|
+
])
|
|
265
|
+
|
|
266
|
+
self.writeln(line)
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
BAR_TYPES = {
|
|
270
|
+
"off": (DownloadSilentBar, DownloadSilentBar),
|
|
271
|
+
"on": (DefaultDownloadProgressBar, DownloadProgressSpinner),
|
|
272
|
+
"ascii": (DownloadIncrementalBar, DownloadProgressSpinner),
|
|
273
|
+
"pretty": (DownloadFillingCirclesBar, DownloadProgressSpinner),
|
|
274
|
+
"emoji": (DownloadBlueEmojiProgressBar, DownloadProgressSpinner)
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
def DownloadProgressProvider(progress_bar, max=None):
|
|
279
|
+
if max is None or max == 0:
|
|
280
|
+
return BAR_TYPES[progress_bar][1]().iter
|
|
281
|
+
else:
|
|
282
|
+
return BAR_TYPES[progress_bar][0](max=max).iter
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
################################################################
|
|
286
|
+
# Generic "something is happening" spinners
|
|
287
|
+
#
|
|
288
|
+
# We don't even try using progress.spinner.Spinner here because it's actually
|
|
289
|
+
# simpler to reimplement from scratch than to coerce their code into doing
|
|
290
|
+
# what we need.
|
|
291
|
+
################################################################
|
|
292
|
+
|
|
293
|
+
@contextlib.contextmanager
|
|
294
|
+
def hidden_cursor(file):
|
|
295
|
+
# The Windows terminal does not support the hide/show cursor ANSI codes,
|
|
296
|
+
# even via colorama. So don't even try.
|
|
297
|
+
if WINDOWS:
|
|
298
|
+
yield
|
|
299
|
+
# We don't want to clutter the output with control characters if we're
|
|
300
|
+
# writing to a file, or if the user is running with --quiet.
|
|
301
|
+
# See https://github.com/pypa/pip/issues/3418
|
|
302
|
+
elif not file.isatty() or logger.getEffectiveLevel() > logging.INFO:
|
|
303
|
+
yield
|
|
304
|
+
else:
|
|
305
|
+
file.write(HIDE_CURSOR)
|
|
306
|
+
try:
|
|
307
|
+
yield
|
|
308
|
+
finally:
|
|
309
|
+
file.write(SHOW_CURSOR)
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
class RateLimiter(object):
|
|
313
|
+
def __init__(self, min_update_interval_seconds):
|
|
314
|
+
self._min_update_interval_seconds = min_update_interval_seconds
|
|
315
|
+
self._last_update = 0
|
|
316
|
+
|
|
317
|
+
def ready(self):
|
|
318
|
+
now = time.time()
|
|
319
|
+
delta = now - self._last_update
|
|
320
|
+
return delta >= self._min_update_interval_seconds
|
|
321
|
+
|
|
322
|
+
def reset(self):
|
|
323
|
+
self._last_update = time.time()
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
class InteractiveSpinner(object):
|
|
327
|
+
def __init__(self, message, file=None, spin_chars="-\\|/",
|
|
328
|
+
# Empirically, 8 updates/second looks nice
|
|
329
|
+
min_update_interval_seconds=0.125):
|
|
330
|
+
self._message = message
|
|
331
|
+
if file is None:
|
|
332
|
+
file = sys.stdout
|
|
333
|
+
self._file = file
|
|
334
|
+
self._rate_limiter = RateLimiter(min_update_interval_seconds)
|
|
335
|
+
self._finished = False
|
|
336
|
+
|
|
337
|
+
self._spin_cycle = itertools.cycle(spin_chars)
|
|
338
|
+
|
|
339
|
+
self._file.write(" " * get_indentation() + self._message + " ... ")
|
|
340
|
+
self._width = 0
|
|
341
|
+
|
|
342
|
+
def _write(self, status):
|
|
343
|
+
assert not self._finished
|
|
344
|
+
# Erase what we wrote before by backspacing to the beginning, writing
|
|
345
|
+
# spaces to overwrite the old text, and then backspacing again
|
|
346
|
+
backup = "\b" * self._width
|
|
347
|
+
self._file.write(backup + " " * self._width + backup)
|
|
348
|
+
# Now we have a blank slate to add our status
|
|
349
|
+
self._file.write(status)
|
|
350
|
+
self._width = len(status)
|
|
351
|
+
self._file.flush()
|
|
352
|
+
self._rate_limiter.reset()
|
|
353
|
+
|
|
354
|
+
def spin(self):
|
|
355
|
+
if self._finished:
|
|
356
|
+
return
|
|
357
|
+
if not self._rate_limiter.ready():
|
|
358
|
+
return
|
|
359
|
+
self._write(next(self._spin_cycle))
|
|
360
|
+
|
|
361
|
+
def finish(self, final_status):
|
|
362
|
+
if self._finished:
|
|
363
|
+
return
|
|
364
|
+
self._write(final_status)
|
|
365
|
+
self._file.write("\n")
|
|
366
|
+
self._file.flush()
|
|
367
|
+
self._finished = True
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
# Used for dumb terminals, non-interactive installs (no tty), etc.
|
|
371
|
+
# We still print updates occasionally (once every 60 seconds by default) to
|
|
372
|
+
# act as a keep-alive for systems like Travis-CI that take lack-of-output as
|
|
373
|
+
# an indication that a task has frozen.
|
|
374
|
+
class NonInteractiveSpinner(object):
|
|
375
|
+
def __init__(self, message, min_update_interval_seconds=60):
|
|
376
|
+
self._message = message
|
|
377
|
+
self._finished = False
|
|
378
|
+
self._rate_limiter = RateLimiter(min_update_interval_seconds)
|
|
379
|
+
self._update("started")
|
|
380
|
+
|
|
381
|
+
def _update(self, status):
|
|
382
|
+
assert not self._finished
|
|
383
|
+
self._rate_limiter.reset()
|
|
384
|
+
logger.info("%s: %s", self._message, status)
|
|
385
|
+
|
|
386
|
+
def spin(self):
|
|
387
|
+
if self._finished:
|
|
388
|
+
return
|
|
389
|
+
if not self._rate_limiter.ready():
|
|
390
|
+
return
|
|
391
|
+
self._update("still running...")
|
|
392
|
+
|
|
393
|
+
def finish(self, final_status):
|
|
394
|
+
if self._finished:
|
|
395
|
+
return
|
|
396
|
+
self._update("finished with status '%s'" % (final_status,))
|
|
397
|
+
self._finished = True
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
@contextlib.contextmanager
|
|
401
|
+
def open_spinner(message):
|
|
402
|
+
# Interactive spinner goes directly to sys.stdout rather than being routed
|
|
403
|
+
# through the logging system, but it acts like it has level INFO,
|
|
404
|
+
# i.e. it's only displayed if we're at level INFO or better.
|
|
405
|
+
# Non-interactive spinner goes through the logging system, so it is always
|
|
406
|
+
# in sync with logging configuration.
|
|
407
|
+
if sys.stdout.isatty() and logger.getEffectiveLevel() <= logging.INFO:
|
|
408
|
+
spinner = InteractiveSpinner(message)
|
|
409
|
+
else:
|
|
410
|
+
spinner = NonInteractiveSpinner(message)
|
|
411
|
+
try:
|
|
412
|
+
with hidden_cursor(sys.stdout):
|
|
413
|
+
yield spinner
|
|
414
|
+
except KeyboardInterrupt:
|
|
415
|
+
spinner.finish("canceled")
|
|
416
|
+
raise
|
|
417
|
+
except Exception:
|
|
418
|
+
spinner.finish("error")
|
|
419
|
+
raise
|
|
420
|
+
else:
|
|
421
|
+
spinner.finish("done")
|