quarchpy 2.1.13.dev1__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.
Files changed (837) hide show
  1. quarchpy/.idea/.name +1 -1
  2. quarchpy/.idea/modules.xml +1 -0
  3. quarchpy/.idea/quarchpy.iml +4 -1
  4. quarchpy/.idea/workspace.xml +208 -11
  5. quarchpy/__pycache__/__init__.cpython-311.pyc +0 -0
  6. quarchpy/__pycache__/_version.cpython-311.pyc +0 -0
  7. quarchpy/__pycache__/connection.cpython-311.pyc +0 -0
  8. quarchpy/__pycache__/run.cpython-311.pyc +0 -0
  9. quarchpy/_version.py +1 -1
  10. quarchpy/config_files/__pycache__/__init__.cpython-311.pyc +0 -0
  11. quarchpy/config_files/__pycache__/quarch_config_parser.cpython-311.pyc +0 -0
  12. quarchpy/connection_specific/QPS/commandLineOptions.txt +12 -10
  13. quarchpy/connection_specific/QPS/qis/qis.jar +0 -0
  14. quarchpy/connection_specific/QPS/qis/qis_lib/{CInterface-1.7.03.jar → CInterface-1.7.04.jar} +0 -0
  15. quarchpy/connection_specific/QPS/qis/qis_lib/{QuarchCommon-0.2.5.jar → QuarchCommon-0.2.6.jar} +0 -0
  16. quarchpy/connection_specific/QPS/qis/qis_lib/commons-lang3-3.2.1.jar +0 -0
  17. quarchpy/connection_specific/QPS/qps.jar +0 -0
  18. quarchpy/connection_specific/QPS/qps_lib/QuarchCommon-0.2.6.jar +0 -0
  19. quarchpy/connection_specific/QPS/qps_lib/istack-commons-runtime-3.0.11.jar +0 -0
  20. quarchpy/connection_specific/QPS/qps_lib/jakarta.activation-api-2.1.0.jar +0 -0
  21. quarchpy/connection_specific/QPS/qps_lib/jakarta.xml.bind-api-3.0.0.jar +0 -0
  22. quarchpy/connection_specific/QPS/qps_lib/jaxb-core-3.0.0.jar +0 -0
  23. quarchpy/connection_specific/QPS/qps_lib/jaxb-impl-3.0.0.jar +0 -0
  24. quarchpy/connection_specific/QPS/qps_lib/jaxb-runtime-3.0.0.jar +0 -0
  25. quarchpy/connection_specific/QPS/qps_lib/qis-1.39.jar +0 -0
  26. quarchpy/connection_specific/QPS/qps_lib/txw2-3.0.0.jar +0 -0
  27. quarchpy/connection_specific/QPS/scriptCommands.txt +2 -2
  28. quarchpy/connection_specific/__pycache__/StreamChannels.cpython-311.pyc +0 -0
  29. quarchpy/connection_specific/__pycache__/__init__.cpython-311.pyc +0 -0
  30. quarchpy/connection_specific/__pycache__/connection_QIS.cpython-311.pyc +0 -0
  31. quarchpy/connection_specific/__pycache__/connection_QPS.cpython-311.pyc +0 -0
  32. quarchpy/connection_specific/__pycache__/connection_ReST.cpython-311.pyc +0 -0
  33. quarchpy/connection_specific/__pycache__/connection_Serial.cpython-311.pyc +0 -0
  34. quarchpy/connection_specific/__pycache__/connection_TCP.cpython-311.pyc +0 -0
  35. quarchpy/connection_specific/__pycache__/connection_Telnet.cpython-311.pyc +0 -0
  36. quarchpy/connection_specific/__pycache__/connection_USB.cpython-311.pyc +0 -0
  37. quarchpy/connection_specific/__pycache__/connection_mDNS.cpython-311.pyc +0 -0
  38. quarchpy/connection_specific/connection_QIS.py +246 -331
  39. quarchpy/connection_specific/connection_QPS.py +1 -1
  40. quarchpy/connection_specific/connection_ReST.py +26 -16
  41. quarchpy/connection_specific/connection_TCP.py +1 -1
  42. quarchpy/connection_specific/connection_mDNS.py +46 -0
  43. quarchpy/connection_specific/serial/__pycache__/__init__.cpython-311.pyc +0 -0
  44. quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-311.pyc +0 -0
  45. quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-311.pyc +0 -0
  46. quarchpy/connection_specific/serial/__pycache__/win32.cpython-311.pyc +0 -0
  47. quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-311.pyc +0 -0
  48. quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-311.pyc +0 -0
  49. quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-311.pyc +0 -0
  50. quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-311.pyc +0 -0
  51. quarchpy/debug/__pycache__/SystemTest.cpython-311.pyc +0 -0
  52. quarchpy/debug/__pycache__/__init__.cpython-311.pyc +0 -0
  53. quarchpy/debug/__pycache__/module_debug.cpython-311.pyc +0 -0
  54. quarchpy/debug/__pycache__/simple_terminal.cpython-311.pyc +0 -0
  55. quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-311.pyc +0 -0
  56. quarchpy/debug/__pycache__/versionCompare.cpython-311.pyc +0 -0
  57. quarchpy/device/__pycache__/__init__.cpython-311.pyc +0 -0
  58. quarchpy/device/__pycache__/device.cpython-311.pyc +0 -0
  59. quarchpy/device/__pycache__/quarchArray.cpython-311.pyc +0 -0
  60. quarchpy/device/__pycache__/quarchPPM.cpython-311.pyc +0 -0
  61. quarchpy/device/__pycache__/quarchQPS.cpython-311.pyc +0 -0
  62. quarchpy/device/__pycache__/scanDevices.cpython-311.pyc +0 -0
  63. quarchpy/device/device.py +2 -0
  64. quarchpy/device/quarchPPM.py +2 -2
  65. quarchpy/device/quarchQPS.py +95 -86
  66. quarchpy/device/scanDevices.py +13 -3
  67. quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-311.pyc +0 -0
  68. quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-311.pyc +0 -0
  69. quarchpy/disk_test/__pycache__/__init__.cpython-311.pyc +0 -0
  70. quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-311.pyc +0 -0
  71. quarchpy/docs/CHANGES.rst +11 -1
  72. quarchpy/docs/_build/doctrees/CHANGES.doctree +0 -0
  73. quarchpy/docs/_build/doctrees/environment.pickle +0 -0
  74. quarchpy/docs/_build/doctrees/index.doctree +0 -0
  75. quarchpy/docs/_build/doctrees/readme.doctree +0 -0
  76. quarchpy/docs/_build/doctrees/source/changelog.doctree +0 -0
  77. quarchpy/docs/_build/doctrees/source/licenses.doctree +0 -0
  78. quarchpy/docs/_build/doctrees/source/modules.doctree +0 -0
  79. quarchpy/docs/_build/doctrees/source/quarchpy.calibration.doctree +0 -0
  80. quarchpy/docs/_build/doctrees/source/quarchpy.config_files.doctree +0 -0
  81. quarchpy/docs/_build/doctrees/source/quarchpy.connection_specific.doctree +0 -0
  82. quarchpy/docs/_build/doctrees/source/quarchpy.debug.doctree +0 -0
  83. quarchpy/docs/_build/doctrees/source/quarchpy.device.doctree +0 -0
  84. quarchpy/docs/_build/doctrees/source/quarchpy.disk_test.doctree +0 -0
  85. quarchpy/docs/_build/doctrees/source/quarchpy.doctree +0 -0
  86. quarchpy/docs/_build/doctrees/source/quarchpy.fio.doctree +0 -0
  87. quarchpy/docs/_build/doctrees/source/quarchpy.iometer.doctree +0 -0
  88. quarchpy/docs/_build/doctrees/source/quarchpy.qis.doctree +0 -0
  89. quarchpy/docs/_build/doctrees/source/quarchpy.qps.doctree +0 -0
  90. quarchpy/docs/_build/doctrees/source/quarchpy.user_interface.doctree +0 -0
  91. quarchpy/docs/_build/doctrees/source/quarchpy.utilities.doctree +0 -0
  92. quarchpy/docs/_build/doctrees/source/readme.doctree +0 -0
  93. quarchpy/docs/_build/html/.buildinfo +1 -1
  94. quarchpy/docs/_build/html/CHANGES.html +198 -156
  95. quarchpy/docs/_build/html/_sources/CHANGES.rst.txt +30 -0
  96. quarchpy/docs/_build/html/_static/alabaster.css +3 -1
  97. quarchpy/docs/_build/html/_static/basic.css +47 -27
  98. quarchpy/docs/_build/html/_static/doctools.js +107 -274
  99. quarchpy/docs/_build/html/_static/documentation_options.js +5 -4
  100. quarchpy/docs/_build/html/_static/language_data.js +2 -100
  101. quarchpy/docs/_build/html/_static/pygments.css +1 -0
  102. quarchpy/docs/_build/html/_static/searchtools.js +440 -395
  103. quarchpy/docs/_build/html/_static/sphinx_highlight.js +154 -0
  104. quarchpy/docs/_build/html/genindex.html +263 -87
  105. quarchpy/docs/_build/html/index.html +68 -63
  106. quarchpy/docs/_build/html/objects.inv +0 -0
  107. quarchpy/docs/_build/html/py-modindex.html +9 -11
  108. quarchpy/docs/_build/html/readme.html +26 -27
  109. quarchpy/docs/_build/html/search.html +8 -10
  110. quarchpy/docs/_build/html/searchindex.js +1 -1
  111. quarchpy/docs/_build/html/source/changelog.html +249 -201
  112. quarchpy/docs/_build/html/source/licenses.html +23 -24
  113. quarchpy/docs/_build/html/source/modules.html +24 -17
  114. quarchpy/docs/_build/html/source/quarchpy.calibration.html +44 -45
  115. quarchpy/docs/_build/html/source/quarchpy.config_files.html +25 -26
  116. quarchpy/docs/_build/html/source/quarchpy.connection_specific.html +239 -133
  117. quarchpy/docs/_build/html/source/quarchpy.debug.html +57 -54
  118. quarchpy/docs/_build/html/source/quarchpy.device.html +245 -211
  119. quarchpy/docs/_build/html/source/quarchpy.disk_test.html +75 -76
  120. quarchpy/docs/_build/html/source/quarchpy.fio.html +33 -34
  121. quarchpy/docs/_build/html/source/quarchpy.html +518 -61
  122. quarchpy/docs/_build/html/source/quarchpy.iometer.html +130 -44
  123. quarchpy/docs/_build/html/source/quarchpy.qis.html +420 -44
  124. quarchpy/docs/_build/html/source/quarchpy.qps.html +44 -43
  125. quarchpy/docs/_build/html/source/quarchpy.user_interface.html +70 -120
  126. quarchpy/docs/_build/html/source/quarchpy.utilities.html +39 -40
  127. quarchpy/docs/_build/html/source/readme.html +26 -27
  128. quarchpy/fio/__pycache__/FIO_interface.cpython-311.pyc +0 -0
  129. quarchpy/fio/__pycache__/__init__.cpython-311.pyc +0 -0
  130. quarchpy/fio/__pycache__/fioDiskFinder.cpython-311.pyc +0 -0
  131. quarchpy/iometer/__pycache__/__init__.cpython-311.pyc +0 -0
  132. quarchpy/iometer/__pycache__/gen_iometer_template.cpython-311.pyc +0 -0
  133. quarchpy/iometer/__pycache__/iometerFuncs.cpython-311.pyc +0 -0
  134. quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-311.pyc +0 -0
  135. quarchpy/qis/__pycache__/__init__.cpython-311.pyc +0 -0
  136. quarchpy/qis/__pycache__/qisFuncs.cpython-311.pyc +0 -0
  137. quarchpy/qis/qisFuncs.py +25 -42
  138. quarchpy/qps/__pycache__/__init__.cpython-311.pyc +0 -0
  139. quarchpy/qps/__pycache__/qpsFuncs.cpython-311.pyc +0 -0
  140. quarchpy/qps/qpsFuncs.py +18 -19
  141. quarchpy/user_interface/__pycache__/__init__.cpython-311.pyc +0 -0
  142. quarchpy/user_interface/__pycache__/user_interface.cpython-311.pyc +0 -0
  143. quarchpy/user_interface/user_interface.py +156 -137
  144. quarchpy/utilities/TestCenter.py +11 -16
  145. quarchpy/utilities/Version.py +50 -0
  146. quarchpy/utilities/__pycache__/TestCenter.cpython-311.pyc +0 -0
  147. quarchpy/utilities/__pycache__/TimeValue.cpython-311.pyc +0 -0
  148. quarchpy/utilities/__pycache__/Version.cpython-311.pyc +0 -0
  149. quarchpy/utilities/__pycache__/__init__.cpython-311.pyc +0 -0
  150. quarchpy/venv/.gitignore +2 -0
  151. quarchpy/venv/Include/Python-ast.h +535 -0
  152. quarchpy/venv/Include/Python.h +181 -0
  153. quarchpy/venv/Include/abstract.h +1396 -0
  154. quarchpy/venv/Include/asdl.h +45 -0
  155. quarchpy/venv/Include/ast.h +13 -0
  156. quarchpy/venv/Include/bitset.h +32 -0
  157. quarchpy/venv/Include/boolobject.h +36 -0
  158. quarchpy/venv/Include/bufferobject.h +33 -0
  159. quarchpy/venv/Include/bytearrayobject.h +57 -0
  160. quarchpy/venv/Include/bytes_methods.h +75 -0
  161. quarchpy/venv/Include/bytesobject.h +27 -0
  162. quarchpy/venv/Include/cStringIO.h +73 -0
  163. quarchpy/venv/Include/cellobject.h +28 -0
  164. quarchpy/venv/Include/ceval.h +154 -0
  165. quarchpy/venv/Include/classobject.h +83 -0
  166. quarchpy/venv/Include/cobject.h +89 -0
  167. quarchpy/venv/Include/code.h +116 -0
  168. quarchpy/venv/Include/codecs.h +212 -0
  169. quarchpy/venv/Include/compile.h +40 -0
  170. quarchpy/venv/Include/complexobject.h +66 -0
  171. quarchpy/venv/Include/datetime.h +239 -0
  172. quarchpy/venv/Include/descrobject.h +94 -0
  173. quarchpy/venv/Include/dictobject.h +160 -0
  174. quarchpy/venv/Include/dtoa.h +15 -0
  175. quarchpy/venv/Include/enumobject.h +17 -0
  176. quarchpy/venv/Include/errcode.h +37 -0
  177. quarchpy/venv/Include/eval.h +25 -0
  178. quarchpy/venv/Include/fileobject.h +97 -0
  179. quarchpy/venv/Include/floatobject.h +140 -0
  180. quarchpy/venv/Include/frameobject.h +89 -0
  181. quarchpy/venv/Include/funcobject.h +76 -0
  182. quarchpy/venv/Include/genobject.h +40 -0
  183. quarchpy/venv/Include/graminit.h +87 -0
  184. quarchpy/venv/Include/grammar.h +94 -0
  185. quarchpy/venv/Include/import.h +71 -0
  186. quarchpy/venv/Include/intobject.h +84 -0
  187. quarchpy/venv/Include/intrcheck.h +15 -0
  188. quarchpy/venv/Include/iterobject.h +23 -0
  189. quarchpy/venv/Include/listobject.h +68 -0
  190. quarchpy/venv/Include/longintrepr.h +103 -0
  191. quarchpy/venv/Include/longobject.h +135 -0
  192. quarchpy/venv/Include/marshal.h +25 -0
  193. quarchpy/venv/Include/memoryobject.h +74 -0
  194. quarchpy/venv/Include/metagrammar.h +18 -0
  195. quarchpy/venv/Include/methodobject.h +93 -0
  196. quarchpy/venv/Include/modsupport.h +134 -0
  197. quarchpy/venv/Include/moduleobject.h +24 -0
  198. quarchpy/venv/Include/node.h +41 -0
  199. quarchpy/venv/Include/object.h +1046 -0
  200. quarchpy/venv/Include/objimpl.h +369 -0
  201. quarchpy/venv/Include/opcode.h +171 -0
  202. quarchpy/venv/Include/osdefs.h +63 -0
  203. quarchpy/venv/Include/parsetok.h +64 -0
  204. quarchpy/venv/Include/patchlevel.h +43 -0
  205. quarchpy/venv/Include/pgen.h +18 -0
  206. quarchpy/venv/Include/pgenheaders.h +43 -0
  207. quarchpy/venv/Include/py_curses.h +177 -0
  208. quarchpy/venv/Include/pyarena.h +62 -0
  209. quarchpy/venv/Include/pycapsule.h +56 -0
  210. quarchpy/venv/Include/pyconfig.h +770 -0
  211. quarchpy/venv/Include/pyctype.h +31 -0
  212. quarchpy/venv/Include/pydebug.h +41 -0
  213. quarchpy/venv/Include/pyerrors.h +329 -0
  214. quarchpy/venv/Include/pyexpat.h +50 -0
  215. quarchpy/venv/Include/pyfpe.h +176 -0
  216. quarchpy/venv/Include/pygetopt.h +18 -0
  217. quarchpy/venv/Include/pymacconfig.h +102 -0
  218. quarchpy/venv/Include/pymactoolbox.h +232 -0
  219. quarchpy/venv/Include/pymath.h +214 -0
  220. quarchpy/venv/Include/pymem.h +122 -0
  221. quarchpy/venv/Include/pyport.h +950 -0
  222. quarchpy/venv/Include/pystate.h +200 -0
  223. quarchpy/venv/Include/pystrcmp.h +23 -0
  224. quarchpy/venv/Include/pystrtod.h +45 -0
  225. quarchpy/venv/Include/pythonrun.h +181 -0
  226. quarchpy/venv/Include/pythread.h +41 -0
  227. quarchpy/venv/Include/rangeobject.h +28 -0
  228. quarchpy/venv/Include/setobject.h +99 -0
  229. quarchpy/venv/Include/sliceobject.h +50 -0
  230. quarchpy/venv/Include/stringobject.h +210 -0
  231. quarchpy/venv/Include/structmember.h +99 -0
  232. quarchpy/venv/Include/structseq.h +41 -0
  233. quarchpy/venv/Include/symtable.h +98 -0
  234. quarchpy/venv/Include/sysmodule.h +31 -0
  235. quarchpy/venv/Include/timefuncs.h +26 -0
  236. quarchpy/venv/Include/token.h +85 -0
  237. quarchpy/venv/Include/traceback.h +31 -0
  238. quarchpy/venv/Include/tupleobject.h +61 -0
  239. quarchpy/venv/Include/ucnhash.h +33 -0
  240. quarchpy/venv/Include/unicodeobject.h +1413 -0
  241. quarchpy/venv/Include/warnings.h +23 -0
  242. quarchpy/venv/Include/weakrefobject.h +82 -0
  243. quarchpy/venv/Lib/os.py +742 -0
  244. quarchpy/venv/Lib/os.pyc +0 -0
  245. quarchpy/venv/Lib/site-packages/_virtualenv.pth +1 -0
  246. quarchpy/venv/Lib/site-packages/_virtualenv.py +130 -0
  247. quarchpy/venv/Lib/site-packages/_virtualenv.pyc +0 -0
  248. quarchpy/venv/Lib/site-packages/easy_install.py +5 -0
  249. quarchpy/venv/Lib/site-packages/pip/__init__.py +18 -0
  250. quarchpy/venv/Lib/site-packages/pip/__main__.py +26 -0
  251. quarchpy/venv/Lib/site-packages/pip/_internal/__init__.py +17 -0
  252. quarchpy/venv/Lib/site-packages/pip/_internal/build_env.py +242 -0
  253. quarchpy/venv/Lib/site-packages/pip/_internal/cache.py +346 -0
  254. quarchpy/venv/Lib/site-packages/pip/_internal/cli/__init__.py +4 -0
  255. quarchpy/venv/Lib/site-packages/pip/_internal/cli/autocompletion.py +164 -0
  256. quarchpy/venv/Lib/site-packages/pip/_internal/cli/base_command.py +260 -0
  257. quarchpy/venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py +971 -0
  258. quarchpy/venv/Lib/site-packages/pip/_internal/cli/command_context.py +36 -0
  259. quarchpy/venv/Lib/site-packages/pip/_internal/cli/main.py +75 -0
  260. quarchpy/venv/Lib/site-packages/pip/_internal/cli/main_parser.py +96 -0
  261. quarchpy/venv/Lib/site-packages/pip/_internal/cli/parser.py +285 -0
  262. quarchpy/venv/Lib/site-packages/pip/_internal/cli/progress_bars.py +280 -0
  263. quarchpy/venv/Lib/site-packages/pip/_internal/cli/req_command.py +436 -0
  264. quarchpy/venv/Lib/site-packages/pip/_internal/cli/spinners.py +173 -0
  265. quarchpy/venv/Lib/site-packages/pip/_internal/cli/status_codes.py +8 -0
  266. quarchpy/venv/Lib/site-packages/pip/_internal/commands/__init__.py +123 -0
  267. quarchpy/venv/Lib/site-packages/pip/_internal/commands/cache.py +234 -0
  268. quarchpy/venv/Lib/site-packages/pip/_internal/commands/check.py +51 -0
  269. quarchpy/venv/Lib/site-packages/pip/_internal/commands/completion.py +98 -0
  270. quarchpy/venv/Lib/site-packages/pip/_internal/commands/configuration.py +280 -0
  271. quarchpy/venv/Lib/site-packages/pip/_internal/commands/debug.py +230 -0
  272. quarchpy/venv/Lib/site-packages/pip/_internal/commands/download.py +143 -0
  273. quarchpy/venv/Lib/site-packages/pip/_internal/commands/freeze.py +116 -0
  274. quarchpy/venv/Lib/site-packages/pip/_internal/commands/hash.py +63 -0
  275. quarchpy/venv/Lib/site-packages/pip/_internal/commands/help.py +46 -0
  276. quarchpy/venv/Lib/site-packages/pip/_internal/commands/install.py +737 -0
  277. quarchpy/venv/Lib/site-packages/pip/_internal/commands/list.py +327 -0
  278. quarchpy/venv/Lib/site-packages/pip/_internal/commands/search.py +169 -0
  279. quarchpy/venv/Lib/site-packages/pip/_internal/commands/show.py +186 -0
  280. quarchpy/venv/Lib/site-packages/pip/_internal/commands/uninstall.py +95 -0
  281. quarchpy/venv/Lib/site-packages/pip/_internal/commands/wheel.py +198 -0
  282. quarchpy/venv/Lib/site-packages/pip/_internal/configuration.py +407 -0
  283. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/__init__.py +24 -0
  284. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/base.py +46 -0
  285. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/installed.py +25 -0
  286. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/sdist.py +105 -0
  287. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/wheel.py +37 -0
  288. quarchpy/venv/Lib/site-packages/pip/_internal/exceptions.py +391 -0
  289. quarchpy/venv/Lib/site-packages/pip/_internal/index/__init__.py +2 -0
  290. quarchpy/venv/Lib/site-packages/pip/_internal/index/collector.py +667 -0
  291. quarchpy/venv/Lib/site-packages/pip/_internal/index/package_finder.py +1015 -0
  292. quarchpy/venv/Lib/site-packages/pip/_internal/locations.py +193 -0
  293. quarchpy/venv/Lib/site-packages/pip/_internal/main.py +16 -0
  294. quarchpy/venv/Lib/site-packages/pip/_internal/models/__init__.py +2 -0
  295. quarchpy/venv/Lib/site-packages/pip/_internal/models/candidate.py +39 -0
  296. quarchpy/venv/Lib/site-packages/pip/_internal/models/direct_url.py +243 -0
  297. quarchpy/venv/Lib/site-packages/pip/_internal/models/format_control.py +92 -0
  298. quarchpy/venv/Lib/site-packages/pip/_internal/models/index.py +34 -0
  299. quarchpy/venv/Lib/site-packages/pip/_internal/models/link.py +246 -0
  300. quarchpy/venv/Lib/site-packages/pip/_internal/models/scheme.py +31 -0
  301. quarchpy/venv/Lib/site-packages/pip/_internal/models/search_scope.py +135 -0
  302. quarchpy/venv/Lib/site-packages/pip/_internal/models/selection_prefs.py +50 -0
  303. quarchpy/venv/Lib/site-packages/pip/_internal/models/target_python.py +117 -0
  304. quarchpy/venv/Lib/site-packages/pip/_internal/models/wheel.py +78 -0
  305. quarchpy/venv/Lib/site-packages/pip/_internal/network/__init__.py +2 -0
  306. quarchpy/venv/Lib/site-packages/pip/_internal/network/auth.py +310 -0
  307. quarchpy/venv/Lib/site-packages/pip/_internal/network/cache.py +79 -0
  308. quarchpy/venv/Lib/site-packages/pip/_internal/network/download.py +202 -0
  309. quarchpy/venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py +231 -0
  310. quarchpy/venv/Lib/site-packages/pip/_internal/network/session.py +428 -0
  311. quarchpy/venv/Lib/site-packages/pip/_internal/network/utils.py +97 -0
  312. quarchpy/venv/Lib/site-packages/pip/_internal/network/xmlrpc.py +53 -0
  313. quarchpy/venv/Lib/site-packages/pip/_internal/operations/__init__.py +0 -0
  314. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  315. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/metadata.py +38 -0
  316. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py +77 -0
  317. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/wheel.py +47 -0
  318. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py +113 -0
  319. quarchpy/venv/Lib/site-packages/pip/_internal/operations/check.py +155 -0
  320. quarchpy/venv/Lib/site-packages/pip/_internal/operations/freeze.py +277 -0
  321. quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/__init__.py +2 -0
  322. quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py +52 -0
  323. quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/legacy.py +130 -0
  324. quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/wheel.py +846 -0
  325. quarchpy/venv/Lib/site-packages/pip/_internal/operations/prepare.py +608 -0
  326. quarchpy/venv/Lib/site-packages/pip/_internal/pyproject.py +196 -0
  327. quarchpy/venv/Lib/site-packages/pip/_internal/req/__init__.py +103 -0
  328. quarchpy/venv/Lib/site-packages/pip/_internal/req/constructors.py +476 -0
  329. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_file.py +574 -0
  330. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_install.py +907 -0
  331. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_set.py +204 -0
  332. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_tracker.py +151 -0
  333. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_uninstall.py +657 -0
  334. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/__init__.py +0 -0
  335. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/base.py +21 -0
  336. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  337. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +473 -0
  338. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  339. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +156 -0
  340. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +604 -0
  341. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +504 -0
  342. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +101 -0
  343. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +174 -0
  344. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +84 -0
  345. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +201 -0
  346. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +296 -0
  347. quarchpy/venv/Lib/site-packages/pip/_internal/self_outdated_check.py +197 -0
  348. quarchpy/venv/Lib/site-packages/pip/_internal/utils/__init__.py +0 -0
  349. quarchpy/venv/Lib/site-packages/pip/_internal/utils/appdirs.py +44 -0
  350. quarchpy/venv/Lib/site-packages/pip/_internal/utils/compat.py +293 -0
  351. quarchpy/venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +178 -0
  352. quarchpy/venv/Lib/site-packages/pip/_internal/utils/datetime.py +14 -0
  353. quarchpy/venv/Lib/site-packages/pip/_internal/utils/deprecation.py +104 -0
  354. quarchpy/venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +126 -0
  355. quarchpy/venv/Lib/site-packages/pip/_internal/utils/distutils_args.py +48 -0
  356. quarchpy/venv/Lib/site-packages/pip/_internal/utils/encoding.py +41 -0
  357. quarchpy/venv/Lib/site-packages/pip/_internal/utils/entrypoints.py +31 -0
  358. quarchpy/venv/Lib/site-packages/pip/_internal/utils/filesystem.py +224 -0
  359. quarchpy/venv/Lib/site-packages/pip/_internal/utils/filetypes.py +26 -0
  360. quarchpy/venv/Lib/site-packages/pip/_internal/utils/glibc.py +98 -0
  361. quarchpy/venv/Lib/site-packages/pip/_internal/utils/hashes.py +169 -0
  362. quarchpy/venv/Lib/site-packages/pip/_internal/utils/inject_securetransport.py +36 -0
  363. quarchpy/venv/Lib/site-packages/pip/_internal/utils/logging.py +399 -0
  364. quarchpy/venv/Lib/site-packages/pip/_internal/utils/misc.py +962 -0
  365. quarchpy/venv/Lib/site-packages/pip/_internal/utils/models.py +44 -0
  366. quarchpy/venv/Lib/site-packages/pip/_internal/utils/packaging.py +95 -0
  367. quarchpy/venv/Lib/site-packages/pip/_internal/utils/parallel.py +107 -0
  368. quarchpy/venv/Lib/site-packages/pip/_internal/utils/pkg_resources.py +44 -0
  369. quarchpy/venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py +181 -0
  370. quarchpy/venv/Lib/site-packages/pip/_internal/utils/subprocess.py +299 -0
  371. quarchpy/venv/Lib/site-packages/pip/_internal/utils/temp_dir.py +284 -0
  372. quarchpy/venv/Lib/site-packages/pip/_internal/utils/typing.py +38 -0
  373. quarchpy/venv/Lib/site-packages/pip/_internal/utils/unpacking.py +281 -0
  374. quarchpy/venv/Lib/site-packages/pip/_internal/utils/urls.py +55 -0
  375. quarchpy/venv/Lib/site-packages/pip/_internal/utils/virtualenv.py +119 -0
  376. quarchpy/venv/Lib/site-packages/pip/_internal/utils/wheel.py +225 -0
  377. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/__init__.py +15 -0
  378. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/bazaar.py +123 -0
  379. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/git.py +454 -0
  380. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/mercurial.py +172 -0
  381. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/subversion.py +340 -0
  382. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +735 -0
  383. quarchpy/venv/Lib/site-packages/pip/_internal/wheel_builder.py +362 -0
  384. quarchpy/venv/Lib/site-packages/pip/_vendor/__init__.py +114 -0
  385. quarchpy/venv/Lib/site-packages/pip/_vendor/appdirs.py +633 -0
  386. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +11 -0
  387. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +57 -0
  388. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +133 -0
  389. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +39 -0
  390. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +2 -0
  391. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +146 -0
  392. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +33 -0
  393. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/compat.py +29 -0
  394. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +376 -0
  395. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +80 -0
  396. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +135 -0
  397. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +188 -0
  398. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +29 -0
  399. quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/__init__.py +3 -0
  400. quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/__main__.py +12 -0
  401. quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem +4606 -0
  402. quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/core.py +60 -0
  403. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/__init__.py +39 -0
  404. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/big5freq.py +386 -0
  405. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/big5prober.py +47 -0
  406. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/chardistribution.py +233 -0
  407. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py +106 -0
  408. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/charsetprober.py +145 -0
  409. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py +1 -0
  410. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py +85 -0
  411. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py +88 -0
  412. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/compat.py +34 -0
  413. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/cp949prober.py +49 -0
  414. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/enums.py +76 -0
  415. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/escprober.py +101 -0
  416. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/escsm.py +246 -0
  417. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py +92 -0
  418. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py +195 -0
  419. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euckrprober.py +47 -0
  420. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py +387 -0
  421. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euctwprober.py +46 -0
  422. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py +283 -0
  423. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py +46 -0
  424. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py +292 -0
  425. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/jisfreq.py +325 -0
  426. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/jpcntx.py +233 -0
  427. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +228 -0
  428. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langcyrillicmodel.py +333 -0
  429. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py +225 -0
  430. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py +200 -0
  431. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py +225 -0
  432. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py +199 -0
  433. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py +193 -0
  434. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/latin1prober.py +145 -0
  435. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py +91 -0
  436. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +54 -0
  437. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/mbcssm.py +572 -0
  438. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py +132 -0
  439. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +73 -0
  440. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/sjisprober.py +92 -0
  441. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/universaldetector.py +286 -0
  442. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/utf8prober.py +82 -0
  443. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/version.py +9 -0
  444. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/__init__.py +6 -0
  445. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/ansi.py +102 -0
  446. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py +258 -0
  447. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/initialise.py +80 -0
  448. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/win32.py +152 -0
  449. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/winterm.py +169 -0
  450. quarchpy/venv/Lib/site-packages/pip/_vendor/contextlib2.py +518 -0
  451. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/__init__.py +23 -0
  452. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py +6 -0
  453. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py +41 -0
  454. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py +764 -0
  455. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg +84 -0
  456. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py +786 -0
  457. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py +2607 -0
  458. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/compat.py +1120 -0
  459. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/database.py +1339 -0
  460. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/index.py +516 -0
  461. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/locators.py +1302 -0
  462. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/manifest.py +393 -0
  463. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/markers.py +131 -0
  464. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/metadata.py +1056 -0
  465. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/resources.py +355 -0
  466. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/scripts.py +419 -0
  467. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/t32.exe +0 -0
  468. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/t64.exe +0 -0
  469. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/util.py +1761 -0
  470. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/version.py +736 -0
  471. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/w32.exe +0 -0
  472. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/w64.exe +0 -0
  473. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/wheel.py +1018 -0
  474. quarchpy/venv/Lib/site-packages/pip/_vendor/distro.py +1230 -0
  475. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/__init__.py +35 -0
  476. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py +289 -0
  477. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py +918 -0
  478. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py +1735 -0
  479. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py +5 -0
  480. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py +40 -0
  481. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py +67 -0
  482. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_utils.py +159 -0
  483. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/constants.py +2946 -0
  484. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py +0 -0
  485. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py +29 -0
  486. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/base.py +12 -0
  487. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py +73 -0
  488. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py +93 -0
  489. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py +207 -0
  490. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py +916 -0
  491. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py +38 -0
  492. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/html5parser.py +2795 -0
  493. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/serializer.py +409 -0
  494. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py +30 -0
  495. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py +54 -0
  496. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/sax.py +50 -0
  497. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py +88 -0
  498. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/base.py +417 -0
  499. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/dom.py +239 -0
  500. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree.py +343 -0
  501. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py +392 -0
  502. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py +154 -0
  503. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/base.py +252 -0
  504. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/dom.py +43 -0
  505. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree.py +131 -0
  506. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py +215 -0
  507. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py +69 -0
  508. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/__init__.py +2 -0
  509. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/codec.py +118 -0
  510. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/compat.py +12 -0
  511. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/core.py +400 -0
  512. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/idnadata.py +2050 -0
  513. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/intranges.py +53 -0
  514. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/package_data.py +2 -0
  515. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/uts46data.py +8357 -0
  516. quarchpy/venv/Lib/site-packages/pip/_vendor/ipaddress.py +2420 -0
  517. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py +54 -0
  518. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/_version.py +1 -0
  519. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
  520. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/ext.py +191 -0
  521. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py +1063 -0
  522. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/__about__.py +27 -0
  523. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/__init__.py +26 -0
  524. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/_compat.py +38 -0
  525. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/_structures.py +86 -0
  526. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/_typing.py +48 -0
  527. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/markers.py +328 -0
  528. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/requirements.py +151 -0
  529. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py +864 -0
  530. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/tags.py +852 -0
  531. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/utils.py +67 -0
  532. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/version.py +556 -0
  533. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/__init__.py +6 -0
  534. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/_in_process.py +280 -0
  535. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/build.py +124 -0
  536. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/check.py +203 -0
  537. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/colorlog.py +115 -0
  538. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/compat.py +34 -0
  539. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/dirtools.py +44 -0
  540. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/envbuild.py +167 -0
  541. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/meta.py +92 -0
  542. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/wrappers.py +327 -0
  543. quarchpy/venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +3296 -0
  544. quarchpy/venv/Lib/site-packages/pip/_vendor/pkg_resources/py31compat.py +23 -0
  545. quarchpy/venv/Lib/site-packages/pip/_vendor/progress/__init__.py +177 -0
  546. quarchpy/venv/Lib/site-packages/pip/_vendor/progress/bar.py +91 -0
  547. quarchpy/venv/Lib/site-packages/pip/_vendor/progress/counter.py +41 -0
  548. quarchpy/venv/Lib/site-packages/pip/_vendor/progress/spinner.py +43 -0
  549. quarchpy/venv/Lib/site-packages/pip/_vendor/pyparsing.py +7107 -0
  550. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/__init__.py +144 -0
  551. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/__version__.py +14 -0
  552. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +42 -0
  553. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/adapters.py +533 -0
  554. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/api.py +161 -0
  555. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/auth.py +305 -0
  556. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/certs.py +18 -0
  557. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/compat.py +76 -0
  558. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/cookies.py +549 -0
  559. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/exceptions.py +123 -0
  560. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/help.py +119 -0
  561. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/hooks.py +34 -0
  562. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/models.py +956 -0
  563. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/packages.py +16 -0
  564. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/sessions.py +781 -0
  565. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/status_codes.py +123 -0
  566. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/structures.py +105 -0
  567. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/utils.py +988 -0
  568. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +26 -0
  569. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__init__.py +0 -0
  570. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py +6 -0
  571. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/providers.py +119 -0
  572. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +37 -0
  573. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py +454 -0
  574. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/structs.py +149 -0
  575. quarchpy/venv/Lib/site-packages/pip/_vendor/retrying.py +267 -0
  576. quarchpy/venv/Lib/site-packages/pip/_vendor/six.py +982 -0
  577. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/__init__.py +25 -0
  578. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/decoder.py +1057 -0
  579. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/encoder.py +304 -0
  580. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/ordered.py +15 -0
  581. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/tz.py +24 -0
  582. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/__init__.py +85 -0
  583. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/_collections.py +337 -0
  584. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/_version.py +2 -0
  585. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/connection.py +535 -0
  586. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +1067 -0
  587. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  588. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
  589. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  590. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
  591. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +396 -0
  592. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
  593. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +121 -0
  594. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +509 -0
  595. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +920 -0
  596. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
  597. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +313 -0
  598. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/fields.py +274 -0
  599. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
  600. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py +5 -0
  601. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  602. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
  603. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +1021 -0
  604. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py +22 -0
  605. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py +160 -0
  606. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +536 -0
  607. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/request.py +170 -0
  608. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/response.py +821 -0
  609. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
  610. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +150 -0
  611. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +56 -0
  612. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
  613. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/request.py +143 -0
  614. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
  615. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +601 -0
  616. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +474 -0
  617. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
  618. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +268 -0
  619. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/url.py +430 -0
  620. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +153 -0
  621. quarchpy/venv/Lib/site-packages/pip/_vendor/vendor.txt +24 -0
  622. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/__init__.py +342 -0
  623. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/labels.py +231 -0
  624. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/mklabels.py +59 -0
  625. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/tests.py +153 -0
  626. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py +325 -0
  627. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/INSTALLER +1 -0
  628. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/LICENSE.txt +20 -0
  629. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/METADATA +94 -0
  630. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/RECORD +812 -0
  631. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/WHEEL +6 -0
  632. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/entry_points.txt +5 -0
  633. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/top_level.txt +1 -0
  634. quarchpy/venv/Lib/site-packages/pip-20.3.4.virtualenv +0 -0
  635. quarchpy/venv/Lib/site-packages/pkg_resources/__init__.py +3296 -0
  636. quarchpy/venv/Lib/site-packages/pkg_resources/__init__.pyc +0 -0
  637. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/__init__.py +0 -0
  638. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/__init__.pyc +0 -0
  639. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/appdirs.py +608 -0
  640. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/appdirs.pyc +0 -0
  641. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.py +21 -0
  642. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.pyc +0 -0
  643. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py +14 -0
  644. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.pyc +0 -0
  645. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_compat.py +30 -0
  646. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_compat.pyc +0 -0
  647. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py +68 -0
  648. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.pyc +0 -0
  649. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.py +301 -0
  650. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.pyc +0 -0
  651. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py +127 -0
  652. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.pyc +0 -0
  653. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py +774 -0
  654. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.pyc +0 -0
  655. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/utils.py +14 -0
  656. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/version.py +393 -0
  657. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/version.pyc +0 -0
  658. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.py +5742 -0
  659. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.pyc +0 -0
  660. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/six.py +868 -0
  661. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/six.pyc +0 -0
  662. quarchpy/venv/Lib/site-packages/pkg_resources/extern/__init__.py +73 -0
  663. quarchpy/venv/Lib/site-packages/pkg_resources/extern/__init__.pyc +0 -0
  664. quarchpy/venv/Lib/site-packages/pkg_resources/py31compat.py +23 -0
  665. quarchpy/venv/Lib/site-packages/pkg_resources/py31compat.pyc +0 -0
  666. quarchpy/venv/Lib/site-packages/setuptools/__init__.py +245 -0
  667. quarchpy/venv/Lib/site-packages/setuptools/_deprecation_warning.py +7 -0
  668. quarchpy/venv/Lib/site-packages/setuptools/_imp.py +73 -0
  669. quarchpy/venv/Lib/site-packages/setuptools/_vendor/__init__.py +0 -0
  670. quarchpy/venv/Lib/site-packages/setuptools/_vendor/ordered_set.py +488 -0
  671. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/__about__.py +27 -0
  672. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +26 -0
  673. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/_compat.py +31 -0
  674. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/_structures.py +68 -0
  675. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/markers.py +296 -0
  676. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/requirements.py +138 -0
  677. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +749 -0
  678. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/tags.py +404 -0
  679. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/utils.py +57 -0
  680. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/version.py +420 -0
  681. quarchpy/venv/Lib/site-packages/setuptools/_vendor/pyparsing.py +5742 -0
  682. quarchpy/venv/Lib/site-packages/setuptools/_vendor/six.py +868 -0
  683. quarchpy/venv/Lib/site-packages/setuptools/archive_util.py +173 -0
  684. quarchpy/venv/Lib/site-packages/setuptools/build_meta.py +264 -0
  685. quarchpy/venv/Lib/site-packages/setuptools/cli-32.exe +0 -0
  686. quarchpy/venv/Lib/site-packages/setuptools/cli-64.exe +0 -0
  687. quarchpy/venv/Lib/site-packages/setuptools/cli.exe +0 -0
  688. quarchpy/venv/Lib/site-packages/setuptools/command/__init__.py +17 -0
  689. quarchpy/venv/Lib/site-packages/setuptools/command/alias.py +80 -0
  690. quarchpy/venv/Lib/site-packages/setuptools/command/bdist_egg.py +502 -0
  691. quarchpy/venv/Lib/site-packages/setuptools/command/bdist_rpm.py +43 -0
  692. quarchpy/venv/Lib/site-packages/setuptools/command/bdist_wininst.py +21 -0
  693. quarchpy/venv/Lib/site-packages/setuptools/command/build_clib.py +98 -0
  694. quarchpy/venv/Lib/site-packages/setuptools/command/build_ext.py +327 -0
  695. quarchpy/venv/Lib/site-packages/setuptools/command/build_py.py +270 -0
  696. quarchpy/venv/Lib/site-packages/setuptools/command/develop.py +221 -0
  697. quarchpy/venv/Lib/site-packages/setuptools/command/dist_info.py +36 -0
  698. quarchpy/venv/Lib/site-packages/setuptools/command/easy_install.py +2347 -0
  699. quarchpy/venv/Lib/site-packages/setuptools/command/egg_info.py +717 -0
  700. quarchpy/venv/Lib/site-packages/setuptools/command/install.py +125 -0
  701. quarchpy/venv/Lib/site-packages/setuptools/command/install_egg_info.py +62 -0
  702. quarchpy/venv/Lib/site-packages/setuptools/command/install_lib.py +121 -0
  703. quarchpy/venv/Lib/site-packages/setuptools/command/install_scripts.py +65 -0
  704. quarchpy/venv/Lib/site-packages/setuptools/command/launcher manifest.xml +15 -0
  705. quarchpy/venv/Lib/site-packages/setuptools/command/py36compat.py +136 -0
  706. quarchpy/venv/Lib/site-packages/setuptools/command/register.py +18 -0
  707. quarchpy/venv/Lib/site-packages/setuptools/command/rotate.py +66 -0
  708. quarchpy/venv/Lib/site-packages/setuptools/command/saveopts.py +22 -0
  709. quarchpy/venv/Lib/site-packages/setuptools/command/sdist.py +252 -0
  710. quarchpy/venv/Lib/site-packages/setuptools/command/setopt.py +149 -0
  711. quarchpy/venv/Lib/site-packages/setuptools/command/test.py +279 -0
  712. quarchpy/venv/Lib/site-packages/setuptools/command/upload.py +17 -0
  713. quarchpy/venv/Lib/site-packages/setuptools/command/upload_docs.py +206 -0
  714. quarchpy/venv/Lib/site-packages/setuptools/config.py +659 -0
  715. quarchpy/venv/Lib/site-packages/setuptools/dep_util.py +23 -0
  716. quarchpy/venv/Lib/site-packages/setuptools/depends.py +176 -0
  717. quarchpy/venv/Lib/site-packages/setuptools/dist.py +1274 -0
  718. quarchpy/venv/Lib/site-packages/setuptools/errors.py +16 -0
  719. quarchpy/venv/Lib/site-packages/setuptools/extension.py +57 -0
  720. quarchpy/venv/Lib/site-packages/setuptools/extern/__init__.py +73 -0
  721. quarchpy/venv/Lib/site-packages/setuptools/glob.py +174 -0
  722. quarchpy/venv/Lib/site-packages/setuptools/gui-32.exe +0 -0
  723. quarchpy/venv/Lib/site-packages/setuptools/gui-64.exe +0 -0
  724. quarchpy/venv/Lib/site-packages/setuptools/gui.exe +0 -0
  725. quarchpy/venv/Lib/site-packages/setuptools/installer.py +150 -0
  726. quarchpy/venv/Lib/site-packages/setuptools/launch.py +35 -0
  727. quarchpy/venv/Lib/site-packages/setuptools/lib2to3_ex.py +62 -0
  728. quarchpy/venv/Lib/site-packages/setuptools/monkey.py +179 -0
  729. quarchpy/venv/Lib/site-packages/setuptools/msvc.py +1679 -0
  730. quarchpy/venv/Lib/site-packages/setuptools/namespaces.py +107 -0
  731. quarchpy/venv/Lib/site-packages/setuptools/package_index.py +1136 -0
  732. quarchpy/venv/Lib/site-packages/setuptools/py27compat.py +60 -0
  733. quarchpy/venv/Lib/site-packages/setuptools/py31compat.py +32 -0
  734. quarchpy/venv/Lib/site-packages/setuptools/py33compat.py +59 -0
  735. quarchpy/venv/Lib/site-packages/setuptools/py34compat.py +13 -0
  736. quarchpy/venv/Lib/site-packages/setuptools/sandbox.py +491 -0
  737. quarchpy/venv/Lib/site-packages/setuptools/script (dev).tmpl +6 -0
  738. quarchpy/venv/Lib/site-packages/setuptools/script.tmpl +3 -0
  739. quarchpy/venv/Lib/site-packages/setuptools/site-patch.py +74 -0
  740. quarchpy/venv/Lib/site-packages/setuptools/ssl_support.py +260 -0
  741. quarchpy/venv/Lib/site-packages/setuptools/unicode_utils.py +44 -0
  742. quarchpy/venv/Lib/site-packages/setuptools/version.py +6 -0
  743. quarchpy/venv/Lib/site-packages/setuptools/wheel.py +220 -0
  744. quarchpy/venv/Lib/site-packages/setuptools/windows_support.py +29 -0
  745. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/INSTALLER +1 -0
  746. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/LICENSE +19 -0
  747. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/METADATA +86 -0
  748. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/RECORD +207 -0
  749. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/WHEEL +6 -0
  750. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/dependency_links.txt +2 -0
  751. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/entry_points.txt +69 -0
  752. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/top_level.txt +3 -0
  753. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/zip-safe +1 -0
  754. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.virtualenv +0 -0
  755. quarchpy/venv/Lib/site-packages/wheel/__init__.py +1 -0
  756. quarchpy/venv/Lib/site-packages/wheel/__main__.py +19 -0
  757. quarchpy/venv/Lib/site-packages/wheel/bdist_wheel.py +492 -0
  758. quarchpy/venv/Lib/site-packages/wheel/cli/__init__.py +88 -0
  759. quarchpy/venv/Lib/site-packages/wheel/cli/convert.py +269 -0
  760. quarchpy/venv/Lib/site-packages/wheel/cli/pack.py +82 -0
  761. quarchpy/venv/Lib/site-packages/wheel/cli/unpack.py +25 -0
  762. quarchpy/venv/Lib/site-packages/wheel/macosx_libfile.py +428 -0
  763. quarchpy/venv/Lib/site-packages/wheel/metadata.py +133 -0
  764. quarchpy/venv/Lib/site-packages/wheel/pkginfo.py +43 -0
  765. quarchpy/venv/Lib/site-packages/wheel/util.py +46 -0
  766. quarchpy/venv/Lib/site-packages/wheel/vendored/__init__.py +0 -0
  767. quarchpy/venv/Lib/site-packages/wheel/vendored/packaging/__init__.py +0 -0
  768. quarchpy/venv/Lib/site-packages/wheel/vendored/packaging/_typing.py +48 -0
  769. quarchpy/venv/Lib/site-packages/wheel/vendored/packaging/tags.py +866 -0
  770. quarchpy/venv/Lib/site-packages/wheel/wheelfile.py +181 -0
  771. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/INSTALLER +1 -0
  772. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/LICENSE.txt +22 -0
  773. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/METADATA +69 -0
  774. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/RECORD +49 -0
  775. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/WHEEL +6 -0
  776. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/entry_points.txt +6 -0
  777. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/top_level.txt +1 -0
  778. quarchpy/venv/Lib/site-packages/wheel-0.37.1.virtualenv +0 -0
  779. quarchpy/venv/Lib/site.py +190 -0
  780. quarchpy/venv/Lib/site.pyc +0 -0
  781. quarchpy/venv/Scripts/activate +83 -0
  782. quarchpy/venv/Scripts/activate.bat +39 -0
  783. quarchpy/venv/Scripts/activate.fish +100 -0
  784. quarchpy/venv/Scripts/activate.nu +41 -0
  785. quarchpy/venv/Scripts/activate.ps1 +60 -0
  786. quarchpy/venv/Scripts/activate_this.py +32 -0
  787. quarchpy/venv/Scripts/deactivate.bat +19 -0
  788. quarchpy/venv/Scripts/deactivate.nu +11 -0
  789. quarchpy/venv/Scripts/easy_install-2.7.exe +0 -0
  790. quarchpy/venv/Scripts/easy_install.exe +0 -0
  791. quarchpy/venv/Scripts/easy_install2.7.exe +0 -0
  792. quarchpy/venv/Scripts/easy_install2.exe +0 -0
  793. quarchpy/venv/Scripts/pip-2.7.exe +0 -0
  794. quarchpy/venv/Scripts/pip.exe +0 -0
  795. quarchpy/venv/Scripts/pip2.7.exe +0 -0
  796. quarchpy/venv/Scripts/pip2.exe +0 -0
  797. quarchpy/venv/Scripts/pydoc.bat +1 -0
  798. quarchpy/venv/Scripts/python.exe +0 -0
  799. quarchpy/venv/Scripts/python27.dll +0 -0
  800. quarchpy/venv/Scripts/pythonw.exe +0 -0
  801. quarchpy/venv/Scripts/wheel-2.7.exe +0 -0
  802. quarchpy/venv/Scripts/wheel.exe +0 -0
  803. quarchpy/venv/Scripts/wheel2.7.exe +0 -0
  804. quarchpy/venv/Scripts/wheel2.exe +0 -0
  805. quarchpy/venv/libs/_bsddb.lib +0 -0
  806. quarchpy/venv/libs/_ctypes.lib +0 -0
  807. quarchpy/venv/libs/_ctypes_test.lib +0 -0
  808. quarchpy/venv/libs/_elementtree.lib +0 -0
  809. quarchpy/venv/libs/_hashlib.lib +0 -0
  810. quarchpy/venv/libs/_msi.lib +0 -0
  811. quarchpy/venv/libs/_multiprocessing.lib +0 -0
  812. quarchpy/venv/libs/_socket.lib +0 -0
  813. quarchpy/venv/libs/_sqlite3.lib +0 -0
  814. quarchpy/venv/libs/_ssl.lib +0 -0
  815. quarchpy/venv/libs/_testcapi.lib +0 -0
  816. quarchpy/venv/libs/_tkinter.lib +0 -0
  817. quarchpy/venv/libs/bz2.lib +0 -0
  818. quarchpy/venv/libs/libpython27.a +0 -0
  819. quarchpy/venv/libs/pyexpat.lib +0 -0
  820. quarchpy/venv/libs/python27.lib +0 -0
  821. quarchpy/venv/libs/select.lib +0 -0
  822. quarchpy/venv/libs/unicodedata.lib +0 -0
  823. quarchpy/venv/libs/winsound.lib +0 -0
  824. quarchpy/venv/pyvenv.cfg +8 -0
  825. {quarchpy-2.1.13.dev1.dist-info → quarchpy-2.1.14.dist-info}/METADATA +12 -2
  826. quarchpy-2.1.14.dist-info/RECORD +1216 -0
  827. quarchpy/.idea/inspectionProfiles/Project_Default.xml +0 -26
  828. quarchpy/connection_specific/QPS/qps_lib/QuarchCommon-0.2.4.jar +0 -0
  829. quarchpy/connection_specific/connection_QIS.py.bak +0 -1821
  830. quarchpy/connection_specific/usb_libs/__pycache__/libusb1.cpython-311.pyc +0 -0
  831. quarchpy/connection_specific/usb_libs/__pycache__/usb1.cpython-311.pyc +0 -0
  832. quarchpy/debug/TextScanIP.py +0 -11
  833. quarchpy/device/device.py.bak +0 -504
  834. quarchpy/device/scanDevices.py.bak +0 -661
  835. quarchpy-2.1.13.dev1.dist-info/RECORD +0 -531
  836. {quarchpy-2.1.13.dev1.dist-info → quarchpy-2.1.14.dist-info}/WHEEL +0 -0
  837. {quarchpy-2.1.13.dev1.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