quarchpy 2.1.14.dev3__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/__pycache__/connection_QIS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/connection_QIS.py +22 -9
- quarchpy/connection_specific/connection_QIS.py.bak +35 -17
- 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.dev3.dist-info → quarchpy-2.1.14.dev5.dist-info}/METADATA +1 -1
- quarchpy-2.1.14.dev5.dist-info/RECORD +1219 -0
- quarchpy-2.1.14.dev3.dist-info/RECORD +0 -535
- {quarchpy-2.1.14.dev3.dist-info → quarchpy-2.1.14.dev5.dist-info}/WHEEL +0 -0
- {quarchpy-2.1.14.dev3.dist-info → quarchpy-2.1.14.dev5.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,299 @@
|
|
1
|
+
from __future__ import absolute_import
|
2
|
+
|
3
|
+
import logging
|
4
|
+
import os
|
5
|
+
import subprocess
|
6
|
+
|
7
|
+
from pip._vendor.six.moves import shlex_quote
|
8
|
+
|
9
|
+
from pip._internal.cli.spinners import SpinnerInterface, open_spinner
|
10
|
+
from pip._internal.exceptions import InstallationSubprocessError
|
11
|
+
from pip._internal.utils.compat import console_to_str, str_to_display
|
12
|
+
from pip._internal.utils.logging import subprocess_logger
|
13
|
+
from pip._internal.utils.misc import HiddenText, path_to_display
|
14
|
+
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
15
|
+
|
16
|
+
if MYPY_CHECK_RUNNING:
|
17
|
+
from typing import Any, Callable, Iterable, List, Mapping, Optional, Text, Union
|
18
|
+
|
19
|
+
CommandArgs = List[Union[str, HiddenText]]
|
20
|
+
|
21
|
+
|
22
|
+
LOG_DIVIDER = '----------------------------------------'
|
23
|
+
|
24
|
+
|
25
|
+
def make_command(*args):
|
26
|
+
# type: (Union[str, HiddenText, CommandArgs]) -> CommandArgs
|
27
|
+
"""
|
28
|
+
Create a CommandArgs object.
|
29
|
+
"""
|
30
|
+
command_args = [] # type: CommandArgs
|
31
|
+
for arg in args:
|
32
|
+
# Check for list instead of CommandArgs since CommandArgs is
|
33
|
+
# only known during type-checking.
|
34
|
+
if isinstance(arg, list):
|
35
|
+
command_args.extend(arg)
|
36
|
+
else:
|
37
|
+
# Otherwise, arg is str or HiddenText.
|
38
|
+
command_args.append(arg)
|
39
|
+
|
40
|
+
return command_args
|
41
|
+
|
42
|
+
|
43
|
+
def format_command_args(args):
|
44
|
+
# type: (Union[List[str], CommandArgs]) -> str
|
45
|
+
"""
|
46
|
+
Format command arguments for display.
|
47
|
+
"""
|
48
|
+
# For HiddenText arguments, display the redacted form by calling str().
|
49
|
+
# Also, we don't apply str() to arguments that aren't HiddenText since
|
50
|
+
# this can trigger a UnicodeDecodeError in Python 2 if the argument
|
51
|
+
# has type unicode and includes a non-ascii character. (The type
|
52
|
+
# checker doesn't ensure the annotations are correct in all cases.)
|
53
|
+
return ' '.join(
|
54
|
+
shlex_quote(str(arg)) if isinstance(arg, HiddenText)
|
55
|
+
else shlex_quote(arg) for arg in args
|
56
|
+
)
|
57
|
+
|
58
|
+
|
59
|
+
def reveal_command_args(args):
|
60
|
+
# type: (Union[List[str], CommandArgs]) -> List[str]
|
61
|
+
"""
|
62
|
+
Return the arguments in their raw, unredacted form.
|
63
|
+
"""
|
64
|
+
return [
|
65
|
+
arg.secret if isinstance(arg, HiddenText) else arg for arg in args
|
66
|
+
]
|
67
|
+
|
68
|
+
|
69
|
+
def make_subprocess_output_error(
|
70
|
+
cmd_args, # type: Union[List[str], CommandArgs]
|
71
|
+
cwd, # type: Optional[str]
|
72
|
+
lines, # type: List[Text]
|
73
|
+
exit_status, # type: int
|
74
|
+
):
|
75
|
+
# type: (...) -> Text
|
76
|
+
"""
|
77
|
+
Create and return the error message to use to log a subprocess error
|
78
|
+
with command output.
|
79
|
+
|
80
|
+
:param lines: A list of lines, each ending with a newline.
|
81
|
+
"""
|
82
|
+
command = format_command_args(cmd_args)
|
83
|
+
# Convert `command` and `cwd` to text (unicode in Python 2) so we can use
|
84
|
+
# them as arguments in the unicode format string below. This avoids
|
85
|
+
# "UnicodeDecodeError: 'ascii' codec can't decode byte ..." in Python 2
|
86
|
+
# if either contains a non-ascii character.
|
87
|
+
command_display = str_to_display(command, desc='command bytes')
|
88
|
+
cwd_display = path_to_display(cwd)
|
89
|
+
|
90
|
+
# We know the joined output value ends in a newline.
|
91
|
+
output = ''.join(lines)
|
92
|
+
msg = (
|
93
|
+
# Use a unicode string to avoid "UnicodeEncodeError: 'ascii'
|
94
|
+
# codec can't encode character ..." in Python 2 when a format
|
95
|
+
# argument (e.g. `output`) has a non-ascii character.
|
96
|
+
u'Command errored out with exit status {exit_status}:\n'
|
97
|
+
' command: {command_display}\n'
|
98
|
+
' cwd: {cwd_display}\n'
|
99
|
+
'Complete output ({line_count} lines):\n{output}{divider}'
|
100
|
+
).format(
|
101
|
+
exit_status=exit_status,
|
102
|
+
command_display=command_display,
|
103
|
+
cwd_display=cwd_display,
|
104
|
+
line_count=len(lines),
|
105
|
+
output=output,
|
106
|
+
divider=LOG_DIVIDER,
|
107
|
+
)
|
108
|
+
return msg
|
109
|
+
|
110
|
+
|
111
|
+
def call_subprocess(
|
112
|
+
cmd, # type: Union[List[str], CommandArgs]
|
113
|
+
show_stdout=False, # type: bool
|
114
|
+
cwd=None, # type: Optional[str]
|
115
|
+
on_returncode='raise', # type: str
|
116
|
+
extra_ok_returncodes=None, # type: Optional[Iterable[int]]
|
117
|
+
command_desc=None, # type: Optional[str]
|
118
|
+
extra_environ=None, # type: Optional[Mapping[str, Any]]
|
119
|
+
unset_environ=None, # type: Optional[Iterable[str]]
|
120
|
+
spinner=None, # type: Optional[SpinnerInterface]
|
121
|
+
log_failed_cmd=True, # type: Optional[bool]
|
122
|
+
stdout_only=False, # type: Optional[bool]
|
123
|
+
):
|
124
|
+
# type: (...) -> Text
|
125
|
+
"""
|
126
|
+
Args:
|
127
|
+
show_stdout: if true, use INFO to log the subprocess's stderr and
|
128
|
+
stdout streams. Otherwise, use DEBUG. Defaults to False.
|
129
|
+
extra_ok_returncodes: an iterable of integer return codes that are
|
130
|
+
acceptable, in addition to 0. Defaults to None, which means [].
|
131
|
+
unset_environ: an iterable of environment variable names to unset
|
132
|
+
prior to calling subprocess.Popen().
|
133
|
+
log_failed_cmd: if false, failed commands are not logged, only raised.
|
134
|
+
stdout_only: if true, return only stdout, else return both. When true,
|
135
|
+
logging of both stdout and stderr occurs when the subprocess has
|
136
|
+
terminated, else logging occurs as subprocess output is produced.
|
137
|
+
"""
|
138
|
+
if extra_ok_returncodes is None:
|
139
|
+
extra_ok_returncodes = []
|
140
|
+
if unset_environ is None:
|
141
|
+
unset_environ = []
|
142
|
+
# Most places in pip use show_stdout=False. What this means is--
|
143
|
+
#
|
144
|
+
# - We connect the child's output (combined stderr and stdout) to a
|
145
|
+
# single pipe, which we read.
|
146
|
+
# - We log this output to stderr at DEBUG level as it is received.
|
147
|
+
# - If DEBUG logging isn't enabled (e.g. if --verbose logging wasn't
|
148
|
+
# requested), then we show a spinner so the user can still see the
|
149
|
+
# subprocess is in progress.
|
150
|
+
# - If the subprocess exits with an error, we log the output to stderr
|
151
|
+
# at ERROR level if it hasn't already been displayed to the console
|
152
|
+
# (e.g. if --verbose logging wasn't enabled). This way we don't log
|
153
|
+
# the output to the console twice.
|
154
|
+
#
|
155
|
+
# If show_stdout=True, then the above is still done, but with DEBUG
|
156
|
+
# replaced by INFO.
|
157
|
+
if show_stdout:
|
158
|
+
# Then log the subprocess output at INFO level.
|
159
|
+
log_subprocess = subprocess_logger.info
|
160
|
+
used_level = logging.INFO
|
161
|
+
else:
|
162
|
+
# Then log the subprocess output using DEBUG. This also ensures
|
163
|
+
# it will be logged to the log file (aka user_log), if enabled.
|
164
|
+
log_subprocess = subprocess_logger.debug
|
165
|
+
used_level = logging.DEBUG
|
166
|
+
|
167
|
+
# Whether the subprocess will be visible in the console.
|
168
|
+
showing_subprocess = subprocess_logger.getEffectiveLevel() <= used_level
|
169
|
+
|
170
|
+
# Only use the spinner if we're not showing the subprocess output
|
171
|
+
# and we have a spinner.
|
172
|
+
use_spinner = not showing_subprocess and spinner is not None
|
173
|
+
|
174
|
+
if command_desc is None:
|
175
|
+
command_desc = format_command_args(cmd)
|
176
|
+
|
177
|
+
log_subprocess("Running command %s", command_desc)
|
178
|
+
env = os.environ.copy()
|
179
|
+
if extra_environ:
|
180
|
+
env.update(extra_environ)
|
181
|
+
for name in unset_environ:
|
182
|
+
env.pop(name, None)
|
183
|
+
try:
|
184
|
+
proc = subprocess.Popen(
|
185
|
+
# Convert HiddenText objects to the underlying str.
|
186
|
+
reveal_command_args(cmd),
|
187
|
+
stdin=subprocess.PIPE,
|
188
|
+
stdout=subprocess.PIPE,
|
189
|
+
stderr=subprocess.STDOUT if not stdout_only else subprocess.PIPE,
|
190
|
+
cwd=cwd,
|
191
|
+
env=env,
|
192
|
+
)
|
193
|
+
except Exception as exc:
|
194
|
+
if log_failed_cmd:
|
195
|
+
subprocess_logger.critical(
|
196
|
+
"Error %s while executing command %s", exc, command_desc,
|
197
|
+
)
|
198
|
+
raise
|
199
|
+
all_output = []
|
200
|
+
if not stdout_only:
|
201
|
+
assert proc.stdout
|
202
|
+
assert proc.stdin
|
203
|
+
proc.stdin.close()
|
204
|
+
# In this mode, stdout and stderr are in the same pipe.
|
205
|
+
while True:
|
206
|
+
# The "line" value is a unicode string in Python 2.
|
207
|
+
line = console_to_str(proc.stdout.readline())
|
208
|
+
if not line:
|
209
|
+
break
|
210
|
+
line = line.rstrip()
|
211
|
+
all_output.append(line + '\n')
|
212
|
+
|
213
|
+
# Show the line immediately.
|
214
|
+
log_subprocess(line)
|
215
|
+
# Update the spinner.
|
216
|
+
if use_spinner:
|
217
|
+
assert spinner
|
218
|
+
spinner.spin()
|
219
|
+
try:
|
220
|
+
proc.wait()
|
221
|
+
finally:
|
222
|
+
if proc.stdout:
|
223
|
+
proc.stdout.close()
|
224
|
+
output = ''.join(all_output)
|
225
|
+
else:
|
226
|
+
# In this mode, stdout and stderr are in different pipes.
|
227
|
+
# We must use communicate() which is the only safe way to read both.
|
228
|
+
out_bytes, err_bytes = proc.communicate()
|
229
|
+
# log line by line to preserve pip log indenting
|
230
|
+
out = console_to_str(out_bytes)
|
231
|
+
for out_line in out.splitlines():
|
232
|
+
log_subprocess(out_line)
|
233
|
+
all_output.append(out)
|
234
|
+
err = console_to_str(err_bytes)
|
235
|
+
for err_line in err.splitlines():
|
236
|
+
log_subprocess(err_line)
|
237
|
+
all_output.append(err)
|
238
|
+
output = out
|
239
|
+
|
240
|
+
proc_had_error = (
|
241
|
+
proc.returncode and proc.returncode not in extra_ok_returncodes
|
242
|
+
)
|
243
|
+
if use_spinner:
|
244
|
+
assert spinner
|
245
|
+
if proc_had_error:
|
246
|
+
spinner.finish("error")
|
247
|
+
else:
|
248
|
+
spinner.finish("done")
|
249
|
+
if proc_had_error:
|
250
|
+
if on_returncode == 'raise':
|
251
|
+
if not showing_subprocess and log_failed_cmd:
|
252
|
+
# Then the subprocess streams haven't been logged to the
|
253
|
+
# console yet.
|
254
|
+
msg = make_subprocess_output_error(
|
255
|
+
cmd_args=cmd,
|
256
|
+
cwd=cwd,
|
257
|
+
lines=all_output,
|
258
|
+
exit_status=proc.returncode,
|
259
|
+
)
|
260
|
+
subprocess_logger.error(msg)
|
261
|
+
raise InstallationSubprocessError(proc.returncode, command_desc)
|
262
|
+
elif on_returncode == 'warn':
|
263
|
+
subprocess_logger.warning(
|
264
|
+
'Command "%s" had error code %s in %s',
|
265
|
+
command_desc,
|
266
|
+
proc.returncode,
|
267
|
+
cwd,
|
268
|
+
)
|
269
|
+
elif on_returncode == 'ignore':
|
270
|
+
pass
|
271
|
+
else:
|
272
|
+
raise ValueError('Invalid value: on_returncode={!r}'.format(
|
273
|
+
on_returncode))
|
274
|
+
return output
|
275
|
+
|
276
|
+
|
277
|
+
def runner_with_spinner_message(message):
|
278
|
+
# type: (str) -> Callable[..., None]
|
279
|
+
"""Provide a subprocess_runner that shows a spinner message.
|
280
|
+
|
281
|
+
Intended for use with for pep517's Pep517HookCaller. Thus, the runner has
|
282
|
+
an API that matches what's expected by Pep517HookCaller.subprocess_runner.
|
283
|
+
"""
|
284
|
+
|
285
|
+
def runner(
|
286
|
+
cmd, # type: List[str]
|
287
|
+
cwd=None, # type: Optional[str]
|
288
|
+
extra_environ=None # type: Optional[Mapping[str, Any]]
|
289
|
+
):
|
290
|
+
# type: (...) -> None
|
291
|
+
with open_spinner(message) as spinner:
|
292
|
+
call_subprocess(
|
293
|
+
cmd,
|
294
|
+
cwd=cwd,
|
295
|
+
extra_environ=extra_environ,
|
296
|
+
spinner=spinner,
|
297
|
+
)
|
298
|
+
|
299
|
+
return runner
|
@@ -0,0 +1,284 @@
|
|
1
|
+
from __future__ import absolute_import
|
2
|
+
|
3
|
+
import errno
|
4
|
+
import itertools
|
5
|
+
import logging
|
6
|
+
import os.path
|
7
|
+
import tempfile
|
8
|
+
from contextlib import contextmanager
|
9
|
+
|
10
|
+
from pip._vendor.contextlib2 import ExitStack
|
11
|
+
from pip._vendor.six import ensure_text
|
12
|
+
|
13
|
+
from pip._internal.utils.compat import WINDOWS
|
14
|
+
from pip._internal.utils.misc import enum, rmtree
|
15
|
+
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
16
|
+
|
17
|
+
if MYPY_CHECK_RUNNING:
|
18
|
+
from typing import Any, Dict, Iterator, Optional, TypeVar, Union
|
19
|
+
|
20
|
+
_T = TypeVar('_T', bound='TempDirectory')
|
21
|
+
|
22
|
+
|
23
|
+
logger = logging.getLogger(__name__)
|
24
|
+
|
25
|
+
|
26
|
+
# Kinds of temporary directories. Only needed for ones that are
|
27
|
+
# globally-managed.
|
28
|
+
tempdir_kinds = enum(
|
29
|
+
BUILD_ENV="build-env",
|
30
|
+
EPHEM_WHEEL_CACHE="ephem-wheel-cache",
|
31
|
+
REQ_BUILD="req-build",
|
32
|
+
)
|
33
|
+
|
34
|
+
|
35
|
+
_tempdir_manager = None # type: Optional[ExitStack]
|
36
|
+
|
37
|
+
|
38
|
+
@contextmanager
|
39
|
+
def global_tempdir_manager():
|
40
|
+
# type: () -> Iterator[None]
|
41
|
+
global _tempdir_manager
|
42
|
+
with ExitStack() as stack:
|
43
|
+
old_tempdir_manager, _tempdir_manager = _tempdir_manager, stack
|
44
|
+
try:
|
45
|
+
yield
|
46
|
+
finally:
|
47
|
+
_tempdir_manager = old_tempdir_manager
|
48
|
+
|
49
|
+
|
50
|
+
class TempDirectoryTypeRegistry(object):
|
51
|
+
"""Manages temp directory behavior
|
52
|
+
"""
|
53
|
+
|
54
|
+
def __init__(self):
|
55
|
+
# type: () -> None
|
56
|
+
self._should_delete = {} # type: Dict[str, bool]
|
57
|
+
|
58
|
+
def set_delete(self, kind, value):
|
59
|
+
# type: (str, bool) -> None
|
60
|
+
"""Indicate whether a TempDirectory of the given kind should be
|
61
|
+
auto-deleted.
|
62
|
+
"""
|
63
|
+
self._should_delete[kind] = value
|
64
|
+
|
65
|
+
def get_delete(self, kind):
|
66
|
+
# type: (str) -> bool
|
67
|
+
"""Get configured auto-delete flag for a given TempDirectory type,
|
68
|
+
default True.
|
69
|
+
"""
|
70
|
+
return self._should_delete.get(kind, True)
|
71
|
+
|
72
|
+
|
73
|
+
_tempdir_registry = None # type: Optional[TempDirectoryTypeRegistry]
|
74
|
+
|
75
|
+
|
76
|
+
@contextmanager
|
77
|
+
def tempdir_registry():
|
78
|
+
# type: () -> Iterator[TempDirectoryTypeRegistry]
|
79
|
+
"""Provides a scoped global tempdir registry that can be used to dictate
|
80
|
+
whether directories should be deleted.
|
81
|
+
"""
|
82
|
+
global _tempdir_registry
|
83
|
+
old_tempdir_registry = _tempdir_registry
|
84
|
+
_tempdir_registry = TempDirectoryTypeRegistry()
|
85
|
+
try:
|
86
|
+
yield _tempdir_registry
|
87
|
+
finally:
|
88
|
+
_tempdir_registry = old_tempdir_registry
|
89
|
+
|
90
|
+
|
91
|
+
class _Default(object):
|
92
|
+
pass
|
93
|
+
|
94
|
+
|
95
|
+
_default = _Default()
|
96
|
+
|
97
|
+
|
98
|
+
class TempDirectory(object):
|
99
|
+
"""Helper class that owns and cleans up a temporary directory.
|
100
|
+
|
101
|
+
This class can be used as a context manager or as an OO representation of a
|
102
|
+
temporary directory.
|
103
|
+
|
104
|
+
Attributes:
|
105
|
+
path
|
106
|
+
Location to the created temporary directory
|
107
|
+
delete
|
108
|
+
Whether the directory should be deleted when exiting
|
109
|
+
(when used as a contextmanager)
|
110
|
+
|
111
|
+
Methods:
|
112
|
+
cleanup()
|
113
|
+
Deletes the temporary directory
|
114
|
+
|
115
|
+
When used as a context manager, if the delete attribute is True, on
|
116
|
+
exiting the context the temporary directory is deleted.
|
117
|
+
"""
|
118
|
+
|
119
|
+
def __init__(
|
120
|
+
self,
|
121
|
+
path=None, # type: Optional[str]
|
122
|
+
delete=_default, # type: Union[bool, None, _Default]
|
123
|
+
kind="temp", # type: str
|
124
|
+
globally_managed=False, # type: bool
|
125
|
+
):
|
126
|
+
super(TempDirectory, self).__init__()
|
127
|
+
|
128
|
+
if delete is _default:
|
129
|
+
if path is not None:
|
130
|
+
# If we were given an explicit directory, resolve delete option
|
131
|
+
# now.
|
132
|
+
delete = False
|
133
|
+
else:
|
134
|
+
# Otherwise, we wait until cleanup and see what
|
135
|
+
# tempdir_registry says.
|
136
|
+
delete = None
|
137
|
+
|
138
|
+
# The only time we specify path is in for editables where it
|
139
|
+
# is the value of the --src option.
|
140
|
+
if path is None:
|
141
|
+
path = self._create(kind)
|
142
|
+
|
143
|
+
self._path = path
|
144
|
+
self._deleted = False
|
145
|
+
self.delete = delete
|
146
|
+
self.kind = kind
|
147
|
+
|
148
|
+
if globally_managed:
|
149
|
+
assert _tempdir_manager is not None
|
150
|
+
_tempdir_manager.enter_context(self)
|
151
|
+
|
152
|
+
@property
|
153
|
+
def path(self):
|
154
|
+
# type: () -> str
|
155
|
+
assert not self._deleted, (
|
156
|
+
"Attempted to access deleted path: {}".format(self._path)
|
157
|
+
)
|
158
|
+
return self._path
|
159
|
+
|
160
|
+
def __repr__(self):
|
161
|
+
# type: () -> str
|
162
|
+
return "<{} {!r}>".format(self.__class__.__name__, self.path)
|
163
|
+
|
164
|
+
def __enter__(self):
|
165
|
+
# type: (_T) -> _T
|
166
|
+
return self
|
167
|
+
|
168
|
+
def __exit__(self, exc, value, tb):
|
169
|
+
# type: (Any, Any, Any) -> None
|
170
|
+
if self.delete is not None:
|
171
|
+
delete = self.delete
|
172
|
+
elif _tempdir_registry:
|
173
|
+
delete = _tempdir_registry.get_delete(self.kind)
|
174
|
+
else:
|
175
|
+
delete = True
|
176
|
+
|
177
|
+
if delete:
|
178
|
+
self.cleanup()
|
179
|
+
|
180
|
+
def _create(self, kind):
|
181
|
+
# type: (str) -> str
|
182
|
+
"""Create a temporary directory and store its path in self.path
|
183
|
+
"""
|
184
|
+
# We realpath here because some systems have their default tmpdir
|
185
|
+
# symlinked to another directory. This tends to confuse build
|
186
|
+
# scripts, so we canonicalize the path by traversing potential
|
187
|
+
# symlinks here.
|
188
|
+
path = os.path.realpath(
|
189
|
+
tempfile.mkdtemp(prefix="pip-{}-".format(kind))
|
190
|
+
)
|
191
|
+
logger.debug("Created temporary directory: %s", path)
|
192
|
+
return path
|
193
|
+
|
194
|
+
def cleanup(self):
|
195
|
+
# type: () -> None
|
196
|
+
"""Remove the temporary directory created and reset state
|
197
|
+
"""
|
198
|
+
self._deleted = True
|
199
|
+
if not os.path.exists(self._path):
|
200
|
+
return
|
201
|
+
# Make sure to pass unicode on Python 2 to make the contents also
|
202
|
+
# use unicode, ensuring non-ASCII names and can be represented.
|
203
|
+
# This is only done on Windows because POSIX platforms use bytes
|
204
|
+
# natively for paths, and the bytes-text conversion omission avoids
|
205
|
+
# errors caused by the environment configuring encodings incorrectly.
|
206
|
+
if WINDOWS:
|
207
|
+
rmtree(ensure_text(self._path))
|
208
|
+
else:
|
209
|
+
rmtree(self._path)
|
210
|
+
|
211
|
+
|
212
|
+
class AdjacentTempDirectory(TempDirectory):
|
213
|
+
"""Helper class that creates a temporary directory adjacent to a real one.
|
214
|
+
|
215
|
+
Attributes:
|
216
|
+
original
|
217
|
+
The original directory to create a temp directory for.
|
218
|
+
path
|
219
|
+
After calling create() or entering, contains the full
|
220
|
+
path to the temporary directory.
|
221
|
+
delete
|
222
|
+
Whether the directory should be deleted when exiting
|
223
|
+
(when used as a contextmanager)
|
224
|
+
|
225
|
+
"""
|
226
|
+
# The characters that may be used to name the temp directory
|
227
|
+
# We always prepend a ~ and then rotate through these until
|
228
|
+
# a usable name is found.
|
229
|
+
# pkg_resources raises a different error for .dist-info folder
|
230
|
+
# with leading '-' and invalid metadata
|
231
|
+
LEADING_CHARS = "-~.=%0123456789"
|
232
|
+
|
233
|
+
def __init__(self, original, delete=None):
|
234
|
+
# type: (str, Optional[bool]) -> None
|
235
|
+
self.original = original.rstrip('/\\')
|
236
|
+
super(AdjacentTempDirectory, self).__init__(delete=delete)
|
237
|
+
|
238
|
+
@classmethod
|
239
|
+
def _generate_names(cls, name):
|
240
|
+
# type: (str) -> Iterator[str]
|
241
|
+
"""Generates a series of temporary names.
|
242
|
+
|
243
|
+
The algorithm replaces the leading characters in the name
|
244
|
+
with ones that are valid filesystem characters, but are not
|
245
|
+
valid package names (for both Python and pip definitions of
|
246
|
+
package).
|
247
|
+
"""
|
248
|
+
for i in range(1, len(name)):
|
249
|
+
for candidate in itertools.combinations_with_replacement(
|
250
|
+
cls.LEADING_CHARS, i - 1):
|
251
|
+
new_name = '~' + ''.join(candidate) + name[i:]
|
252
|
+
if new_name != name:
|
253
|
+
yield new_name
|
254
|
+
|
255
|
+
# If we make it this far, we will have to make a longer name
|
256
|
+
for i in range(len(cls.LEADING_CHARS)):
|
257
|
+
for candidate in itertools.combinations_with_replacement(
|
258
|
+
cls.LEADING_CHARS, i):
|
259
|
+
new_name = '~' + ''.join(candidate) + name
|
260
|
+
if new_name != name:
|
261
|
+
yield new_name
|
262
|
+
|
263
|
+
def _create(self, kind):
|
264
|
+
# type: (str) -> str
|
265
|
+
root, name = os.path.split(self.original)
|
266
|
+
for candidate in self._generate_names(name):
|
267
|
+
path = os.path.join(root, candidate)
|
268
|
+
try:
|
269
|
+
os.mkdir(path)
|
270
|
+
except OSError as ex:
|
271
|
+
# Continue if the name exists already
|
272
|
+
if ex.errno != errno.EEXIST:
|
273
|
+
raise
|
274
|
+
else:
|
275
|
+
path = os.path.realpath(path)
|
276
|
+
break
|
277
|
+
else:
|
278
|
+
# Final fallback on the default behavior.
|
279
|
+
path = os.path.realpath(
|
280
|
+
tempfile.mkdtemp(prefix="pip-{}-".format(kind))
|
281
|
+
)
|
282
|
+
|
283
|
+
logger.debug("Created temporary directory: %s", path)
|
284
|
+
return path
|
@@ -0,0 +1,38 @@
|
|
1
|
+
"""For neatly implementing static typing in pip.
|
2
|
+
|
3
|
+
`mypy` - the static type analysis tool we use - uses the `typing` module, which
|
4
|
+
provides core functionality fundamental to mypy's functioning.
|
5
|
+
|
6
|
+
Generally, `typing` would be imported at runtime and used in that fashion -
|
7
|
+
it acts as a no-op at runtime and does not have any run-time overhead by
|
8
|
+
design.
|
9
|
+
|
10
|
+
As it turns out, `typing` is not vendorable - it uses separate sources for
|
11
|
+
Python 2/Python 3. Thus, this codebase can not expect it to be present.
|
12
|
+
To work around this, mypy allows the typing import to be behind a False-y
|
13
|
+
optional to prevent it from running at runtime and type-comments can be used
|
14
|
+
to remove the need for the types to be accessible directly during runtime.
|
15
|
+
|
16
|
+
This module provides the False-y guard in a nicely named fashion so that a
|
17
|
+
curious maintainer can reach here to read this.
|
18
|
+
|
19
|
+
In pip, all static-typing related imports should be guarded as follows:
|
20
|
+
|
21
|
+
from pip._internal.utils.typing import MYPY_CHECK_RUNNING
|
22
|
+
|
23
|
+
if MYPY_CHECK_RUNNING:
|
24
|
+
from typing import ...
|
25
|
+
|
26
|
+
Ref: https://github.com/python/mypy/issues/3216
|
27
|
+
"""
|
28
|
+
|
29
|
+
MYPY_CHECK_RUNNING = False
|
30
|
+
|
31
|
+
|
32
|
+
if MYPY_CHECK_RUNNING:
|
33
|
+
from typing import cast
|
34
|
+
else:
|
35
|
+
# typing's cast() is needed at runtime, but we don't want to import typing.
|
36
|
+
# Thus, we use a dummy no-op version, which we tell mypy to ignore.
|
37
|
+
def cast(type_, value): # type: ignore
|
38
|
+
return value
|