quarchpy 2.1.14.dev4__py2.py3-none-any.whl → 2.1.14.dev5__py2.py3-none-any.whl
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.
- quarchpy/.idea/.name +1 -0
- quarchpy/.idea/workspace.xml +70 -11
- quarchpy/__pycache__/_version.cpython-311.pyc +0 -0
- quarchpy/__pycache__/run.cpython-311.pyc +0 -0
- quarchpy/_version.py +1 -1
- quarchpy/_version.py.bak +1 -0
- quarchpy/connection_specific/QPS/qis/qis.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/CInterface-1.7.04.jar +0 -0
- quarchpy/connection_specific/QPS/qps.jar +0 -0
- quarchpy/connection_specific/QPS/scriptCommands.txt +2 -2
- quarchpy/connection_specific/__pycache__/connection_QIS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/connection_QIS.py +6 -4
- quarchpy/connection_specific/connection_ReST.py +26 -16
- quarchpy/debug/__pycache__/module_debug.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/simple_terminal.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/scanDevices.cpython-311.pyc +0 -0
- quarchpy/device/scanDevices.py +2 -4
- quarchpy/device/scanDevices.py.bak +657 -0
- quarchpy/qis/qisFuncs.py +25 -42
- quarchpy/qis/qisFuncs.py.bak +213 -0
- quarchpy/qps/__pycache__/qpsFuncs.cpython-311.pyc +0 -0
- quarchpy/qps/qpsFuncs.py +18 -22
- quarchpy/qps/qpsFuncs.py.bak +224 -0
- quarchpy/venv/.gitignore +2 -0
- quarchpy/venv/Include/Python-ast.h +535 -0
- quarchpy/venv/Include/Python.h +181 -0
- quarchpy/venv/Include/abstract.h +1396 -0
- quarchpy/venv/Include/asdl.h +45 -0
- quarchpy/venv/Include/ast.h +13 -0
- quarchpy/venv/Include/bitset.h +32 -0
- quarchpy/venv/Include/boolobject.h +36 -0
- quarchpy/venv/Include/bufferobject.h +33 -0
- quarchpy/venv/Include/bytearrayobject.h +57 -0
- quarchpy/venv/Include/bytes_methods.h +75 -0
- quarchpy/venv/Include/bytesobject.h +27 -0
- quarchpy/venv/Include/cStringIO.h +73 -0
- quarchpy/venv/Include/cellobject.h +28 -0
- quarchpy/venv/Include/ceval.h +154 -0
- quarchpy/venv/Include/classobject.h +83 -0
- quarchpy/venv/Include/cobject.h +89 -0
- quarchpy/venv/Include/code.h +116 -0
- quarchpy/venv/Include/codecs.h +212 -0
- quarchpy/venv/Include/compile.h +40 -0
- quarchpy/venv/Include/complexobject.h +66 -0
- quarchpy/venv/Include/datetime.h +239 -0
- quarchpy/venv/Include/descrobject.h +94 -0
- quarchpy/venv/Include/dictobject.h +160 -0
- quarchpy/venv/Include/dtoa.h +15 -0
- quarchpy/venv/Include/enumobject.h +17 -0
- quarchpy/venv/Include/errcode.h +37 -0
- quarchpy/venv/Include/eval.h +25 -0
- quarchpy/venv/Include/fileobject.h +97 -0
- quarchpy/venv/Include/floatobject.h +140 -0
- quarchpy/venv/Include/frameobject.h +89 -0
- quarchpy/venv/Include/funcobject.h +76 -0
- quarchpy/venv/Include/genobject.h +40 -0
- quarchpy/venv/Include/graminit.h +87 -0
- quarchpy/venv/Include/grammar.h +94 -0
- quarchpy/venv/Include/import.h +71 -0
- quarchpy/venv/Include/intobject.h +84 -0
- quarchpy/venv/Include/intrcheck.h +15 -0
- quarchpy/venv/Include/iterobject.h +23 -0
- quarchpy/venv/Include/listobject.h +68 -0
- quarchpy/venv/Include/longintrepr.h +103 -0
- quarchpy/venv/Include/longobject.h +135 -0
- quarchpy/venv/Include/marshal.h +25 -0
- quarchpy/venv/Include/memoryobject.h +74 -0
- quarchpy/venv/Include/metagrammar.h +18 -0
- quarchpy/venv/Include/methodobject.h +93 -0
- quarchpy/venv/Include/modsupport.h +134 -0
- quarchpy/venv/Include/moduleobject.h +24 -0
- quarchpy/venv/Include/node.h +41 -0
- quarchpy/venv/Include/object.h +1046 -0
- quarchpy/venv/Include/objimpl.h +369 -0
- quarchpy/venv/Include/opcode.h +171 -0
- quarchpy/venv/Include/osdefs.h +63 -0
- quarchpy/venv/Include/parsetok.h +64 -0
- quarchpy/venv/Include/patchlevel.h +43 -0
- quarchpy/venv/Include/pgen.h +18 -0
- quarchpy/venv/Include/pgenheaders.h +43 -0
- quarchpy/venv/Include/py_curses.h +177 -0
- quarchpy/venv/Include/pyarena.h +62 -0
- quarchpy/venv/Include/pycapsule.h +56 -0
- quarchpy/venv/Include/pyconfig.h +770 -0
- quarchpy/venv/Include/pyctype.h +31 -0
- quarchpy/venv/Include/pydebug.h +41 -0
- quarchpy/venv/Include/pyerrors.h +329 -0
- quarchpy/venv/Include/pyexpat.h +50 -0
- quarchpy/venv/Include/pyfpe.h +176 -0
- quarchpy/venv/Include/pygetopt.h +18 -0
- quarchpy/venv/Include/pymacconfig.h +102 -0
- quarchpy/venv/Include/pymactoolbox.h +232 -0
- quarchpy/venv/Include/pymath.h +214 -0
- quarchpy/venv/Include/pymem.h +122 -0
- quarchpy/venv/Include/pyport.h +950 -0
- quarchpy/venv/Include/pystate.h +200 -0
- quarchpy/venv/Include/pystrcmp.h +23 -0
- quarchpy/venv/Include/pystrtod.h +45 -0
- quarchpy/venv/Include/pythonrun.h +181 -0
- quarchpy/venv/Include/pythread.h +41 -0
- quarchpy/venv/Include/rangeobject.h +28 -0
- quarchpy/venv/Include/setobject.h +99 -0
- quarchpy/venv/Include/sliceobject.h +50 -0
- quarchpy/venv/Include/stringobject.h +210 -0
- quarchpy/venv/Include/structmember.h +99 -0
- quarchpy/venv/Include/structseq.h +41 -0
- quarchpy/venv/Include/symtable.h +98 -0
- quarchpy/venv/Include/sysmodule.h +31 -0
- quarchpy/venv/Include/timefuncs.h +26 -0
- quarchpy/venv/Include/token.h +85 -0
- quarchpy/venv/Include/traceback.h +31 -0
- quarchpy/venv/Include/tupleobject.h +61 -0
- quarchpy/venv/Include/ucnhash.h +33 -0
- quarchpy/venv/Include/unicodeobject.h +1413 -0
- quarchpy/venv/Include/warnings.h +23 -0
- quarchpy/venv/Include/weakrefobject.h +82 -0
- quarchpy/venv/Lib/os.py +742 -0
- quarchpy/venv/Lib/os.pyc +0 -0
- quarchpy/venv/Lib/site-packages/_virtualenv.pth +1 -0
- quarchpy/venv/Lib/site-packages/_virtualenv.py +130 -0
- quarchpy/venv/Lib/site-packages/_virtualenv.pyc +0 -0
- quarchpy/venv/Lib/site-packages/easy_install.py +5 -0
- quarchpy/venv/Lib/site-packages/pip/__init__.py +18 -0
- quarchpy/venv/Lib/site-packages/pip/__main__.py +26 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/__init__.py +17 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/build_env.py +242 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cache.py +346 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cli/__init__.py +4 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cli/autocompletion.py +164 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cli/base_command.py +260 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py +971 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cli/command_context.py +36 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cli/main.py +75 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cli/main_parser.py +96 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cli/parser.py +285 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cli/progress_bars.py +280 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cli/req_command.py +436 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cli/spinners.py +173 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/cli/status_codes.py +8 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/__init__.py +123 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/cache.py +234 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/check.py +51 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/completion.py +98 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/configuration.py +280 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/debug.py +230 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/download.py +143 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/freeze.py +116 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/hash.py +63 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/help.py +46 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/install.py +737 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/list.py +327 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/search.py +169 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/show.py +186 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/uninstall.py +95 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/commands/wheel.py +198 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/configuration.py +407 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/distributions/__init__.py +24 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/distributions/base.py +46 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/distributions/installed.py +25 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/distributions/sdist.py +105 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/distributions/wheel.py +37 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/exceptions.py +391 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/index/__init__.py +2 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/index/collector.py +667 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/index/package_finder.py +1015 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/locations.py +193 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/main.py +16 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/models/__init__.py +2 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/models/candidate.py +39 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/models/direct_url.py +243 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/models/format_control.py +92 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/models/index.py +34 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/models/link.py +246 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/models/scheme.py +31 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/models/search_scope.py +135 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/models/selection_prefs.py +50 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/models/target_python.py +117 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/models/wheel.py +78 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/network/__init__.py +2 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/network/auth.py +310 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/network/cache.py +79 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/network/download.py +202 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py +231 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/network/session.py +428 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/network/utils.py +97 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/network/xmlrpc.py +53 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/metadata.py +38 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py +77 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/wheel.py +47 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py +113 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/check.py +155 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/freeze.py +277 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/__init__.py +2 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py +52 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/legacy.py +130 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/wheel.py +846 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/operations/prepare.py +608 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/pyproject.py +196 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/req/__init__.py +103 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/req/constructors.py +476 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/req/req_file.py +574 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/req/req_install.py +907 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/req/req_set.py +204 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/req/req_tracker.py +151 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/req/req_uninstall.py +657 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/base.py +21 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +473 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +156 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +604 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +504 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +101 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +174 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +84 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +201 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +296 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/self_outdated_check.py +197 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/appdirs.py +44 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/compat.py +293 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +178 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/datetime.py +14 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/deprecation.py +104 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +126 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/distutils_args.py +48 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/encoding.py +41 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/entrypoints.py +31 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/filesystem.py +224 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/filetypes.py +26 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/glibc.py +98 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/hashes.py +169 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/inject_securetransport.py +36 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/logging.py +399 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/misc.py +962 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/models.py +44 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/packaging.py +95 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/parallel.py +107 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/pkg_resources.py +44 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py +181 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/subprocess.py +299 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/temp_dir.py +284 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/typing.py +38 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/unpacking.py +281 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/urls.py +55 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/virtualenv.py +119 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/utils/wheel.py +225 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/vcs/__init__.py +15 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/vcs/bazaar.py +123 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/vcs/git.py +454 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/vcs/mercurial.py +172 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/vcs/subversion.py +340 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +735 -0
- quarchpy/venv/Lib/site-packages/pip/_internal/wheel_builder.py +362 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/__init__.py +114 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/appdirs.py +633 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +11 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +57 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +133 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +39 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +2 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +146 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +33 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/compat.py +29 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +376 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +80 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +135 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +188 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +29 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/__init__.py +3 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/__main__.py +12 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem +4606 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/core.py +60 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/__init__.py +39 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/big5freq.py +386 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/big5prober.py +47 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/chardistribution.py +233 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py +106 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/charsetprober.py +145 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py +1 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py +85 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py +88 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/compat.py +34 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/cp949prober.py +49 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/enums.py +76 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/escprober.py +101 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/escsm.py +246 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py +92 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py +195 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euckrprober.py +47 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py +387 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euctwprober.py +46 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py +283 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py +46 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py +292 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/jisfreq.py +325 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/jpcntx.py +233 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +228 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langcyrillicmodel.py +333 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py +225 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py +200 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py +225 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py +199 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py +193 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/latin1prober.py +145 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py +91 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +54 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/mbcssm.py +572 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py +132 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +73 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/sjisprober.py +92 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/universaldetector.py +286 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/utf8prober.py +82 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/version.py +9 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/__init__.py +6 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/ansi.py +102 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py +258 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/initialise.py +80 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/win32.py +152 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/winterm.py +169 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/contextlib2.py +518 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/__init__.py +23 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py +6 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py +41 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py +764 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg +84 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py +786 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py +2607 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/compat.py +1120 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/database.py +1339 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/index.py +516 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/locators.py +1302 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/manifest.py +393 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/markers.py +131 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/metadata.py +1056 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/resources.py +355 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/scripts.py +419 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/t32.exe +0 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/t64.exe +0 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/util.py +1761 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/version.py +736 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/w32.exe +0 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/w64.exe +0 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/wheel.py +1018 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/distro.py +1230 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/__init__.py +35 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py +289 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py +918 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py +1735 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py +5 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py +40 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py +67 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_utils.py +159 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/constants.py +2946 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py +29 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/base.py +12 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py +73 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py +93 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py +207 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py +916 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py +38 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/html5parser.py +2795 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/serializer.py +409 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py +30 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py +54 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/sax.py +50 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py +88 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/base.py +417 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/dom.py +239 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree.py +343 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py +392 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py +154 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/base.py +252 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/dom.py +43 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree.py +131 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py +215 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py +69 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/idna/__init__.py +2 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/idna/codec.py +118 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/idna/compat.py +12 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/idna/core.py +400 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/idna/idnadata.py +2050 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/idna/intranges.py +53 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/idna/package_data.py +2 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/idna/uts46data.py +8357 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/ipaddress.py +2420 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py +54 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/_version.py +1 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/ext.py +191 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py +1063 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/__about__.py +27 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/__init__.py +26 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/_compat.py +38 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/_structures.py +86 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/_typing.py +48 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/markers.py +328 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/requirements.py +151 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py +864 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/tags.py +852 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/utils.py +67 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/version.py +556 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/__init__.py +6 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/_in_process.py +280 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/build.py +124 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/check.py +203 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/colorlog.py +115 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/compat.py +34 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/dirtools.py +44 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/envbuild.py +167 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/meta.py +92 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/wrappers.py +327 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +3296 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pkg_resources/py31compat.py +23 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/progress/__init__.py +177 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/progress/bar.py +91 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/progress/counter.py +41 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/progress/spinner.py +43 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/pyparsing.py +7107 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/__init__.py +144 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/__version__.py +14 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +42 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/adapters.py +533 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/api.py +161 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/auth.py +305 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/certs.py +18 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/compat.py +76 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/cookies.py +549 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/exceptions.py +123 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/help.py +119 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/hooks.py +34 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/models.py +956 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/packages.py +16 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/sessions.py +781 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/status_codes.py +123 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/structures.py +105 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/requests/utils.py +988 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +26 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py +6 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/providers.py +119 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +37 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py +454 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/structs.py +149 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/retrying.py +267 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/six.py +982 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/toml/__init__.py +25 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/toml/decoder.py +1057 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/toml/encoder.py +304 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/toml/ordered.py +15 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/toml/tz.py +24 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/__init__.py +85 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/_collections.py +337 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/_version.py +2 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/connection.py +535 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +1067 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +396 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +121 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +509 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +920 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +313 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/fields.py +274 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py +5 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +1021 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py +22 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py +160 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +536 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/request.py +170 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/response.py +821 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +150 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +56 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/request.py +143 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +601 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +474 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +268 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/url.py +430 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +153 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/vendor.txt +24 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/__init__.py +342 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/labels.py +231 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/mklabels.py +59 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/tests.py +153 -0
- quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py +325 -0
- quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/INSTALLER +1 -0
- quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/LICENSE.txt +20 -0
- quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/METADATA +94 -0
- quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/RECORD +812 -0
- quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/WHEEL +6 -0
- quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/entry_points.txt +5 -0
- quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/top_level.txt +1 -0
- quarchpy/venv/Lib/site-packages/pip-20.3.4.virtualenv +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/__init__.py +3296 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/__init__.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/__init__.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/appdirs.py +608 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/appdirs.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.py +21 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py +14 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_compat.py +30 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_compat.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py +68 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.py +301 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py +127 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py +774 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/utils.py +14 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/version.py +393 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/version.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.py +5742 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/six.py +868 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/six.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/extern/__init__.py +73 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/extern/__init__.pyc +0 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/py31compat.py +23 -0
- quarchpy/venv/Lib/site-packages/pkg_resources/py31compat.pyc +0 -0
- quarchpy/venv/Lib/site-packages/setuptools/__init__.py +245 -0
- quarchpy/venv/Lib/site-packages/setuptools/_deprecation_warning.py +7 -0
- quarchpy/venv/Lib/site-packages/setuptools/_imp.py +73 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/ordered_set.py +488 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/__about__.py +27 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +26 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/_compat.py +31 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/_structures.py +68 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/markers.py +296 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/requirements.py +138 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +749 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/tags.py +404 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/utils.py +57 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/version.py +420 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/pyparsing.py +5742 -0
- quarchpy/venv/Lib/site-packages/setuptools/_vendor/six.py +868 -0
- quarchpy/venv/Lib/site-packages/setuptools/archive_util.py +173 -0
- quarchpy/venv/Lib/site-packages/setuptools/build_meta.py +264 -0
- quarchpy/venv/Lib/site-packages/setuptools/cli-32.exe +0 -0
- quarchpy/venv/Lib/site-packages/setuptools/cli-64.exe +0 -0
- quarchpy/venv/Lib/site-packages/setuptools/cli.exe +0 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/__init__.py +17 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/alias.py +80 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/bdist_egg.py +502 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/bdist_rpm.py +43 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/bdist_wininst.py +21 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/build_clib.py +98 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/build_ext.py +327 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/build_py.py +270 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/develop.py +221 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/dist_info.py +36 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/easy_install.py +2347 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/egg_info.py +717 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/install.py +125 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/install_egg_info.py +62 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/install_lib.py +121 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/install_scripts.py +65 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/launcher manifest.xml +15 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/py36compat.py +136 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/register.py +18 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/rotate.py +66 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/saveopts.py +22 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/sdist.py +252 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/setopt.py +149 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/test.py +279 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/upload.py +17 -0
- quarchpy/venv/Lib/site-packages/setuptools/command/upload_docs.py +206 -0
- quarchpy/venv/Lib/site-packages/setuptools/config.py +659 -0
- quarchpy/venv/Lib/site-packages/setuptools/dep_util.py +23 -0
- quarchpy/venv/Lib/site-packages/setuptools/depends.py +176 -0
- quarchpy/venv/Lib/site-packages/setuptools/dist.py +1274 -0
- quarchpy/venv/Lib/site-packages/setuptools/errors.py +16 -0
- quarchpy/venv/Lib/site-packages/setuptools/extension.py +57 -0
- quarchpy/venv/Lib/site-packages/setuptools/extern/__init__.py +73 -0
- quarchpy/venv/Lib/site-packages/setuptools/glob.py +174 -0
- quarchpy/venv/Lib/site-packages/setuptools/gui-32.exe +0 -0
- quarchpy/venv/Lib/site-packages/setuptools/gui-64.exe +0 -0
- quarchpy/venv/Lib/site-packages/setuptools/gui.exe +0 -0
- quarchpy/venv/Lib/site-packages/setuptools/installer.py +150 -0
- quarchpy/venv/Lib/site-packages/setuptools/launch.py +35 -0
- quarchpy/venv/Lib/site-packages/setuptools/lib2to3_ex.py +62 -0
- quarchpy/venv/Lib/site-packages/setuptools/monkey.py +179 -0
- quarchpy/venv/Lib/site-packages/setuptools/msvc.py +1679 -0
- quarchpy/venv/Lib/site-packages/setuptools/namespaces.py +107 -0
- quarchpy/venv/Lib/site-packages/setuptools/package_index.py +1136 -0
- quarchpy/venv/Lib/site-packages/setuptools/py27compat.py +60 -0
- quarchpy/venv/Lib/site-packages/setuptools/py31compat.py +32 -0
- quarchpy/venv/Lib/site-packages/setuptools/py33compat.py +59 -0
- quarchpy/venv/Lib/site-packages/setuptools/py34compat.py +13 -0
- quarchpy/venv/Lib/site-packages/setuptools/sandbox.py +491 -0
- quarchpy/venv/Lib/site-packages/setuptools/script (dev).tmpl +6 -0
- quarchpy/venv/Lib/site-packages/setuptools/script.tmpl +3 -0
- quarchpy/venv/Lib/site-packages/setuptools/site-patch.py +74 -0
- quarchpy/venv/Lib/site-packages/setuptools/ssl_support.py +260 -0
- quarchpy/venv/Lib/site-packages/setuptools/unicode_utils.py +44 -0
- quarchpy/venv/Lib/site-packages/setuptools/version.py +6 -0
- quarchpy/venv/Lib/site-packages/setuptools/wheel.py +220 -0
- quarchpy/venv/Lib/site-packages/setuptools/windows_support.py +29 -0
- quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/INSTALLER +1 -0
- quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/LICENSE +19 -0
- quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/METADATA +86 -0
- quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/RECORD +207 -0
- quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/WHEEL +6 -0
- quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/dependency_links.txt +2 -0
- quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/entry_points.txt +69 -0
- quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/top_level.txt +3 -0
- quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/zip-safe +1 -0
- quarchpy/venv/Lib/site-packages/setuptools-44.1.1.virtualenv +0 -0
- quarchpy/venv/Lib/site-packages/wheel/__init__.py +1 -0
- quarchpy/venv/Lib/site-packages/wheel/__main__.py +19 -0
- quarchpy/venv/Lib/site-packages/wheel/bdist_wheel.py +492 -0
- quarchpy/venv/Lib/site-packages/wheel/cli/__init__.py +88 -0
- quarchpy/venv/Lib/site-packages/wheel/cli/convert.py +269 -0
- quarchpy/venv/Lib/site-packages/wheel/cli/pack.py +82 -0
- quarchpy/venv/Lib/site-packages/wheel/cli/unpack.py +25 -0
- quarchpy/venv/Lib/site-packages/wheel/macosx_libfile.py +428 -0
- quarchpy/venv/Lib/site-packages/wheel/metadata.py +133 -0
- quarchpy/venv/Lib/site-packages/wheel/pkginfo.py +43 -0
- quarchpy/venv/Lib/site-packages/wheel/util.py +46 -0
- quarchpy/venv/Lib/site-packages/wheel/vendored/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/wheel/vendored/packaging/__init__.py +0 -0
- quarchpy/venv/Lib/site-packages/wheel/vendored/packaging/_typing.py +48 -0
- quarchpy/venv/Lib/site-packages/wheel/vendored/packaging/tags.py +866 -0
- quarchpy/venv/Lib/site-packages/wheel/wheelfile.py +181 -0
- quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/INSTALLER +1 -0
- quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/LICENSE.txt +22 -0
- quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/METADATA +69 -0
- quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/RECORD +49 -0
- quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/WHEEL +6 -0
- quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/entry_points.txt +6 -0
- quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/top_level.txt +1 -0
- quarchpy/venv/Lib/site-packages/wheel-0.37.1.virtualenv +0 -0
- quarchpy/venv/Lib/site.py +190 -0
- quarchpy/venv/Lib/site.pyc +0 -0
- quarchpy/venv/Scripts/activate +83 -0
- quarchpy/venv/Scripts/activate.bat +39 -0
- quarchpy/venv/Scripts/activate.fish +100 -0
- quarchpy/venv/Scripts/activate.nu +41 -0
- quarchpy/venv/Scripts/activate.ps1 +60 -0
- quarchpy/venv/Scripts/activate_this.py +32 -0
- quarchpy/venv/Scripts/deactivate.bat +19 -0
- quarchpy/venv/Scripts/deactivate.nu +11 -0
- quarchpy/venv/Scripts/easy_install-2.7.exe +0 -0
- quarchpy/venv/Scripts/easy_install.exe +0 -0
- quarchpy/venv/Scripts/easy_install2.7.exe +0 -0
- quarchpy/venv/Scripts/easy_install2.exe +0 -0
- quarchpy/venv/Scripts/pip-2.7.exe +0 -0
- quarchpy/venv/Scripts/pip.exe +0 -0
- quarchpy/venv/Scripts/pip2.7.exe +0 -0
- quarchpy/venv/Scripts/pip2.exe +0 -0
- quarchpy/venv/Scripts/pydoc.bat +1 -0
- quarchpy/venv/Scripts/python.exe +0 -0
- quarchpy/venv/Scripts/python27.dll +0 -0
- quarchpy/venv/Scripts/pythonw.exe +0 -0
- quarchpy/venv/Scripts/wheel-2.7.exe +0 -0
- quarchpy/venv/Scripts/wheel.exe +0 -0
- quarchpy/venv/Scripts/wheel2.7.exe +0 -0
- quarchpy/venv/Scripts/wheel2.exe +0 -0
- quarchpy/venv/libs/_bsddb.lib +0 -0
- quarchpy/venv/libs/_ctypes.lib +0 -0
- quarchpy/venv/libs/_ctypes_test.lib +0 -0
- quarchpy/venv/libs/_elementtree.lib +0 -0
- quarchpy/venv/libs/_hashlib.lib +0 -0
- quarchpy/venv/libs/_msi.lib +0 -0
- quarchpy/venv/libs/_multiprocessing.lib +0 -0
- quarchpy/venv/libs/_socket.lib +0 -0
- quarchpy/venv/libs/_sqlite3.lib +0 -0
- quarchpy/venv/libs/_ssl.lib +0 -0
- quarchpy/venv/libs/_testcapi.lib +0 -0
- quarchpy/venv/libs/_tkinter.lib +0 -0
- quarchpy/venv/libs/bz2.lib +0 -0
- quarchpy/venv/libs/libpython27.a +0 -0
- quarchpy/venv/libs/pyexpat.lib +0 -0
- quarchpy/venv/libs/python27.lib +0 -0
- quarchpy/venv/libs/select.lib +0 -0
- quarchpy/venv/libs/unicodedata.lib +0 -0
- quarchpy/venv/libs/winsound.lib +0 -0
- quarchpy/venv/pyvenv.cfg +8 -0
- {quarchpy-2.1.14.dev4.dist-info → quarchpy-2.1.14.dev5.dist-info}/METADATA +1 -1
- quarchpy-2.1.14.dev5.dist-info/RECORD +1219 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/CInterface-1.7.02.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/CInterface-1.7.8.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/Collections-1.2.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/Desktop-1.0.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/Executor-3.11.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/JNA-1.0.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/OS-1.6.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/QuarchCommon-0.2.9.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/SystemTray-4.2.1.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/Updates-1.1.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/Utilities-1.39.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/commons-csv-1.8.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/javassist-3.29.2-GA.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/jna-jpms-5.12.1.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/jna-platform-jpms-5.12.1.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/kotlin-stdlib-1.7.22.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/slf4j-api-2.0.9.jar +0 -0
- quarchpy/connection_specific/QPS/qis/qis_lib/slf4j-simple-2.0.9.jar +0 -0
- quarchpy/connection_specific/QPS/qis/resources/filters/filters.csv +0 -1004
- quarchpy/connection_specific/QPS/qps_lib/QuarchCommon-0.2.9.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/commons-lang3-3.12.0.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/opencsv-5.9.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/qis-1.39.4.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/qis-1.39.5.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/qis-1.39.6.jar +0 -0
- quarchpy/connection_specific/QPS/qps_lib/qis-1.39.7.jar +0 -0
- quarchpy-2.1.14.dev4.dist-info/RECORD +0 -561
- {quarchpy-2.1.14.dev4.dist-info → quarchpy-2.1.14.dev5.dist-info}/WHEEL +0 -0
- {quarchpy-2.1.14.dev4.dist-info → quarchpy-2.1.14.dev5.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,281 @@
|
|
1
|
+
"""Utilities related archives.
|
2
|
+
"""
|
3
|
+
|
4
|
+
from __future__ import absolute_import
|
5
|
+
|
6
|
+
import logging
|
7
|
+
import os
|
8
|
+
import shutil
|
9
|
+
import stat
|
10
|
+
import tarfile
|
11
|
+
import zipfile
|
12
|
+
|
13
|
+
from pip._internal.exceptions import InstallationError
|
14
|
+
from pip._internal.utils.filetypes import (
|
15
|
+
BZ2_EXTENSIONS,
|
16
|
+
TAR_EXTENSIONS,
|
17
|
+
XZ_EXTENSIONS,
|
18
|
+
ZIP_EXTENSIONS,
|
19
|
+
)
|
20
|
+
from pip._internal.utils.misc import ensure_dir
|
21
|
+
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
22
|
+
|
23
|
+
if MYPY_CHECK_RUNNING:
|
24
|
+
from typing import Iterable, List, Optional, Text, Union
|
25
|
+
from zipfile import ZipInfo
|
26
|
+
|
27
|
+
|
28
|
+
logger = logging.getLogger(__name__)
|
29
|
+
|
30
|
+
|
31
|
+
SUPPORTED_EXTENSIONS = ZIP_EXTENSIONS + TAR_EXTENSIONS
|
32
|
+
|
33
|
+
try:
|
34
|
+
import bz2 # noqa
|
35
|
+
SUPPORTED_EXTENSIONS += BZ2_EXTENSIONS
|
36
|
+
except ImportError:
|
37
|
+
logger.debug('bz2 module is not available')
|
38
|
+
|
39
|
+
try:
|
40
|
+
# Only for Python 3.3+
|
41
|
+
import lzma # noqa
|
42
|
+
SUPPORTED_EXTENSIONS += XZ_EXTENSIONS
|
43
|
+
except ImportError:
|
44
|
+
logger.debug('lzma module is not available')
|
45
|
+
|
46
|
+
|
47
|
+
def current_umask():
|
48
|
+
# type: () -> int
|
49
|
+
"""Get the current umask which involves having to set it temporarily."""
|
50
|
+
mask = os.umask(0)
|
51
|
+
os.umask(mask)
|
52
|
+
return mask
|
53
|
+
|
54
|
+
|
55
|
+
def split_leading_dir(path):
|
56
|
+
# type: (Union[str, Text]) -> List[Union[str, Text]]
|
57
|
+
path = path.lstrip('/').lstrip('\\')
|
58
|
+
if (
|
59
|
+
'/' in path and (
|
60
|
+
('\\' in path and path.find('/') < path.find('\\')) or
|
61
|
+
'\\' not in path
|
62
|
+
)
|
63
|
+
):
|
64
|
+
return path.split('/', 1)
|
65
|
+
elif '\\' in path:
|
66
|
+
return path.split('\\', 1)
|
67
|
+
else:
|
68
|
+
return [path, '']
|
69
|
+
|
70
|
+
|
71
|
+
def has_leading_dir(paths):
|
72
|
+
# type: (Iterable[Union[str, Text]]) -> bool
|
73
|
+
"""Returns true if all the paths have the same leading path name
|
74
|
+
(i.e., everything is in one subdirectory in an archive)"""
|
75
|
+
common_prefix = None
|
76
|
+
for path in paths:
|
77
|
+
prefix, rest = split_leading_dir(path)
|
78
|
+
if not prefix:
|
79
|
+
return False
|
80
|
+
elif common_prefix is None:
|
81
|
+
common_prefix = prefix
|
82
|
+
elif prefix != common_prefix:
|
83
|
+
return False
|
84
|
+
return True
|
85
|
+
|
86
|
+
|
87
|
+
def is_within_directory(directory, target):
|
88
|
+
# type: ((Union[str, Text]), (Union[str, Text])) -> bool
|
89
|
+
"""
|
90
|
+
Return true if the absolute path of target is within the directory
|
91
|
+
"""
|
92
|
+
abs_directory = os.path.abspath(directory)
|
93
|
+
abs_target = os.path.abspath(target)
|
94
|
+
|
95
|
+
prefix = os.path.commonprefix([abs_directory, abs_target])
|
96
|
+
return prefix == abs_directory
|
97
|
+
|
98
|
+
|
99
|
+
def set_extracted_file_to_default_mode_plus_executable(path):
|
100
|
+
# type: (Union[str, Text]) -> None
|
101
|
+
"""
|
102
|
+
Make file present at path have execute for user/group/world
|
103
|
+
(chmod +x) is no-op on windows per python docs
|
104
|
+
"""
|
105
|
+
os.chmod(path, (0o777 & ~current_umask() | 0o111))
|
106
|
+
|
107
|
+
|
108
|
+
def zip_item_is_executable(info):
|
109
|
+
# type: (ZipInfo) -> bool
|
110
|
+
mode = info.external_attr >> 16
|
111
|
+
# if mode and regular file and any execute permissions for
|
112
|
+
# user/group/world?
|
113
|
+
return bool(mode and stat.S_ISREG(mode) and mode & 0o111)
|
114
|
+
|
115
|
+
|
116
|
+
def unzip_file(filename, location, flatten=True):
|
117
|
+
# type: (str, str, bool) -> None
|
118
|
+
"""
|
119
|
+
Unzip the file (with path `filename`) to the destination `location`. All
|
120
|
+
files are written based on system defaults and umask (i.e. permissions are
|
121
|
+
not preserved), except that regular file members with any execute
|
122
|
+
permissions (user, group, or world) have "chmod +x" applied after being
|
123
|
+
written. Note that for windows, any execute changes using os.chmod are
|
124
|
+
no-ops per the python docs.
|
125
|
+
"""
|
126
|
+
ensure_dir(location)
|
127
|
+
zipfp = open(filename, 'rb')
|
128
|
+
try:
|
129
|
+
zip = zipfile.ZipFile(zipfp, allowZip64=True)
|
130
|
+
leading = has_leading_dir(zip.namelist()) and flatten
|
131
|
+
for info in zip.infolist():
|
132
|
+
name = info.filename
|
133
|
+
fn = name
|
134
|
+
if leading:
|
135
|
+
fn = split_leading_dir(name)[1]
|
136
|
+
fn = os.path.join(location, fn)
|
137
|
+
dir = os.path.dirname(fn)
|
138
|
+
if not is_within_directory(location, fn):
|
139
|
+
message = (
|
140
|
+
'The zip file ({}) has a file ({}) trying to install '
|
141
|
+
'outside target directory ({})'
|
142
|
+
)
|
143
|
+
raise InstallationError(message.format(filename, fn, location))
|
144
|
+
if fn.endswith('/') or fn.endswith('\\'):
|
145
|
+
# A directory
|
146
|
+
ensure_dir(fn)
|
147
|
+
else:
|
148
|
+
ensure_dir(dir)
|
149
|
+
# Don't use read() to avoid allocating an arbitrarily large
|
150
|
+
# chunk of memory for the file's content
|
151
|
+
fp = zip.open(name)
|
152
|
+
try:
|
153
|
+
with open(fn, 'wb') as destfp:
|
154
|
+
shutil.copyfileobj(fp, destfp)
|
155
|
+
finally:
|
156
|
+
fp.close()
|
157
|
+
if zip_item_is_executable(info):
|
158
|
+
set_extracted_file_to_default_mode_plus_executable(fn)
|
159
|
+
finally:
|
160
|
+
zipfp.close()
|
161
|
+
|
162
|
+
|
163
|
+
def untar_file(filename, location):
|
164
|
+
# type: (str, str) -> None
|
165
|
+
"""
|
166
|
+
Untar the file (with path `filename`) to the destination `location`.
|
167
|
+
All files are written based on system defaults and umask (i.e. permissions
|
168
|
+
are not preserved), except that regular file members with any execute
|
169
|
+
permissions (user, group, or world) have "chmod +x" applied after being
|
170
|
+
written. Note that for windows, any execute changes using os.chmod are
|
171
|
+
no-ops per the python docs.
|
172
|
+
"""
|
173
|
+
ensure_dir(location)
|
174
|
+
if filename.lower().endswith('.gz') or filename.lower().endswith('.tgz'):
|
175
|
+
mode = 'r:gz'
|
176
|
+
elif filename.lower().endswith(BZ2_EXTENSIONS):
|
177
|
+
mode = 'r:bz2'
|
178
|
+
elif filename.lower().endswith(XZ_EXTENSIONS):
|
179
|
+
mode = 'r:xz'
|
180
|
+
elif filename.lower().endswith('.tar'):
|
181
|
+
mode = 'r'
|
182
|
+
else:
|
183
|
+
logger.warning(
|
184
|
+
'Cannot determine compression type for file %s', filename,
|
185
|
+
)
|
186
|
+
mode = 'r:*'
|
187
|
+
tar = tarfile.open(filename, mode)
|
188
|
+
try:
|
189
|
+
leading = has_leading_dir([
|
190
|
+
member.name for member in tar.getmembers()
|
191
|
+
])
|
192
|
+
for member in tar.getmembers():
|
193
|
+
fn = member.name
|
194
|
+
if leading:
|
195
|
+
# https://github.com/python/mypy/issues/1174
|
196
|
+
fn = split_leading_dir(fn)[1] # type: ignore
|
197
|
+
path = os.path.join(location, fn)
|
198
|
+
if not is_within_directory(location, path):
|
199
|
+
message = (
|
200
|
+
'The tar file ({}) has a file ({}) trying to install '
|
201
|
+
'outside target directory ({})'
|
202
|
+
)
|
203
|
+
raise InstallationError(
|
204
|
+
message.format(filename, path, location)
|
205
|
+
)
|
206
|
+
if member.isdir():
|
207
|
+
ensure_dir(path)
|
208
|
+
elif member.issym():
|
209
|
+
try:
|
210
|
+
# https://github.com/python/typeshed/issues/2673
|
211
|
+
tar._extract_member(member, path) # type: ignore
|
212
|
+
except Exception as exc:
|
213
|
+
# Some corrupt tar files seem to produce this
|
214
|
+
# (specifically bad symlinks)
|
215
|
+
logger.warning(
|
216
|
+
'In the tar file %s the member %s is invalid: %s',
|
217
|
+
filename, member.name, exc,
|
218
|
+
)
|
219
|
+
continue
|
220
|
+
else:
|
221
|
+
try:
|
222
|
+
fp = tar.extractfile(member)
|
223
|
+
except (KeyError, AttributeError) as exc:
|
224
|
+
# Some corrupt tar files seem to produce this
|
225
|
+
# (specifically bad symlinks)
|
226
|
+
logger.warning(
|
227
|
+
'In the tar file %s the member %s is invalid: %s',
|
228
|
+
filename, member.name, exc,
|
229
|
+
)
|
230
|
+
continue
|
231
|
+
ensure_dir(os.path.dirname(path))
|
232
|
+
assert fp is not None
|
233
|
+
with open(path, 'wb') as destfp:
|
234
|
+
shutil.copyfileobj(fp, destfp)
|
235
|
+
fp.close()
|
236
|
+
# Update the timestamp (useful for cython compiled files)
|
237
|
+
# https://github.com/python/typeshed/issues/2673
|
238
|
+
tar.utime(member, path) # type: ignore
|
239
|
+
# member have any execute permissions for user/group/world?
|
240
|
+
if member.mode & 0o111:
|
241
|
+
set_extracted_file_to_default_mode_plus_executable(path)
|
242
|
+
finally:
|
243
|
+
tar.close()
|
244
|
+
|
245
|
+
|
246
|
+
def unpack_file(
|
247
|
+
filename, # type: str
|
248
|
+
location, # type: str
|
249
|
+
content_type=None, # type: Optional[str]
|
250
|
+
):
|
251
|
+
# type: (...) -> None
|
252
|
+
filename = os.path.realpath(filename)
|
253
|
+
if (
|
254
|
+
content_type == 'application/zip' or
|
255
|
+
filename.lower().endswith(ZIP_EXTENSIONS) or
|
256
|
+
zipfile.is_zipfile(filename)
|
257
|
+
):
|
258
|
+
unzip_file(
|
259
|
+
filename,
|
260
|
+
location,
|
261
|
+
flatten=not filename.endswith('.whl')
|
262
|
+
)
|
263
|
+
elif (
|
264
|
+
content_type == 'application/x-gzip' or
|
265
|
+
tarfile.is_tarfile(filename) or
|
266
|
+
filename.lower().endswith(
|
267
|
+
TAR_EXTENSIONS + BZ2_EXTENSIONS + XZ_EXTENSIONS
|
268
|
+
)
|
269
|
+
):
|
270
|
+
untar_file(filename, location)
|
271
|
+
else:
|
272
|
+
# FIXME: handle?
|
273
|
+
# FIXME: magic signatures?
|
274
|
+
logger.critical(
|
275
|
+
'Cannot unpack file %s (downloaded from %s, content-type: %s); '
|
276
|
+
'cannot detect archive format',
|
277
|
+
filename, location, content_type,
|
278
|
+
)
|
279
|
+
raise InstallationError(
|
280
|
+
'Cannot determine archive format of {}'.format(location)
|
281
|
+
)
|
@@ -0,0 +1,55 @@
|
|
1
|
+
import os
|
2
|
+
import sys
|
3
|
+
|
4
|
+
from pip._vendor.six.moves.urllib import parse as urllib_parse
|
5
|
+
from pip._vendor.six.moves.urllib import request as urllib_request
|
6
|
+
|
7
|
+
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
8
|
+
|
9
|
+
if MYPY_CHECK_RUNNING:
|
10
|
+
from typing import Optional, Text, Union
|
11
|
+
|
12
|
+
|
13
|
+
def get_url_scheme(url):
|
14
|
+
# type: (Union[str, Text]) -> Optional[Text]
|
15
|
+
if ':' not in url:
|
16
|
+
return None
|
17
|
+
return url.split(':', 1)[0].lower()
|
18
|
+
|
19
|
+
|
20
|
+
def path_to_url(path):
|
21
|
+
# type: (Union[str, Text]) -> str
|
22
|
+
"""
|
23
|
+
Convert a path to a file: URL. The path will be made absolute and have
|
24
|
+
quoted path parts.
|
25
|
+
"""
|
26
|
+
path = os.path.normpath(os.path.abspath(path))
|
27
|
+
url = urllib_parse.urljoin('file:', urllib_request.pathname2url(path))
|
28
|
+
return url
|
29
|
+
|
30
|
+
|
31
|
+
def url_to_path(url):
|
32
|
+
# type: (str) -> str
|
33
|
+
"""
|
34
|
+
Convert a file: URL to a path.
|
35
|
+
"""
|
36
|
+
assert url.startswith('file:'), (
|
37
|
+
"You can only turn file: urls into filenames (not {url!r})"
|
38
|
+
.format(**locals()))
|
39
|
+
|
40
|
+
_, netloc, path, _, _ = urllib_parse.urlsplit(url)
|
41
|
+
|
42
|
+
if not netloc or netloc == 'localhost':
|
43
|
+
# According to RFC 8089, same as empty authority.
|
44
|
+
netloc = ''
|
45
|
+
elif sys.platform == 'win32':
|
46
|
+
# If we have a UNC path, prepend UNC share notation.
|
47
|
+
netloc = '\\\\' + netloc
|
48
|
+
else:
|
49
|
+
raise ValueError(
|
50
|
+
'non-local file URIs are not supported on this platform: {url!r}'
|
51
|
+
.format(**locals())
|
52
|
+
)
|
53
|
+
|
54
|
+
path = urllib_request.url2pathname(netloc + path)
|
55
|
+
return path
|
@@ -0,0 +1,119 @@
|
|
1
|
+
from __future__ import absolute_import
|
2
|
+
|
3
|
+
import io
|
4
|
+
import logging
|
5
|
+
import os
|
6
|
+
import re
|
7
|
+
import site
|
8
|
+
import sys
|
9
|
+
|
10
|
+
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
11
|
+
|
12
|
+
if MYPY_CHECK_RUNNING:
|
13
|
+
from typing import List, Optional
|
14
|
+
|
15
|
+
logger = logging.getLogger(__name__)
|
16
|
+
_INCLUDE_SYSTEM_SITE_PACKAGES_REGEX = re.compile(
|
17
|
+
r"include-system-site-packages\s*=\s*(?P<value>true|false)"
|
18
|
+
)
|
19
|
+
|
20
|
+
|
21
|
+
def _running_under_venv():
|
22
|
+
# type: () -> bool
|
23
|
+
"""Checks if sys.base_prefix and sys.prefix match.
|
24
|
+
|
25
|
+
This handles PEP 405 compliant virtual environments.
|
26
|
+
"""
|
27
|
+
return sys.prefix != getattr(sys, "base_prefix", sys.prefix)
|
28
|
+
|
29
|
+
|
30
|
+
def _running_under_regular_virtualenv():
|
31
|
+
# type: () -> bool
|
32
|
+
"""Checks if sys.real_prefix is set.
|
33
|
+
|
34
|
+
This handles virtual environments created with pypa's virtualenv.
|
35
|
+
"""
|
36
|
+
# pypa/virtualenv case
|
37
|
+
return hasattr(sys, 'real_prefix')
|
38
|
+
|
39
|
+
|
40
|
+
def running_under_virtualenv():
|
41
|
+
# type: () -> bool
|
42
|
+
"""Return True if we're running inside a virtualenv, False otherwise.
|
43
|
+
"""
|
44
|
+
return _running_under_venv() or _running_under_regular_virtualenv()
|
45
|
+
|
46
|
+
|
47
|
+
def _get_pyvenv_cfg_lines():
|
48
|
+
# type: () -> Optional[List[str]]
|
49
|
+
"""Reads {sys.prefix}/pyvenv.cfg and returns its contents as list of lines
|
50
|
+
|
51
|
+
Returns None, if it could not read/access the file.
|
52
|
+
"""
|
53
|
+
pyvenv_cfg_file = os.path.join(sys.prefix, 'pyvenv.cfg')
|
54
|
+
try:
|
55
|
+
# Although PEP 405 does not specify, the built-in venv module always
|
56
|
+
# writes with UTF-8. (pypa/pip#8717)
|
57
|
+
with io.open(pyvenv_cfg_file, encoding='utf-8') as f:
|
58
|
+
return f.read().splitlines() # avoids trailing newlines
|
59
|
+
except IOError:
|
60
|
+
return None
|
61
|
+
|
62
|
+
|
63
|
+
def _no_global_under_venv():
|
64
|
+
# type: () -> bool
|
65
|
+
"""Check `{sys.prefix}/pyvenv.cfg` for system site-packages inclusion
|
66
|
+
|
67
|
+
PEP 405 specifies that when system site-packages are not supposed to be
|
68
|
+
visible from a virtual environment, `pyvenv.cfg` must contain the following
|
69
|
+
line:
|
70
|
+
|
71
|
+
include-system-site-packages = false
|
72
|
+
|
73
|
+
Additionally, log a warning if accessing the file fails.
|
74
|
+
"""
|
75
|
+
cfg_lines = _get_pyvenv_cfg_lines()
|
76
|
+
if cfg_lines is None:
|
77
|
+
# We're not in a "sane" venv, so assume there is no system
|
78
|
+
# site-packages access (since that's PEP 405's default state).
|
79
|
+
logger.warning(
|
80
|
+
"Could not access 'pyvenv.cfg' despite a virtual environment "
|
81
|
+
"being active. Assuming global site-packages is not accessible "
|
82
|
+
"in this environment."
|
83
|
+
)
|
84
|
+
return True
|
85
|
+
|
86
|
+
for line in cfg_lines:
|
87
|
+
match = _INCLUDE_SYSTEM_SITE_PACKAGES_REGEX.match(line)
|
88
|
+
if match is not None and match.group('value') == 'false':
|
89
|
+
return True
|
90
|
+
return False
|
91
|
+
|
92
|
+
|
93
|
+
def _no_global_under_regular_virtualenv():
|
94
|
+
# type: () -> bool
|
95
|
+
"""Check if "no-global-site-packages.txt" exists beside site.py
|
96
|
+
|
97
|
+
This mirrors logic in pypa/virtualenv for determining whether system
|
98
|
+
site-packages are visible in the virtual environment.
|
99
|
+
"""
|
100
|
+
site_mod_dir = os.path.dirname(os.path.abspath(site.__file__))
|
101
|
+
no_global_site_packages_file = os.path.join(
|
102
|
+
site_mod_dir, 'no-global-site-packages.txt',
|
103
|
+
)
|
104
|
+
return os.path.exists(no_global_site_packages_file)
|
105
|
+
|
106
|
+
|
107
|
+
def virtualenv_no_global():
|
108
|
+
# type: () -> bool
|
109
|
+
"""Returns a boolean, whether running in venv with no system site-packages.
|
110
|
+
"""
|
111
|
+
# PEP 405 compliance needs to be checked first since virtualenv >=20 would
|
112
|
+
# return True for both checks, but is only able to use the PEP 405 config.
|
113
|
+
if _running_under_venv():
|
114
|
+
return _no_global_under_venv()
|
115
|
+
|
116
|
+
if _running_under_regular_virtualenv():
|
117
|
+
return _no_global_under_regular_virtualenv()
|
118
|
+
|
119
|
+
return False
|
@@ -0,0 +1,225 @@
|
|
1
|
+
"""Support functions for working with wheel files.
|
2
|
+
"""
|
3
|
+
|
4
|
+
from __future__ import absolute_import
|
5
|
+
|
6
|
+
import logging
|
7
|
+
from email.parser import Parser
|
8
|
+
from zipfile import ZipFile
|
9
|
+
|
10
|
+
from pip._vendor.packaging.utils import canonicalize_name
|
11
|
+
from pip._vendor.pkg_resources import DistInfoDistribution
|
12
|
+
from pip._vendor.six import PY2, ensure_str
|
13
|
+
|
14
|
+
from pip._internal.exceptions import UnsupportedWheel
|
15
|
+
from pip._internal.utils.pkg_resources import DictMetadata
|
16
|
+
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
17
|
+
|
18
|
+
if MYPY_CHECK_RUNNING:
|
19
|
+
from email.message import Message
|
20
|
+
from typing import Dict, Tuple
|
21
|
+
|
22
|
+
from pip._vendor.pkg_resources import Distribution
|
23
|
+
|
24
|
+
if PY2:
|
25
|
+
from zipfile import BadZipfile as BadZipFile
|
26
|
+
else:
|
27
|
+
from zipfile import BadZipFile
|
28
|
+
|
29
|
+
|
30
|
+
VERSION_COMPATIBLE = (1, 0)
|
31
|
+
|
32
|
+
|
33
|
+
logger = logging.getLogger(__name__)
|
34
|
+
|
35
|
+
|
36
|
+
class WheelMetadata(DictMetadata):
|
37
|
+
"""Metadata provider that maps metadata decoding exceptions to our
|
38
|
+
internal exception type.
|
39
|
+
"""
|
40
|
+
def __init__(self, metadata, wheel_name):
|
41
|
+
# type: (Dict[str, bytes], str) -> None
|
42
|
+
super(WheelMetadata, self).__init__(metadata)
|
43
|
+
self._wheel_name = wheel_name
|
44
|
+
|
45
|
+
def get_metadata(self, name):
|
46
|
+
# type: (str) -> str
|
47
|
+
try:
|
48
|
+
return super(WheelMetadata, self).get_metadata(name)
|
49
|
+
except UnicodeDecodeError as e:
|
50
|
+
# Augment the default error with the origin of the file.
|
51
|
+
raise UnsupportedWheel(
|
52
|
+
"Error decoding metadata for {}: {}".format(
|
53
|
+
self._wheel_name, e
|
54
|
+
)
|
55
|
+
)
|
56
|
+
|
57
|
+
|
58
|
+
def pkg_resources_distribution_for_wheel(wheel_zip, name, location):
|
59
|
+
# type: (ZipFile, str, str) -> Distribution
|
60
|
+
"""Get a pkg_resources distribution given a wheel.
|
61
|
+
|
62
|
+
:raises UnsupportedWheel: on any errors
|
63
|
+
"""
|
64
|
+
info_dir, _ = parse_wheel(wheel_zip, name)
|
65
|
+
|
66
|
+
metadata_files = [
|
67
|
+
p for p in wheel_zip.namelist() if p.startswith("{}/".format(info_dir))
|
68
|
+
]
|
69
|
+
|
70
|
+
metadata_text = {} # type: Dict[str, bytes]
|
71
|
+
for path in metadata_files:
|
72
|
+
# If a flag is set, namelist entries may be unicode in Python 2.
|
73
|
+
# We coerce them to native str type to match the types used in the rest
|
74
|
+
# of the code. This cannot fail because unicode can always be encoded
|
75
|
+
# with UTF-8.
|
76
|
+
full_path = ensure_str(path)
|
77
|
+
_, metadata_name = full_path.split("/", 1)
|
78
|
+
|
79
|
+
try:
|
80
|
+
metadata_text[metadata_name] = read_wheel_metadata_file(
|
81
|
+
wheel_zip, full_path
|
82
|
+
)
|
83
|
+
except UnsupportedWheel as e:
|
84
|
+
raise UnsupportedWheel(
|
85
|
+
"{} has an invalid wheel, {}".format(name, str(e))
|
86
|
+
)
|
87
|
+
|
88
|
+
metadata = WheelMetadata(metadata_text, location)
|
89
|
+
|
90
|
+
return DistInfoDistribution(
|
91
|
+
location=location, metadata=metadata, project_name=name
|
92
|
+
)
|
93
|
+
|
94
|
+
|
95
|
+
def parse_wheel(wheel_zip, name):
|
96
|
+
# type: (ZipFile, str) -> Tuple[str, Message]
|
97
|
+
"""Extract information from the provided wheel, ensuring it meets basic
|
98
|
+
standards.
|
99
|
+
|
100
|
+
Returns the name of the .dist-info directory and the parsed WHEEL metadata.
|
101
|
+
"""
|
102
|
+
try:
|
103
|
+
info_dir = wheel_dist_info_dir(wheel_zip, name)
|
104
|
+
metadata = wheel_metadata(wheel_zip, info_dir)
|
105
|
+
version = wheel_version(metadata)
|
106
|
+
except UnsupportedWheel as e:
|
107
|
+
raise UnsupportedWheel(
|
108
|
+
"{} has an invalid wheel, {}".format(name, str(e))
|
109
|
+
)
|
110
|
+
|
111
|
+
check_compatibility(version, name)
|
112
|
+
|
113
|
+
return info_dir, metadata
|
114
|
+
|
115
|
+
|
116
|
+
def wheel_dist_info_dir(source, name):
|
117
|
+
# type: (ZipFile, str) -> str
|
118
|
+
"""Returns the name of the contained .dist-info directory.
|
119
|
+
|
120
|
+
Raises AssertionError or UnsupportedWheel if not found, >1 found, or
|
121
|
+
it doesn't match the provided name.
|
122
|
+
"""
|
123
|
+
# Zip file path separators must be /
|
124
|
+
subdirs = set(p.split("/", 1)[0] for p in source.namelist())
|
125
|
+
|
126
|
+
info_dirs = [s for s in subdirs if s.endswith('.dist-info')]
|
127
|
+
|
128
|
+
if not info_dirs:
|
129
|
+
raise UnsupportedWheel(".dist-info directory not found")
|
130
|
+
|
131
|
+
if len(info_dirs) > 1:
|
132
|
+
raise UnsupportedWheel(
|
133
|
+
"multiple .dist-info directories found: {}".format(
|
134
|
+
", ".join(info_dirs)
|
135
|
+
)
|
136
|
+
)
|
137
|
+
|
138
|
+
info_dir = info_dirs[0]
|
139
|
+
|
140
|
+
info_dir_name = canonicalize_name(info_dir)
|
141
|
+
canonical_name = canonicalize_name(name)
|
142
|
+
if not info_dir_name.startswith(canonical_name):
|
143
|
+
raise UnsupportedWheel(
|
144
|
+
".dist-info directory {!r} does not start with {!r}".format(
|
145
|
+
info_dir, canonical_name
|
146
|
+
)
|
147
|
+
)
|
148
|
+
|
149
|
+
# Zip file paths can be unicode or str depending on the zip entry flags,
|
150
|
+
# so normalize it.
|
151
|
+
return ensure_str(info_dir)
|
152
|
+
|
153
|
+
|
154
|
+
def read_wheel_metadata_file(source, path):
|
155
|
+
# type: (ZipFile, str) -> bytes
|
156
|
+
try:
|
157
|
+
return source.read(path)
|
158
|
+
# BadZipFile for general corruption, KeyError for missing entry,
|
159
|
+
# and RuntimeError for password-protected files
|
160
|
+
except (BadZipFile, KeyError, RuntimeError) as e:
|
161
|
+
raise UnsupportedWheel(
|
162
|
+
"could not read {!r} file: {!r}".format(path, e)
|
163
|
+
)
|
164
|
+
|
165
|
+
|
166
|
+
def wheel_metadata(source, dist_info_dir):
|
167
|
+
# type: (ZipFile, str) -> Message
|
168
|
+
"""Return the WHEEL metadata of an extracted wheel, if possible.
|
169
|
+
Otherwise, raise UnsupportedWheel.
|
170
|
+
"""
|
171
|
+
path = "{}/WHEEL".format(dist_info_dir)
|
172
|
+
# Zip file path separators must be /
|
173
|
+
wheel_contents = read_wheel_metadata_file(source, path)
|
174
|
+
|
175
|
+
try:
|
176
|
+
wheel_text = ensure_str(wheel_contents)
|
177
|
+
except UnicodeDecodeError as e:
|
178
|
+
raise UnsupportedWheel("error decoding {!r}: {!r}".format(path, e))
|
179
|
+
|
180
|
+
# FeedParser (used by Parser) does not raise any exceptions. The returned
|
181
|
+
# message may have .defects populated, but for backwards-compatibility we
|
182
|
+
# currently ignore them.
|
183
|
+
return Parser().parsestr(wheel_text)
|
184
|
+
|
185
|
+
|
186
|
+
def wheel_version(wheel_data):
|
187
|
+
# type: (Message) -> Tuple[int, ...]
|
188
|
+
"""Given WHEEL metadata, return the parsed Wheel-Version.
|
189
|
+
Otherwise, raise UnsupportedWheel.
|
190
|
+
"""
|
191
|
+
version_text = wheel_data["Wheel-Version"]
|
192
|
+
if version_text is None:
|
193
|
+
raise UnsupportedWheel("WHEEL is missing Wheel-Version")
|
194
|
+
|
195
|
+
version = version_text.strip()
|
196
|
+
|
197
|
+
try:
|
198
|
+
return tuple(map(int, version.split('.')))
|
199
|
+
except ValueError:
|
200
|
+
raise UnsupportedWheel("invalid Wheel-Version: {!r}".format(version))
|
201
|
+
|
202
|
+
|
203
|
+
def check_compatibility(version, name):
|
204
|
+
# type: (Tuple[int, ...], str) -> None
|
205
|
+
"""Raises errors or warns if called with an incompatible Wheel-Version.
|
206
|
+
|
207
|
+
pip should refuse to install a Wheel-Version that's a major series
|
208
|
+
ahead of what it's compatible with (e.g 2.0 > 1.1); and warn when
|
209
|
+
installing a version only minor version ahead (e.g 1.2 > 1.1).
|
210
|
+
|
211
|
+
version: a 2-tuple representing a Wheel-Version (Major, Minor)
|
212
|
+
name: name of wheel or package to raise exception about
|
213
|
+
|
214
|
+
:raises UnsupportedWheel: when an incompatible Wheel-Version is given
|
215
|
+
"""
|
216
|
+
if version[0] > VERSION_COMPATIBLE[0]:
|
217
|
+
raise UnsupportedWheel(
|
218
|
+
"{}'s Wheel-Version ({}) is not compatible with this version "
|
219
|
+
"of pip".format(name, '.'.join(map(str, version)))
|
220
|
+
)
|
221
|
+
elif version > VERSION_COMPATIBLE:
|
222
|
+
logger.warning(
|
223
|
+
'Installing from a newer Wheel-Version (%s)',
|
224
|
+
'.'.join(map(str, version)),
|
225
|
+
)
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Expose a limited set of classes and functions so callers outside of
|
2
|
+
# the vcs package don't need to import deeper than `pip._internal.vcs`.
|
3
|
+
# (The test directory and imports protected by MYPY_CHECK_RUNNING may
|
4
|
+
# still need to import from a vcs sub-package.)
|
5
|
+
# Import all vcs modules to register each VCS in the VcsSupport object.
|
6
|
+
import pip._internal.vcs.bazaar
|
7
|
+
import pip._internal.vcs.git
|
8
|
+
import pip._internal.vcs.mercurial
|
9
|
+
import pip._internal.vcs.subversion # noqa: F401
|
10
|
+
from pip._internal.vcs.versioncontrol import ( # noqa: F401
|
11
|
+
RemoteNotFoundError,
|
12
|
+
is_url,
|
13
|
+
make_vcs_requirement_url,
|
14
|
+
vcs,
|
15
|
+
)
|