quarchpy 2.1.13.dev2__py2.py3-none-any.whl → 2.1.14__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 -1
- quarchpy/.idea/modules.xml +1 -0
- quarchpy/.idea/quarchpy.iml +4 -1
- quarchpy/.idea/workspace.xml +208 -11
- quarchpy/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/__pycache__/_version.cpython-311.pyc +0 -0
- quarchpy/__pycache__/connection.cpython-311.pyc +0 -0
- quarchpy/__pycache__/run.cpython-311.pyc +0 -0
- quarchpy/_version.py +1 -1
- quarchpy/config_files/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/config_files/__pycache__/quarch_config_parser.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/StreamChannels.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QIS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_QPS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_ReST.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Serial.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_TCP.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_Telnet.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_USB.cpython-311.pyc +0 -0
- quarchpy/connection_specific/__pycache__/connection_mDNS.cpython-311.pyc +0 -0
- quarchpy/connection_specific/connection_QIS.py +237 -320
- quarchpy/connection_specific/connection_ReST.py +26 -16
- quarchpy/connection_specific/connection_TCP.py +1 -1
- quarchpy/connection_specific/connection_mDNS.py +46 -0
- quarchpy/connection_specific/serial/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/__pycache__/win32.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-311.pyc +0 -0
- quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/SystemTest.cpython-311.pyc +0 -0
- quarchpy/debug/__pycache__/__init__.cpython-311.pyc +0 -0
- 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/debug/__pycache__/versionCompare.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/device.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/quarchArray.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/quarchPPM.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/quarchQPS.cpython-311.pyc +0 -0
- quarchpy/device/__pycache__/scanDevices.cpython-311.pyc +0 -0
- quarchpy/device/quarchPPM.py +2 -2
- quarchpy/device/quarchQPS.py +95 -86
- quarchpy/device/scanDevices.py +13 -3
- quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-311.pyc +0 -0
- quarchpy/docs/CHANGES.rst +11 -1
- quarchpy/docs/_build/doctrees/CHANGES.doctree +0 -0
- quarchpy/docs/_build/doctrees/environment.pickle +0 -0
- quarchpy/docs/_build/doctrees/index.doctree +0 -0
- quarchpy/docs/_build/doctrees/readme.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/changelog.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/licenses.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/modules.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.calibration.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.config_files.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.connection_specific.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.debug.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.device.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.disk_test.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.fio.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.iometer.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.qis.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.qps.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.user_interface.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/quarchpy.utilities.doctree +0 -0
- quarchpy/docs/_build/doctrees/source/readme.doctree +0 -0
- quarchpy/docs/_build/html/.buildinfo +1 -1
- quarchpy/docs/_build/html/CHANGES.html +198 -156
- quarchpy/docs/_build/html/_sources/CHANGES.rst.txt +30 -0
- quarchpy/docs/_build/html/_static/alabaster.css +3 -1
- quarchpy/docs/_build/html/_static/basic.css +47 -27
- quarchpy/docs/_build/html/_static/doctools.js +107 -274
- quarchpy/docs/_build/html/_static/documentation_options.js +5 -4
- quarchpy/docs/_build/html/_static/language_data.js +2 -100
- quarchpy/docs/_build/html/_static/pygments.css +1 -0
- quarchpy/docs/_build/html/_static/searchtools.js +440 -395
- quarchpy/docs/_build/html/_static/sphinx_highlight.js +154 -0
- quarchpy/docs/_build/html/genindex.html +263 -87
- quarchpy/docs/_build/html/index.html +68 -63
- quarchpy/docs/_build/html/objects.inv +0 -0
- quarchpy/docs/_build/html/py-modindex.html +9 -11
- quarchpy/docs/_build/html/readme.html +26 -27
- quarchpy/docs/_build/html/search.html +8 -10
- quarchpy/docs/_build/html/searchindex.js +1 -1
- quarchpy/docs/_build/html/source/changelog.html +249 -201
- quarchpy/docs/_build/html/source/licenses.html +23 -24
- quarchpy/docs/_build/html/source/modules.html +24 -17
- quarchpy/docs/_build/html/source/quarchpy.calibration.html +44 -45
- quarchpy/docs/_build/html/source/quarchpy.config_files.html +25 -26
- quarchpy/docs/_build/html/source/quarchpy.connection_specific.html +239 -133
- quarchpy/docs/_build/html/source/quarchpy.debug.html +57 -54
- quarchpy/docs/_build/html/source/quarchpy.device.html +245 -211
- quarchpy/docs/_build/html/source/quarchpy.disk_test.html +75 -76
- quarchpy/docs/_build/html/source/quarchpy.fio.html +33 -34
- quarchpy/docs/_build/html/source/quarchpy.html +518 -61
- quarchpy/docs/_build/html/source/quarchpy.iometer.html +130 -44
- quarchpy/docs/_build/html/source/quarchpy.qis.html +420 -44
- quarchpy/docs/_build/html/source/quarchpy.qps.html +44 -43
- quarchpy/docs/_build/html/source/quarchpy.user_interface.html +70 -120
- quarchpy/docs/_build/html/source/quarchpy.utilities.html +39 -40
- quarchpy/docs/_build/html/source/readme.html +26 -27
- quarchpy/fio/__pycache__/FIO_interface.cpython-311.pyc +0 -0
- quarchpy/fio/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/fio/__pycache__/fioDiskFinder.cpython-311.pyc +0 -0
- quarchpy/iometer/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/iometer/__pycache__/gen_iometer_template.cpython-311.pyc +0 -0
- quarchpy/iometer/__pycache__/iometerFuncs.cpython-311.pyc +0 -0
- quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-311.pyc +0 -0
- quarchpy/qis/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/qis/__pycache__/qisFuncs.cpython-311.pyc +0 -0
- quarchpy/qis/qisFuncs.py +25 -42
- quarchpy/qps/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/qps/__pycache__/qpsFuncs.cpython-311.pyc +0 -0
- quarchpy/qps/qpsFuncs.py +18 -19
- quarchpy/run.py +1 -1
- quarchpy/user_interface/__pycache__/__init__.cpython-311.pyc +0 -0
- quarchpy/user_interface/__pycache__/user_interface.cpython-311.pyc +0 -0
- quarchpy/utilities/TestCenter.py +1 -1
- quarchpy/utilities/Version.py +50 -0
- quarchpy/utilities/__pycache__/TestCenter.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/TimeValue.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/Version.cpython-311.pyc +0 -0
- quarchpy/utilities/__pycache__/__init__.cpython-311.pyc +0 -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.13.dev2.dist-info → quarchpy-2.1.14.dist-info}/METADATA +12 -2
- quarchpy-2.1.14.dist-info/RECORD +1216 -0
- quarchpy/.idea/inspectionProfiles/Project_Default.xml +0 -26
- quarchpy/connection_specific/connection_QIS.py.bak +0 -1821
- quarchpy/connection_specific/usb_libs/__pycache__/libusb1.cpython-311.pyc +0 -0
- quarchpy/connection_specific/usb_libs/__pycache__/usb1.cpython-311.pyc +0 -0
- quarchpy/debug/TextScanIP.py +0 -11
- quarchpy/device/device.py.bak +0 -504
- quarchpy/device/scanDevices.py.bak +0 -661
- quarchpy/user_interface/user_interface.py.bak +0 -749
- quarchpy/utilities/TestCenter.py.bak +0 -150
- quarchpy-2.1.13.dev2.dist-info/RECORD +0 -542
- {quarchpy-2.1.13.dev2.dist-info → quarchpy-2.1.14.dist-info}/WHEEL +0 -0
- {quarchpy-2.1.13.dev2.dist-info → quarchpy-2.1.14.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,918 @@
|
|
1
|
+
from __future__ import absolute_import, division, unicode_literals
|
2
|
+
|
3
|
+
from pip._vendor.six import text_type
|
4
|
+
from pip._vendor.six.moves import http_client, urllib
|
5
|
+
|
6
|
+
import codecs
|
7
|
+
import re
|
8
|
+
from io import BytesIO, StringIO
|
9
|
+
|
10
|
+
from pip._vendor import webencodings
|
11
|
+
|
12
|
+
from .constants import EOF, spaceCharacters, asciiLetters, asciiUppercase
|
13
|
+
from .constants import _ReparseException
|
14
|
+
from . import _utils
|
15
|
+
|
16
|
+
# Non-unicode versions of constants for use in the pre-parser
|
17
|
+
spaceCharactersBytes = frozenset([item.encode("ascii") for item in spaceCharacters])
|
18
|
+
asciiLettersBytes = frozenset([item.encode("ascii") for item in asciiLetters])
|
19
|
+
asciiUppercaseBytes = frozenset([item.encode("ascii") for item in asciiUppercase])
|
20
|
+
spacesAngleBrackets = spaceCharactersBytes | frozenset([b">", b"<"])
|
21
|
+
|
22
|
+
|
23
|
+
invalid_unicode_no_surrogate = "[\u0001-\u0008\u000B\u000E-\u001F\u007F-\u009F\uFDD0-\uFDEF\uFFFE\uFFFF\U0001FFFE\U0001FFFF\U0002FFFE\U0002FFFF\U0003FFFE\U0003FFFF\U0004FFFE\U0004FFFF\U0005FFFE\U0005FFFF\U0006FFFE\U0006FFFF\U0007FFFE\U0007FFFF\U0008FFFE\U0008FFFF\U0009FFFE\U0009FFFF\U000AFFFE\U000AFFFF\U000BFFFE\U000BFFFF\U000CFFFE\U000CFFFF\U000DFFFE\U000DFFFF\U000EFFFE\U000EFFFF\U000FFFFE\U000FFFFF\U0010FFFE\U0010FFFF]" # noqa
|
24
|
+
|
25
|
+
if _utils.supports_lone_surrogates:
|
26
|
+
# Use one extra step of indirection and create surrogates with
|
27
|
+
# eval. Not using this indirection would introduce an illegal
|
28
|
+
# unicode literal on platforms not supporting such lone
|
29
|
+
# surrogates.
|
30
|
+
assert invalid_unicode_no_surrogate[-1] == "]" and invalid_unicode_no_surrogate.count("]") == 1
|
31
|
+
invalid_unicode_re = re.compile(invalid_unicode_no_surrogate[:-1] +
|
32
|
+
eval('"\\uD800-\\uDFFF"') + # pylint:disable=eval-used
|
33
|
+
"]")
|
34
|
+
else:
|
35
|
+
invalid_unicode_re = re.compile(invalid_unicode_no_surrogate)
|
36
|
+
|
37
|
+
non_bmp_invalid_codepoints = {0x1FFFE, 0x1FFFF, 0x2FFFE, 0x2FFFF, 0x3FFFE,
|
38
|
+
0x3FFFF, 0x4FFFE, 0x4FFFF, 0x5FFFE, 0x5FFFF,
|
39
|
+
0x6FFFE, 0x6FFFF, 0x7FFFE, 0x7FFFF, 0x8FFFE,
|
40
|
+
0x8FFFF, 0x9FFFE, 0x9FFFF, 0xAFFFE, 0xAFFFF,
|
41
|
+
0xBFFFE, 0xBFFFF, 0xCFFFE, 0xCFFFF, 0xDFFFE,
|
42
|
+
0xDFFFF, 0xEFFFE, 0xEFFFF, 0xFFFFE, 0xFFFFF,
|
43
|
+
0x10FFFE, 0x10FFFF}
|
44
|
+
|
45
|
+
ascii_punctuation_re = re.compile("[\u0009-\u000D\u0020-\u002F\u003A-\u0040\u005C\u005B-\u0060\u007B-\u007E]")
|
46
|
+
|
47
|
+
# Cache for charsUntil()
|
48
|
+
charsUntilRegEx = {}
|
49
|
+
|
50
|
+
|
51
|
+
class BufferedStream(object):
|
52
|
+
"""Buffering for streams that do not have buffering of their own
|
53
|
+
|
54
|
+
The buffer is implemented as a list of chunks on the assumption that
|
55
|
+
joining many strings will be slow since it is O(n**2)
|
56
|
+
"""
|
57
|
+
|
58
|
+
def __init__(self, stream):
|
59
|
+
self.stream = stream
|
60
|
+
self.buffer = []
|
61
|
+
self.position = [-1, 0] # chunk number, offset
|
62
|
+
|
63
|
+
def tell(self):
|
64
|
+
pos = 0
|
65
|
+
for chunk in self.buffer[:self.position[0]]:
|
66
|
+
pos += len(chunk)
|
67
|
+
pos += self.position[1]
|
68
|
+
return pos
|
69
|
+
|
70
|
+
def seek(self, pos):
|
71
|
+
assert pos <= self._bufferedBytes()
|
72
|
+
offset = pos
|
73
|
+
i = 0
|
74
|
+
while len(self.buffer[i]) < offset:
|
75
|
+
offset -= len(self.buffer[i])
|
76
|
+
i += 1
|
77
|
+
self.position = [i, offset]
|
78
|
+
|
79
|
+
def read(self, bytes):
|
80
|
+
if not self.buffer:
|
81
|
+
return self._readStream(bytes)
|
82
|
+
elif (self.position[0] == len(self.buffer) and
|
83
|
+
self.position[1] == len(self.buffer[-1])):
|
84
|
+
return self._readStream(bytes)
|
85
|
+
else:
|
86
|
+
return self._readFromBuffer(bytes)
|
87
|
+
|
88
|
+
def _bufferedBytes(self):
|
89
|
+
return sum([len(item) for item in self.buffer])
|
90
|
+
|
91
|
+
def _readStream(self, bytes):
|
92
|
+
data = self.stream.read(bytes)
|
93
|
+
self.buffer.append(data)
|
94
|
+
self.position[0] += 1
|
95
|
+
self.position[1] = len(data)
|
96
|
+
return data
|
97
|
+
|
98
|
+
def _readFromBuffer(self, bytes):
|
99
|
+
remainingBytes = bytes
|
100
|
+
rv = []
|
101
|
+
bufferIndex = self.position[0]
|
102
|
+
bufferOffset = self.position[1]
|
103
|
+
while bufferIndex < len(self.buffer) and remainingBytes != 0:
|
104
|
+
assert remainingBytes > 0
|
105
|
+
bufferedData = self.buffer[bufferIndex]
|
106
|
+
|
107
|
+
if remainingBytes <= len(bufferedData) - bufferOffset:
|
108
|
+
bytesToRead = remainingBytes
|
109
|
+
self.position = [bufferIndex, bufferOffset + bytesToRead]
|
110
|
+
else:
|
111
|
+
bytesToRead = len(bufferedData) - bufferOffset
|
112
|
+
self.position = [bufferIndex, len(bufferedData)]
|
113
|
+
bufferIndex += 1
|
114
|
+
rv.append(bufferedData[bufferOffset:bufferOffset + bytesToRead])
|
115
|
+
remainingBytes -= bytesToRead
|
116
|
+
|
117
|
+
bufferOffset = 0
|
118
|
+
|
119
|
+
if remainingBytes:
|
120
|
+
rv.append(self._readStream(remainingBytes))
|
121
|
+
|
122
|
+
return b"".join(rv)
|
123
|
+
|
124
|
+
|
125
|
+
def HTMLInputStream(source, **kwargs):
|
126
|
+
# Work around Python bug #20007: read(0) closes the connection.
|
127
|
+
# http://bugs.python.org/issue20007
|
128
|
+
if (isinstance(source, http_client.HTTPResponse) or
|
129
|
+
# Also check for addinfourl wrapping HTTPResponse
|
130
|
+
(isinstance(source, urllib.response.addbase) and
|
131
|
+
isinstance(source.fp, http_client.HTTPResponse))):
|
132
|
+
isUnicode = False
|
133
|
+
elif hasattr(source, "read"):
|
134
|
+
isUnicode = isinstance(source.read(0), text_type)
|
135
|
+
else:
|
136
|
+
isUnicode = isinstance(source, text_type)
|
137
|
+
|
138
|
+
if isUnicode:
|
139
|
+
encodings = [x for x in kwargs if x.endswith("_encoding")]
|
140
|
+
if encodings:
|
141
|
+
raise TypeError("Cannot set an encoding with a unicode input, set %r" % encodings)
|
142
|
+
|
143
|
+
return HTMLUnicodeInputStream(source, **kwargs)
|
144
|
+
else:
|
145
|
+
return HTMLBinaryInputStream(source, **kwargs)
|
146
|
+
|
147
|
+
|
148
|
+
class HTMLUnicodeInputStream(object):
|
149
|
+
"""Provides a unicode stream of characters to the HTMLTokenizer.
|
150
|
+
|
151
|
+
This class takes care of character encoding and removing or replacing
|
152
|
+
incorrect byte-sequences and also provides column and line tracking.
|
153
|
+
|
154
|
+
"""
|
155
|
+
|
156
|
+
_defaultChunkSize = 10240
|
157
|
+
|
158
|
+
def __init__(self, source):
|
159
|
+
"""Initialises the HTMLInputStream.
|
160
|
+
|
161
|
+
HTMLInputStream(source, [encoding]) -> Normalized stream from source
|
162
|
+
for use by html5lib.
|
163
|
+
|
164
|
+
source can be either a file-object, local filename or a string.
|
165
|
+
|
166
|
+
The optional encoding parameter must be a string that indicates
|
167
|
+
the encoding. If specified, that encoding will be used,
|
168
|
+
regardless of any BOM or later declaration (such as in a meta
|
169
|
+
element)
|
170
|
+
|
171
|
+
"""
|
172
|
+
|
173
|
+
if not _utils.supports_lone_surrogates:
|
174
|
+
# Such platforms will have already checked for such
|
175
|
+
# surrogate errors, so no need to do this checking.
|
176
|
+
self.reportCharacterErrors = None
|
177
|
+
elif len("\U0010FFFF") == 1:
|
178
|
+
self.reportCharacterErrors = self.characterErrorsUCS4
|
179
|
+
else:
|
180
|
+
self.reportCharacterErrors = self.characterErrorsUCS2
|
181
|
+
|
182
|
+
# List of where new lines occur
|
183
|
+
self.newLines = [0]
|
184
|
+
|
185
|
+
self.charEncoding = (lookupEncoding("utf-8"), "certain")
|
186
|
+
self.dataStream = self.openStream(source)
|
187
|
+
|
188
|
+
self.reset()
|
189
|
+
|
190
|
+
def reset(self):
|
191
|
+
self.chunk = ""
|
192
|
+
self.chunkSize = 0
|
193
|
+
self.chunkOffset = 0
|
194
|
+
self.errors = []
|
195
|
+
|
196
|
+
# number of (complete) lines in previous chunks
|
197
|
+
self.prevNumLines = 0
|
198
|
+
# number of columns in the last line of the previous chunk
|
199
|
+
self.prevNumCols = 0
|
200
|
+
|
201
|
+
# Deal with CR LF and surrogates split over chunk boundaries
|
202
|
+
self._bufferedCharacter = None
|
203
|
+
|
204
|
+
def openStream(self, source):
|
205
|
+
"""Produces a file object from source.
|
206
|
+
|
207
|
+
source can be either a file object, local filename or a string.
|
208
|
+
|
209
|
+
"""
|
210
|
+
# Already a file object
|
211
|
+
if hasattr(source, 'read'):
|
212
|
+
stream = source
|
213
|
+
else:
|
214
|
+
stream = StringIO(source)
|
215
|
+
|
216
|
+
return stream
|
217
|
+
|
218
|
+
def _position(self, offset):
|
219
|
+
chunk = self.chunk
|
220
|
+
nLines = chunk.count('\n', 0, offset)
|
221
|
+
positionLine = self.prevNumLines + nLines
|
222
|
+
lastLinePos = chunk.rfind('\n', 0, offset)
|
223
|
+
if lastLinePos == -1:
|
224
|
+
positionColumn = self.prevNumCols + offset
|
225
|
+
else:
|
226
|
+
positionColumn = offset - (lastLinePos + 1)
|
227
|
+
return (positionLine, positionColumn)
|
228
|
+
|
229
|
+
def position(self):
|
230
|
+
"""Returns (line, col) of the current position in the stream."""
|
231
|
+
line, col = self._position(self.chunkOffset)
|
232
|
+
return (line + 1, col)
|
233
|
+
|
234
|
+
def char(self):
|
235
|
+
""" Read one character from the stream or queue if available. Return
|
236
|
+
EOF when EOF is reached.
|
237
|
+
"""
|
238
|
+
# Read a new chunk from the input stream if necessary
|
239
|
+
if self.chunkOffset >= self.chunkSize:
|
240
|
+
if not self.readChunk():
|
241
|
+
return EOF
|
242
|
+
|
243
|
+
chunkOffset = self.chunkOffset
|
244
|
+
char = self.chunk[chunkOffset]
|
245
|
+
self.chunkOffset = chunkOffset + 1
|
246
|
+
|
247
|
+
return char
|
248
|
+
|
249
|
+
def readChunk(self, chunkSize=None):
|
250
|
+
if chunkSize is None:
|
251
|
+
chunkSize = self._defaultChunkSize
|
252
|
+
|
253
|
+
self.prevNumLines, self.prevNumCols = self._position(self.chunkSize)
|
254
|
+
|
255
|
+
self.chunk = ""
|
256
|
+
self.chunkSize = 0
|
257
|
+
self.chunkOffset = 0
|
258
|
+
|
259
|
+
data = self.dataStream.read(chunkSize)
|
260
|
+
|
261
|
+
# Deal with CR LF and surrogates broken across chunks
|
262
|
+
if self._bufferedCharacter:
|
263
|
+
data = self._bufferedCharacter + data
|
264
|
+
self._bufferedCharacter = None
|
265
|
+
elif not data:
|
266
|
+
# We have no more data, bye-bye stream
|
267
|
+
return False
|
268
|
+
|
269
|
+
if len(data) > 1:
|
270
|
+
lastv = ord(data[-1])
|
271
|
+
if lastv == 0x0D or 0xD800 <= lastv <= 0xDBFF:
|
272
|
+
self._bufferedCharacter = data[-1]
|
273
|
+
data = data[:-1]
|
274
|
+
|
275
|
+
if self.reportCharacterErrors:
|
276
|
+
self.reportCharacterErrors(data)
|
277
|
+
|
278
|
+
# Replace invalid characters
|
279
|
+
data = data.replace("\r\n", "\n")
|
280
|
+
data = data.replace("\r", "\n")
|
281
|
+
|
282
|
+
self.chunk = data
|
283
|
+
self.chunkSize = len(data)
|
284
|
+
|
285
|
+
return True
|
286
|
+
|
287
|
+
def characterErrorsUCS4(self, data):
|
288
|
+
for _ in range(len(invalid_unicode_re.findall(data))):
|
289
|
+
self.errors.append("invalid-codepoint")
|
290
|
+
|
291
|
+
def characterErrorsUCS2(self, data):
|
292
|
+
# Someone picked the wrong compile option
|
293
|
+
# You lose
|
294
|
+
skip = False
|
295
|
+
for match in invalid_unicode_re.finditer(data):
|
296
|
+
if skip:
|
297
|
+
continue
|
298
|
+
codepoint = ord(match.group())
|
299
|
+
pos = match.start()
|
300
|
+
# Pretty sure there should be endianness issues here
|
301
|
+
if _utils.isSurrogatePair(data[pos:pos + 2]):
|
302
|
+
# We have a surrogate pair!
|
303
|
+
char_val = _utils.surrogatePairToCodepoint(data[pos:pos + 2])
|
304
|
+
if char_val in non_bmp_invalid_codepoints:
|
305
|
+
self.errors.append("invalid-codepoint")
|
306
|
+
skip = True
|
307
|
+
elif (codepoint >= 0xD800 and codepoint <= 0xDFFF and
|
308
|
+
pos == len(data) - 1):
|
309
|
+
self.errors.append("invalid-codepoint")
|
310
|
+
else:
|
311
|
+
skip = False
|
312
|
+
self.errors.append("invalid-codepoint")
|
313
|
+
|
314
|
+
def charsUntil(self, characters, opposite=False):
|
315
|
+
""" Returns a string of characters from the stream up to but not
|
316
|
+
including any character in 'characters' or EOF. 'characters' must be
|
317
|
+
a container that supports the 'in' method and iteration over its
|
318
|
+
characters.
|
319
|
+
"""
|
320
|
+
|
321
|
+
# Use a cache of regexps to find the required characters
|
322
|
+
try:
|
323
|
+
chars = charsUntilRegEx[(characters, opposite)]
|
324
|
+
except KeyError:
|
325
|
+
if __debug__:
|
326
|
+
for c in characters:
|
327
|
+
assert(ord(c) < 128)
|
328
|
+
regex = "".join(["\\x%02x" % ord(c) for c in characters])
|
329
|
+
if not opposite:
|
330
|
+
regex = "^%s" % regex
|
331
|
+
chars = charsUntilRegEx[(characters, opposite)] = re.compile("[%s]+" % regex)
|
332
|
+
|
333
|
+
rv = []
|
334
|
+
|
335
|
+
while True:
|
336
|
+
# Find the longest matching prefix
|
337
|
+
m = chars.match(self.chunk, self.chunkOffset)
|
338
|
+
if m is None:
|
339
|
+
# If nothing matched, and it wasn't because we ran out of chunk,
|
340
|
+
# then stop
|
341
|
+
if self.chunkOffset != self.chunkSize:
|
342
|
+
break
|
343
|
+
else:
|
344
|
+
end = m.end()
|
345
|
+
# If not the whole chunk matched, return everything
|
346
|
+
# up to the part that didn't match
|
347
|
+
if end != self.chunkSize:
|
348
|
+
rv.append(self.chunk[self.chunkOffset:end])
|
349
|
+
self.chunkOffset = end
|
350
|
+
break
|
351
|
+
# If the whole remainder of the chunk matched,
|
352
|
+
# use it all and read the next chunk
|
353
|
+
rv.append(self.chunk[self.chunkOffset:])
|
354
|
+
if not self.readChunk():
|
355
|
+
# Reached EOF
|
356
|
+
break
|
357
|
+
|
358
|
+
r = "".join(rv)
|
359
|
+
return r
|
360
|
+
|
361
|
+
def unget(self, char):
|
362
|
+
# Only one character is allowed to be ungotten at once - it must
|
363
|
+
# be consumed again before any further call to unget
|
364
|
+
if char is not EOF:
|
365
|
+
if self.chunkOffset == 0:
|
366
|
+
# unget is called quite rarely, so it's a good idea to do
|
367
|
+
# more work here if it saves a bit of work in the frequently
|
368
|
+
# called char and charsUntil.
|
369
|
+
# So, just prepend the ungotten character onto the current
|
370
|
+
# chunk:
|
371
|
+
self.chunk = char + self.chunk
|
372
|
+
self.chunkSize += 1
|
373
|
+
else:
|
374
|
+
self.chunkOffset -= 1
|
375
|
+
assert self.chunk[self.chunkOffset] == char
|
376
|
+
|
377
|
+
|
378
|
+
class HTMLBinaryInputStream(HTMLUnicodeInputStream):
|
379
|
+
"""Provides a unicode stream of characters to the HTMLTokenizer.
|
380
|
+
|
381
|
+
This class takes care of character encoding and removing or replacing
|
382
|
+
incorrect byte-sequences and also provides column and line tracking.
|
383
|
+
|
384
|
+
"""
|
385
|
+
|
386
|
+
def __init__(self, source, override_encoding=None, transport_encoding=None,
|
387
|
+
same_origin_parent_encoding=None, likely_encoding=None,
|
388
|
+
default_encoding="windows-1252", useChardet=True):
|
389
|
+
"""Initialises the HTMLInputStream.
|
390
|
+
|
391
|
+
HTMLInputStream(source, [encoding]) -> Normalized stream from source
|
392
|
+
for use by html5lib.
|
393
|
+
|
394
|
+
source can be either a file-object, local filename or a string.
|
395
|
+
|
396
|
+
The optional encoding parameter must be a string that indicates
|
397
|
+
the encoding. If specified, that encoding will be used,
|
398
|
+
regardless of any BOM or later declaration (such as in a meta
|
399
|
+
element)
|
400
|
+
|
401
|
+
"""
|
402
|
+
# Raw Stream - for unicode objects this will encode to utf-8 and set
|
403
|
+
# self.charEncoding as appropriate
|
404
|
+
self.rawStream = self.openStream(source)
|
405
|
+
|
406
|
+
HTMLUnicodeInputStream.__init__(self, self.rawStream)
|
407
|
+
|
408
|
+
# Encoding Information
|
409
|
+
# Number of bytes to use when looking for a meta element with
|
410
|
+
# encoding information
|
411
|
+
self.numBytesMeta = 1024
|
412
|
+
# Number of bytes to use when using detecting encoding using chardet
|
413
|
+
self.numBytesChardet = 100
|
414
|
+
# Things from args
|
415
|
+
self.override_encoding = override_encoding
|
416
|
+
self.transport_encoding = transport_encoding
|
417
|
+
self.same_origin_parent_encoding = same_origin_parent_encoding
|
418
|
+
self.likely_encoding = likely_encoding
|
419
|
+
self.default_encoding = default_encoding
|
420
|
+
|
421
|
+
# Determine encoding
|
422
|
+
self.charEncoding = self.determineEncoding(useChardet)
|
423
|
+
assert self.charEncoding[0] is not None
|
424
|
+
|
425
|
+
# Call superclass
|
426
|
+
self.reset()
|
427
|
+
|
428
|
+
def reset(self):
|
429
|
+
self.dataStream = self.charEncoding[0].codec_info.streamreader(self.rawStream, 'replace')
|
430
|
+
HTMLUnicodeInputStream.reset(self)
|
431
|
+
|
432
|
+
def openStream(self, source):
|
433
|
+
"""Produces a file object from source.
|
434
|
+
|
435
|
+
source can be either a file object, local filename or a string.
|
436
|
+
|
437
|
+
"""
|
438
|
+
# Already a file object
|
439
|
+
if hasattr(source, 'read'):
|
440
|
+
stream = source
|
441
|
+
else:
|
442
|
+
stream = BytesIO(source)
|
443
|
+
|
444
|
+
try:
|
445
|
+
stream.seek(stream.tell())
|
446
|
+
except Exception:
|
447
|
+
stream = BufferedStream(stream)
|
448
|
+
|
449
|
+
return stream
|
450
|
+
|
451
|
+
def determineEncoding(self, chardet=True):
|
452
|
+
# BOMs take precedence over everything
|
453
|
+
# This will also read past the BOM if present
|
454
|
+
charEncoding = self.detectBOM(), "certain"
|
455
|
+
if charEncoding[0] is not None:
|
456
|
+
return charEncoding
|
457
|
+
|
458
|
+
# If we've been overridden, we've been overridden
|
459
|
+
charEncoding = lookupEncoding(self.override_encoding), "certain"
|
460
|
+
if charEncoding[0] is not None:
|
461
|
+
return charEncoding
|
462
|
+
|
463
|
+
# Now check the transport layer
|
464
|
+
charEncoding = lookupEncoding(self.transport_encoding), "certain"
|
465
|
+
if charEncoding[0] is not None:
|
466
|
+
return charEncoding
|
467
|
+
|
468
|
+
# Look for meta elements with encoding information
|
469
|
+
charEncoding = self.detectEncodingMeta(), "tentative"
|
470
|
+
if charEncoding[0] is not None:
|
471
|
+
return charEncoding
|
472
|
+
|
473
|
+
# Parent document encoding
|
474
|
+
charEncoding = lookupEncoding(self.same_origin_parent_encoding), "tentative"
|
475
|
+
if charEncoding[0] is not None and not charEncoding[0].name.startswith("utf-16"):
|
476
|
+
return charEncoding
|
477
|
+
|
478
|
+
# "likely" encoding
|
479
|
+
charEncoding = lookupEncoding(self.likely_encoding), "tentative"
|
480
|
+
if charEncoding[0] is not None:
|
481
|
+
return charEncoding
|
482
|
+
|
483
|
+
# Guess with chardet, if available
|
484
|
+
if chardet:
|
485
|
+
try:
|
486
|
+
from pip._vendor.chardet.universaldetector import UniversalDetector
|
487
|
+
except ImportError:
|
488
|
+
pass
|
489
|
+
else:
|
490
|
+
buffers = []
|
491
|
+
detector = UniversalDetector()
|
492
|
+
while not detector.done:
|
493
|
+
buffer = self.rawStream.read(self.numBytesChardet)
|
494
|
+
assert isinstance(buffer, bytes)
|
495
|
+
if not buffer:
|
496
|
+
break
|
497
|
+
buffers.append(buffer)
|
498
|
+
detector.feed(buffer)
|
499
|
+
detector.close()
|
500
|
+
encoding = lookupEncoding(detector.result['encoding'])
|
501
|
+
self.rawStream.seek(0)
|
502
|
+
if encoding is not None:
|
503
|
+
return encoding, "tentative"
|
504
|
+
|
505
|
+
# Try the default encoding
|
506
|
+
charEncoding = lookupEncoding(self.default_encoding), "tentative"
|
507
|
+
if charEncoding[0] is not None:
|
508
|
+
return charEncoding
|
509
|
+
|
510
|
+
# Fallback to html5lib's default if even that hasn't worked
|
511
|
+
return lookupEncoding("windows-1252"), "tentative"
|
512
|
+
|
513
|
+
def changeEncoding(self, newEncoding):
|
514
|
+
assert self.charEncoding[1] != "certain"
|
515
|
+
newEncoding = lookupEncoding(newEncoding)
|
516
|
+
if newEncoding is None:
|
517
|
+
return
|
518
|
+
if newEncoding.name in ("utf-16be", "utf-16le"):
|
519
|
+
newEncoding = lookupEncoding("utf-8")
|
520
|
+
assert newEncoding is not None
|
521
|
+
elif newEncoding == self.charEncoding[0]:
|
522
|
+
self.charEncoding = (self.charEncoding[0], "certain")
|
523
|
+
else:
|
524
|
+
self.rawStream.seek(0)
|
525
|
+
self.charEncoding = (newEncoding, "certain")
|
526
|
+
self.reset()
|
527
|
+
raise _ReparseException("Encoding changed from %s to %s" % (self.charEncoding[0], newEncoding))
|
528
|
+
|
529
|
+
def detectBOM(self):
|
530
|
+
"""Attempts to detect at BOM at the start of the stream. If
|
531
|
+
an encoding can be determined from the BOM return the name of the
|
532
|
+
encoding otherwise return None"""
|
533
|
+
bomDict = {
|
534
|
+
codecs.BOM_UTF8: 'utf-8',
|
535
|
+
codecs.BOM_UTF16_LE: 'utf-16le', codecs.BOM_UTF16_BE: 'utf-16be',
|
536
|
+
codecs.BOM_UTF32_LE: 'utf-32le', codecs.BOM_UTF32_BE: 'utf-32be'
|
537
|
+
}
|
538
|
+
|
539
|
+
# Go to beginning of file and read in 4 bytes
|
540
|
+
string = self.rawStream.read(4)
|
541
|
+
assert isinstance(string, bytes)
|
542
|
+
|
543
|
+
# Try detecting the BOM using bytes from the string
|
544
|
+
encoding = bomDict.get(string[:3]) # UTF-8
|
545
|
+
seek = 3
|
546
|
+
if not encoding:
|
547
|
+
# Need to detect UTF-32 before UTF-16
|
548
|
+
encoding = bomDict.get(string) # UTF-32
|
549
|
+
seek = 4
|
550
|
+
if not encoding:
|
551
|
+
encoding = bomDict.get(string[:2]) # UTF-16
|
552
|
+
seek = 2
|
553
|
+
|
554
|
+
# Set the read position past the BOM if one was found, otherwise
|
555
|
+
# set it to the start of the stream
|
556
|
+
if encoding:
|
557
|
+
self.rawStream.seek(seek)
|
558
|
+
return lookupEncoding(encoding)
|
559
|
+
else:
|
560
|
+
self.rawStream.seek(0)
|
561
|
+
return None
|
562
|
+
|
563
|
+
def detectEncodingMeta(self):
|
564
|
+
"""Report the encoding declared by the meta element
|
565
|
+
"""
|
566
|
+
buffer = self.rawStream.read(self.numBytesMeta)
|
567
|
+
assert isinstance(buffer, bytes)
|
568
|
+
parser = EncodingParser(buffer)
|
569
|
+
self.rawStream.seek(0)
|
570
|
+
encoding = parser.getEncoding()
|
571
|
+
|
572
|
+
if encoding is not None and encoding.name in ("utf-16be", "utf-16le"):
|
573
|
+
encoding = lookupEncoding("utf-8")
|
574
|
+
|
575
|
+
return encoding
|
576
|
+
|
577
|
+
|
578
|
+
class EncodingBytes(bytes):
|
579
|
+
"""String-like object with an associated position and various extra methods
|
580
|
+
If the position is ever greater than the string length then an exception is
|
581
|
+
raised"""
|
582
|
+
def __new__(self, value):
|
583
|
+
assert isinstance(value, bytes)
|
584
|
+
return bytes.__new__(self, value.lower())
|
585
|
+
|
586
|
+
def __init__(self, value):
|
587
|
+
# pylint:disable=unused-argument
|
588
|
+
self._position = -1
|
589
|
+
|
590
|
+
def __iter__(self):
|
591
|
+
return self
|
592
|
+
|
593
|
+
def __next__(self):
|
594
|
+
p = self._position = self._position + 1
|
595
|
+
if p >= len(self):
|
596
|
+
raise StopIteration
|
597
|
+
elif p < 0:
|
598
|
+
raise TypeError
|
599
|
+
return self[p:p + 1]
|
600
|
+
|
601
|
+
def next(self):
|
602
|
+
# Py2 compat
|
603
|
+
return self.__next__()
|
604
|
+
|
605
|
+
def previous(self):
|
606
|
+
p = self._position
|
607
|
+
if p >= len(self):
|
608
|
+
raise StopIteration
|
609
|
+
elif p < 0:
|
610
|
+
raise TypeError
|
611
|
+
self._position = p = p - 1
|
612
|
+
return self[p:p + 1]
|
613
|
+
|
614
|
+
def setPosition(self, position):
|
615
|
+
if self._position >= len(self):
|
616
|
+
raise StopIteration
|
617
|
+
self._position = position
|
618
|
+
|
619
|
+
def getPosition(self):
|
620
|
+
if self._position >= len(self):
|
621
|
+
raise StopIteration
|
622
|
+
if self._position >= 0:
|
623
|
+
return self._position
|
624
|
+
else:
|
625
|
+
return None
|
626
|
+
|
627
|
+
position = property(getPosition, setPosition)
|
628
|
+
|
629
|
+
def getCurrentByte(self):
|
630
|
+
return self[self.position:self.position + 1]
|
631
|
+
|
632
|
+
currentByte = property(getCurrentByte)
|
633
|
+
|
634
|
+
def skip(self, chars=spaceCharactersBytes):
|
635
|
+
"""Skip past a list of characters"""
|
636
|
+
p = self.position # use property for the error-checking
|
637
|
+
while p < len(self):
|
638
|
+
c = self[p:p + 1]
|
639
|
+
if c not in chars:
|
640
|
+
self._position = p
|
641
|
+
return c
|
642
|
+
p += 1
|
643
|
+
self._position = p
|
644
|
+
return None
|
645
|
+
|
646
|
+
def skipUntil(self, chars):
|
647
|
+
p = self.position
|
648
|
+
while p < len(self):
|
649
|
+
c = self[p:p + 1]
|
650
|
+
if c in chars:
|
651
|
+
self._position = p
|
652
|
+
return c
|
653
|
+
p += 1
|
654
|
+
self._position = p
|
655
|
+
return None
|
656
|
+
|
657
|
+
def matchBytes(self, bytes):
|
658
|
+
"""Look for a sequence of bytes at the start of a string. If the bytes
|
659
|
+
are found return True and advance the position to the byte after the
|
660
|
+
match. Otherwise return False and leave the position alone"""
|
661
|
+
rv = self.startswith(bytes, self.position)
|
662
|
+
if rv:
|
663
|
+
self.position += len(bytes)
|
664
|
+
return rv
|
665
|
+
|
666
|
+
def jumpTo(self, bytes):
|
667
|
+
"""Look for the next sequence of bytes matching a given sequence. If
|
668
|
+
a match is found advance the position to the last byte of the match"""
|
669
|
+
try:
|
670
|
+
self._position = self.index(bytes, self.position) + len(bytes) - 1
|
671
|
+
except ValueError:
|
672
|
+
raise StopIteration
|
673
|
+
return True
|
674
|
+
|
675
|
+
|
676
|
+
class EncodingParser(object):
|
677
|
+
"""Mini parser for detecting character encoding from meta elements"""
|
678
|
+
|
679
|
+
def __init__(self, data):
|
680
|
+
"""string - the data to work on for encoding detection"""
|
681
|
+
self.data = EncodingBytes(data)
|
682
|
+
self.encoding = None
|
683
|
+
|
684
|
+
def getEncoding(self):
|
685
|
+
if b"<meta" not in self.data:
|
686
|
+
return None
|
687
|
+
|
688
|
+
methodDispatch = (
|
689
|
+
(b"<!--", self.handleComment),
|
690
|
+
(b"<meta", self.handleMeta),
|
691
|
+
(b"</", self.handlePossibleEndTag),
|
692
|
+
(b"<!", self.handleOther),
|
693
|
+
(b"<?", self.handleOther),
|
694
|
+
(b"<", self.handlePossibleStartTag))
|
695
|
+
for _ in self.data:
|
696
|
+
keepParsing = True
|
697
|
+
try:
|
698
|
+
self.data.jumpTo(b"<")
|
699
|
+
except StopIteration:
|
700
|
+
break
|
701
|
+
for key, method in methodDispatch:
|
702
|
+
if self.data.matchBytes(key):
|
703
|
+
try:
|
704
|
+
keepParsing = method()
|
705
|
+
break
|
706
|
+
except StopIteration:
|
707
|
+
keepParsing = False
|
708
|
+
break
|
709
|
+
if not keepParsing:
|
710
|
+
break
|
711
|
+
|
712
|
+
return self.encoding
|
713
|
+
|
714
|
+
def handleComment(self):
|
715
|
+
"""Skip over comments"""
|
716
|
+
return self.data.jumpTo(b"-->")
|
717
|
+
|
718
|
+
def handleMeta(self):
|
719
|
+
if self.data.currentByte not in spaceCharactersBytes:
|
720
|
+
# if we have <meta not followed by a space so just keep going
|
721
|
+
return True
|
722
|
+
# We have a valid meta element we want to search for attributes
|
723
|
+
hasPragma = False
|
724
|
+
pendingEncoding = None
|
725
|
+
while True:
|
726
|
+
# Try to find the next attribute after the current position
|
727
|
+
attr = self.getAttribute()
|
728
|
+
if attr is None:
|
729
|
+
return True
|
730
|
+
else:
|
731
|
+
if attr[0] == b"http-equiv":
|
732
|
+
hasPragma = attr[1] == b"content-type"
|
733
|
+
if hasPragma and pendingEncoding is not None:
|
734
|
+
self.encoding = pendingEncoding
|
735
|
+
return False
|
736
|
+
elif attr[0] == b"charset":
|
737
|
+
tentativeEncoding = attr[1]
|
738
|
+
codec = lookupEncoding(tentativeEncoding)
|
739
|
+
if codec is not None:
|
740
|
+
self.encoding = codec
|
741
|
+
return False
|
742
|
+
elif attr[0] == b"content":
|
743
|
+
contentParser = ContentAttrParser(EncodingBytes(attr[1]))
|
744
|
+
tentativeEncoding = contentParser.parse()
|
745
|
+
if tentativeEncoding is not None:
|
746
|
+
codec = lookupEncoding(tentativeEncoding)
|
747
|
+
if codec is not None:
|
748
|
+
if hasPragma:
|
749
|
+
self.encoding = codec
|
750
|
+
return False
|
751
|
+
else:
|
752
|
+
pendingEncoding = codec
|
753
|
+
|
754
|
+
def handlePossibleStartTag(self):
|
755
|
+
return self.handlePossibleTag(False)
|
756
|
+
|
757
|
+
def handlePossibleEndTag(self):
|
758
|
+
next(self.data)
|
759
|
+
return self.handlePossibleTag(True)
|
760
|
+
|
761
|
+
def handlePossibleTag(self, endTag):
|
762
|
+
data = self.data
|
763
|
+
if data.currentByte not in asciiLettersBytes:
|
764
|
+
# If the next byte is not an ascii letter either ignore this
|
765
|
+
# fragment (possible start tag case) or treat it according to
|
766
|
+
# handleOther
|
767
|
+
if endTag:
|
768
|
+
data.previous()
|
769
|
+
self.handleOther()
|
770
|
+
return True
|
771
|
+
|
772
|
+
c = data.skipUntil(spacesAngleBrackets)
|
773
|
+
if c == b"<":
|
774
|
+
# return to the first step in the overall "two step" algorithm
|
775
|
+
# reprocessing the < byte
|
776
|
+
data.previous()
|
777
|
+
else:
|
778
|
+
# Read all attributes
|
779
|
+
attr = self.getAttribute()
|
780
|
+
while attr is not None:
|
781
|
+
attr = self.getAttribute()
|
782
|
+
return True
|
783
|
+
|
784
|
+
def handleOther(self):
|
785
|
+
return self.data.jumpTo(b">")
|
786
|
+
|
787
|
+
def getAttribute(self):
|
788
|
+
"""Return a name,value pair for the next attribute in the stream,
|
789
|
+
if one is found, or None"""
|
790
|
+
data = self.data
|
791
|
+
# Step 1 (skip chars)
|
792
|
+
c = data.skip(spaceCharactersBytes | frozenset([b"/"]))
|
793
|
+
assert c is None or len(c) == 1
|
794
|
+
# Step 2
|
795
|
+
if c in (b">", None):
|
796
|
+
return None
|
797
|
+
# Step 3
|
798
|
+
attrName = []
|
799
|
+
attrValue = []
|
800
|
+
# Step 4 attribute name
|
801
|
+
while True:
|
802
|
+
if c == b"=" and attrName:
|
803
|
+
break
|
804
|
+
elif c in spaceCharactersBytes:
|
805
|
+
# Step 6!
|
806
|
+
c = data.skip()
|
807
|
+
break
|
808
|
+
elif c in (b"/", b">"):
|
809
|
+
return b"".join(attrName), b""
|
810
|
+
elif c in asciiUppercaseBytes:
|
811
|
+
attrName.append(c.lower())
|
812
|
+
elif c is None:
|
813
|
+
return None
|
814
|
+
else:
|
815
|
+
attrName.append(c)
|
816
|
+
# Step 5
|
817
|
+
c = next(data)
|
818
|
+
# Step 7
|
819
|
+
if c != b"=":
|
820
|
+
data.previous()
|
821
|
+
return b"".join(attrName), b""
|
822
|
+
# Step 8
|
823
|
+
next(data)
|
824
|
+
# Step 9
|
825
|
+
c = data.skip()
|
826
|
+
# Step 10
|
827
|
+
if c in (b"'", b'"'):
|
828
|
+
# 10.1
|
829
|
+
quoteChar = c
|
830
|
+
while True:
|
831
|
+
# 10.2
|
832
|
+
c = next(data)
|
833
|
+
# 10.3
|
834
|
+
if c == quoteChar:
|
835
|
+
next(data)
|
836
|
+
return b"".join(attrName), b"".join(attrValue)
|
837
|
+
# 10.4
|
838
|
+
elif c in asciiUppercaseBytes:
|
839
|
+
attrValue.append(c.lower())
|
840
|
+
# 10.5
|
841
|
+
else:
|
842
|
+
attrValue.append(c)
|
843
|
+
elif c == b">":
|
844
|
+
return b"".join(attrName), b""
|
845
|
+
elif c in asciiUppercaseBytes:
|
846
|
+
attrValue.append(c.lower())
|
847
|
+
elif c is None:
|
848
|
+
return None
|
849
|
+
else:
|
850
|
+
attrValue.append(c)
|
851
|
+
# Step 11
|
852
|
+
while True:
|
853
|
+
c = next(data)
|
854
|
+
if c in spacesAngleBrackets:
|
855
|
+
return b"".join(attrName), b"".join(attrValue)
|
856
|
+
elif c in asciiUppercaseBytes:
|
857
|
+
attrValue.append(c.lower())
|
858
|
+
elif c is None:
|
859
|
+
return None
|
860
|
+
else:
|
861
|
+
attrValue.append(c)
|
862
|
+
|
863
|
+
|
864
|
+
class ContentAttrParser(object):
|
865
|
+
def __init__(self, data):
|
866
|
+
assert isinstance(data, bytes)
|
867
|
+
self.data = data
|
868
|
+
|
869
|
+
def parse(self):
|
870
|
+
try:
|
871
|
+
# Check if the attr name is charset
|
872
|
+
# otherwise return
|
873
|
+
self.data.jumpTo(b"charset")
|
874
|
+
self.data.position += 1
|
875
|
+
self.data.skip()
|
876
|
+
if not self.data.currentByte == b"=":
|
877
|
+
# If there is no = sign keep looking for attrs
|
878
|
+
return None
|
879
|
+
self.data.position += 1
|
880
|
+
self.data.skip()
|
881
|
+
# Look for an encoding between matching quote marks
|
882
|
+
if self.data.currentByte in (b'"', b"'"):
|
883
|
+
quoteMark = self.data.currentByte
|
884
|
+
self.data.position += 1
|
885
|
+
oldPosition = self.data.position
|
886
|
+
if self.data.jumpTo(quoteMark):
|
887
|
+
return self.data[oldPosition:self.data.position]
|
888
|
+
else:
|
889
|
+
return None
|
890
|
+
else:
|
891
|
+
# Unquoted value
|
892
|
+
oldPosition = self.data.position
|
893
|
+
try:
|
894
|
+
self.data.skipUntil(spaceCharactersBytes)
|
895
|
+
return self.data[oldPosition:self.data.position]
|
896
|
+
except StopIteration:
|
897
|
+
# Return the whole remaining value
|
898
|
+
return self.data[oldPosition:]
|
899
|
+
except StopIteration:
|
900
|
+
return None
|
901
|
+
|
902
|
+
|
903
|
+
def lookupEncoding(encoding):
|
904
|
+
"""Return the python codec name corresponding to an encoding or None if the
|
905
|
+
string doesn't correspond to a valid encoding."""
|
906
|
+
if isinstance(encoding, bytes):
|
907
|
+
try:
|
908
|
+
encoding = encoding.decode("ascii")
|
909
|
+
except UnicodeDecodeError:
|
910
|
+
return None
|
911
|
+
|
912
|
+
if encoding is not None:
|
913
|
+
try:
|
914
|
+
return webencodings.lookup(encoding)
|
915
|
+
except AttributeError:
|
916
|
+
return None
|
917
|
+
else:
|
918
|
+
return None
|