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.
Files changed (820) 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/__pycache__/StreamChannels.cpython-311.pyc +0 -0
  13. quarchpy/connection_specific/__pycache__/__init__.cpython-311.pyc +0 -0
  14. quarchpy/connection_specific/__pycache__/connection_QIS.cpython-311.pyc +0 -0
  15. quarchpy/connection_specific/__pycache__/connection_QPS.cpython-311.pyc +0 -0
  16. quarchpy/connection_specific/__pycache__/connection_ReST.cpython-311.pyc +0 -0
  17. quarchpy/connection_specific/__pycache__/connection_Serial.cpython-311.pyc +0 -0
  18. quarchpy/connection_specific/__pycache__/connection_TCP.cpython-311.pyc +0 -0
  19. quarchpy/connection_specific/__pycache__/connection_Telnet.cpython-311.pyc +0 -0
  20. quarchpy/connection_specific/__pycache__/connection_USB.cpython-311.pyc +0 -0
  21. quarchpy/connection_specific/__pycache__/connection_mDNS.cpython-311.pyc +0 -0
  22. quarchpy/connection_specific/connection_QIS.py +237 -320
  23. quarchpy/connection_specific/connection_ReST.py +26 -16
  24. quarchpy/connection_specific/connection_TCP.py +1 -1
  25. quarchpy/connection_specific/connection_mDNS.py +46 -0
  26. quarchpy/connection_specific/serial/__pycache__/__init__.cpython-311.pyc +0 -0
  27. quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-311.pyc +0 -0
  28. quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-311.pyc +0 -0
  29. quarchpy/connection_specific/serial/__pycache__/win32.cpython-311.pyc +0 -0
  30. quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-311.pyc +0 -0
  31. quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-311.pyc +0 -0
  32. quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-311.pyc +0 -0
  33. quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-311.pyc +0 -0
  34. quarchpy/debug/__pycache__/SystemTest.cpython-311.pyc +0 -0
  35. quarchpy/debug/__pycache__/__init__.cpython-311.pyc +0 -0
  36. quarchpy/debug/__pycache__/module_debug.cpython-311.pyc +0 -0
  37. quarchpy/debug/__pycache__/simple_terminal.cpython-311.pyc +0 -0
  38. quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-311.pyc +0 -0
  39. quarchpy/debug/__pycache__/versionCompare.cpython-311.pyc +0 -0
  40. quarchpy/device/__pycache__/__init__.cpython-311.pyc +0 -0
  41. quarchpy/device/__pycache__/device.cpython-311.pyc +0 -0
  42. quarchpy/device/__pycache__/quarchArray.cpython-311.pyc +0 -0
  43. quarchpy/device/__pycache__/quarchPPM.cpython-311.pyc +0 -0
  44. quarchpy/device/__pycache__/quarchQPS.cpython-311.pyc +0 -0
  45. quarchpy/device/__pycache__/scanDevices.cpython-311.pyc +0 -0
  46. quarchpy/device/quarchPPM.py +2 -2
  47. quarchpy/device/quarchQPS.py +95 -86
  48. quarchpy/device/scanDevices.py +13 -3
  49. quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-311.pyc +0 -0
  50. quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-311.pyc +0 -0
  51. quarchpy/disk_test/__pycache__/__init__.cpython-311.pyc +0 -0
  52. quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-311.pyc +0 -0
  53. quarchpy/docs/CHANGES.rst +11 -1
  54. quarchpy/docs/_build/doctrees/CHANGES.doctree +0 -0
  55. quarchpy/docs/_build/doctrees/environment.pickle +0 -0
  56. quarchpy/docs/_build/doctrees/index.doctree +0 -0
  57. quarchpy/docs/_build/doctrees/readme.doctree +0 -0
  58. quarchpy/docs/_build/doctrees/source/changelog.doctree +0 -0
  59. quarchpy/docs/_build/doctrees/source/licenses.doctree +0 -0
  60. quarchpy/docs/_build/doctrees/source/modules.doctree +0 -0
  61. quarchpy/docs/_build/doctrees/source/quarchpy.calibration.doctree +0 -0
  62. quarchpy/docs/_build/doctrees/source/quarchpy.config_files.doctree +0 -0
  63. quarchpy/docs/_build/doctrees/source/quarchpy.connection_specific.doctree +0 -0
  64. quarchpy/docs/_build/doctrees/source/quarchpy.debug.doctree +0 -0
  65. quarchpy/docs/_build/doctrees/source/quarchpy.device.doctree +0 -0
  66. quarchpy/docs/_build/doctrees/source/quarchpy.disk_test.doctree +0 -0
  67. quarchpy/docs/_build/doctrees/source/quarchpy.doctree +0 -0
  68. quarchpy/docs/_build/doctrees/source/quarchpy.fio.doctree +0 -0
  69. quarchpy/docs/_build/doctrees/source/quarchpy.iometer.doctree +0 -0
  70. quarchpy/docs/_build/doctrees/source/quarchpy.qis.doctree +0 -0
  71. quarchpy/docs/_build/doctrees/source/quarchpy.qps.doctree +0 -0
  72. quarchpy/docs/_build/doctrees/source/quarchpy.user_interface.doctree +0 -0
  73. quarchpy/docs/_build/doctrees/source/quarchpy.utilities.doctree +0 -0
  74. quarchpy/docs/_build/doctrees/source/readme.doctree +0 -0
  75. quarchpy/docs/_build/html/.buildinfo +1 -1
  76. quarchpy/docs/_build/html/CHANGES.html +198 -156
  77. quarchpy/docs/_build/html/_sources/CHANGES.rst.txt +30 -0
  78. quarchpy/docs/_build/html/_static/alabaster.css +3 -1
  79. quarchpy/docs/_build/html/_static/basic.css +47 -27
  80. quarchpy/docs/_build/html/_static/doctools.js +107 -274
  81. quarchpy/docs/_build/html/_static/documentation_options.js +5 -4
  82. quarchpy/docs/_build/html/_static/language_data.js +2 -100
  83. quarchpy/docs/_build/html/_static/pygments.css +1 -0
  84. quarchpy/docs/_build/html/_static/searchtools.js +440 -395
  85. quarchpy/docs/_build/html/_static/sphinx_highlight.js +154 -0
  86. quarchpy/docs/_build/html/genindex.html +263 -87
  87. quarchpy/docs/_build/html/index.html +68 -63
  88. quarchpy/docs/_build/html/objects.inv +0 -0
  89. quarchpy/docs/_build/html/py-modindex.html +9 -11
  90. quarchpy/docs/_build/html/readme.html +26 -27
  91. quarchpy/docs/_build/html/search.html +8 -10
  92. quarchpy/docs/_build/html/searchindex.js +1 -1
  93. quarchpy/docs/_build/html/source/changelog.html +249 -201
  94. quarchpy/docs/_build/html/source/licenses.html +23 -24
  95. quarchpy/docs/_build/html/source/modules.html +24 -17
  96. quarchpy/docs/_build/html/source/quarchpy.calibration.html +44 -45
  97. quarchpy/docs/_build/html/source/quarchpy.config_files.html +25 -26
  98. quarchpy/docs/_build/html/source/quarchpy.connection_specific.html +239 -133
  99. quarchpy/docs/_build/html/source/quarchpy.debug.html +57 -54
  100. quarchpy/docs/_build/html/source/quarchpy.device.html +245 -211
  101. quarchpy/docs/_build/html/source/quarchpy.disk_test.html +75 -76
  102. quarchpy/docs/_build/html/source/quarchpy.fio.html +33 -34
  103. quarchpy/docs/_build/html/source/quarchpy.html +518 -61
  104. quarchpy/docs/_build/html/source/quarchpy.iometer.html +130 -44
  105. quarchpy/docs/_build/html/source/quarchpy.qis.html +420 -44
  106. quarchpy/docs/_build/html/source/quarchpy.qps.html +44 -43
  107. quarchpy/docs/_build/html/source/quarchpy.user_interface.html +70 -120
  108. quarchpy/docs/_build/html/source/quarchpy.utilities.html +39 -40
  109. quarchpy/docs/_build/html/source/readme.html +26 -27
  110. quarchpy/fio/__pycache__/FIO_interface.cpython-311.pyc +0 -0
  111. quarchpy/fio/__pycache__/__init__.cpython-311.pyc +0 -0
  112. quarchpy/fio/__pycache__/fioDiskFinder.cpython-311.pyc +0 -0
  113. quarchpy/iometer/__pycache__/__init__.cpython-311.pyc +0 -0
  114. quarchpy/iometer/__pycache__/gen_iometer_template.cpython-311.pyc +0 -0
  115. quarchpy/iometer/__pycache__/iometerFuncs.cpython-311.pyc +0 -0
  116. quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-311.pyc +0 -0
  117. quarchpy/qis/__pycache__/__init__.cpython-311.pyc +0 -0
  118. quarchpy/qis/__pycache__/qisFuncs.cpython-311.pyc +0 -0
  119. quarchpy/qis/qisFuncs.py +25 -42
  120. quarchpy/qps/__pycache__/__init__.cpython-311.pyc +0 -0
  121. quarchpy/qps/__pycache__/qpsFuncs.cpython-311.pyc +0 -0
  122. quarchpy/qps/qpsFuncs.py +18 -19
  123. quarchpy/run.py +1 -1
  124. quarchpy/user_interface/__pycache__/__init__.cpython-311.pyc +0 -0
  125. quarchpy/user_interface/__pycache__/user_interface.cpython-311.pyc +0 -0
  126. quarchpy/utilities/TestCenter.py +1 -1
  127. quarchpy/utilities/Version.py +50 -0
  128. quarchpy/utilities/__pycache__/TestCenter.cpython-311.pyc +0 -0
  129. quarchpy/utilities/__pycache__/TimeValue.cpython-311.pyc +0 -0
  130. quarchpy/utilities/__pycache__/Version.cpython-311.pyc +0 -0
  131. quarchpy/utilities/__pycache__/__init__.cpython-311.pyc +0 -0
  132. quarchpy/venv/.gitignore +2 -0
  133. quarchpy/venv/Include/Python-ast.h +535 -0
  134. quarchpy/venv/Include/Python.h +181 -0
  135. quarchpy/venv/Include/abstract.h +1396 -0
  136. quarchpy/venv/Include/asdl.h +45 -0
  137. quarchpy/venv/Include/ast.h +13 -0
  138. quarchpy/venv/Include/bitset.h +32 -0
  139. quarchpy/venv/Include/boolobject.h +36 -0
  140. quarchpy/venv/Include/bufferobject.h +33 -0
  141. quarchpy/venv/Include/bytearrayobject.h +57 -0
  142. quarchpy/venv/Include/bytes_methods.h +75 -0
  143. quarchpy/venv/Include/bytesobject.h +27 -0
  144. quarchpy/venv/Include/cStringIO.h +73 -0
  145. quarchpy/venv/Include/cellobject.h +28 -0
  146. quarchpy/venv/Include/ceval.h +154 -0
  147. quarchpy/venv/Include/classobject.h +83 -0
  148. quarchpy/venv/Include/cobject.h +89 -0
  149. quarchpy/venv/Include/code.h +116 -0
  150. quarchpy/venv/Include/codecs.h +212 -0
  151. quarchpy/venv/Include/compile.h +40 -0
  152. quarchpy/venv/Include/complexobject.h +66 -0
  153. quarchpy/venv/Include/datetime.h +239 -0
  154. quarchpy/venv/Include/descrobject.h +94 -0
  155. quarchpy/venv/Include/dictobject.h +160 -0
  156. quarchpy/venv/Include/dtoa.h +15 -0
  157. quarchpy/venv/Include/enumobject.h +17 -0
  158. quarchpy/venv/Include/errcode.h +37 -0
  159. quarchpy/venv/Include/eval.h +25 -0
  160. quarchpy/venv/Include/fileobject.h +97 -0
  161. quarchpy/venv/Include/floatobject.h +140 -0
  162. quarchpy/venv/Include/frameobject.h +89 -0
  163. quarchpy/venv/Include/funcobject.h +76 -0
  164. quarchpy/venv/Include/genobject.h +40 -0
  165. quarchpy/venv/Include/graminit.h +87 -0
  166. quarchpy/venv/Include/grammar.h +94 -0
  167. quarchpy/venv/Include/import.h +71 -0
  168. quarchpy/venv/Include/intobject.h +84 -0
  169. quarchpy/venv/Include/intrcheck.h +15 -0
  170. quarchpy/venv/Include/iterobject.h +23 -0
  171. quarchpy/venv/Include/listobject.h +68 -0
  172. quarchpy/venv/Include/longintrepr.h +103 -0
  173. quarchpy/venv/Include/longobject.h +135 -0
  174. quarchpy/venv/Include/marshal.h +25 -0
  175. quarchpy/venv/Include/memoryobject.h +74 -0
  176. quarchpy/venv/Include/metagrammar.h +18 -0
  177. quarchpy/venv/Include/methodobject.h +93 -0
  178. quarchpy/venv/Include/modsupport.h +134 -0
  179. quarchpy/venv/Include/moduleobject.h +24 -0
  180. quarchpy/venv/Include/node.h +41 -0
  181. quarchpy/venv/Include/object.h +1046 -0
  182. quarchpy/venv/Include/objimpl.h +369 -0
  183. quarchpy/venv/Include/opcode.h +171 -0
  184. quarchpy/venv/Include/osdefs.h +63 -0
  185. quarchpy/venv/Include/parsetok.h +64 -0
  186. quarchpy/venv/Include/patchlevel.h +43 -0
  187. quarchpy/venv/Include/pgen.h +18 -0
  188. quarchpy/venv/Include/pgenheaders.h +43 -0
  189. quarchpy/venv/Include/py_curses.h +177 -0
  190. quarchpy/venv/Include/pyarena.h +62 -0
  191. quarchpy/venv/Include/pycapsule.h +56 -0
  192. quarchpy/venv/Include/pyconfig.h +770 -0
  193. quarchpy/venv/Include/pyctype.h +31 -0
  194. quarchpy/venv/Include/pydebug.h +41 -0
  195. quarchpy/venv/Include/pyerrors.h +329 -0
  196. quarchpy/venv/Include/pyexpat.h +50 -0
  197. quarchpy/venv/Include/pyfpe.h +176 -0
  198. quarchpy/venv/Include/pygetopt.h +18 -0
  199. quarchpy/venv/Include/pymacconfig.h +102 -0
  200. quarchpy/venv/Include/pymactoolbox.h +232 -0
  201. quarchpy/venv/Include/pymath.h +214 -0
  202. quarchpy/venv/Include/pymem.h +122 -0
  203. quarchpy/venv/Include/pyport.h +950 -0
  204. quarchpy/venv/Include/pystate.h +200 -0
  205. quarchpy/venv/Include/pystrcmp.h +23 -0
  206. quarchpy/venv/Include/pystrtod.h +45 -0
  207. quarchpy/venv/Include/pythonrun.h +181 -0
  208. quarchpy/venv/Include/pythread.h +41 -0
  209. quarchpy/venv/Include/rangeobject.h +28 -0
  210. quarchpy/venv/Include/setobject.h +99 -0
  211. quarchpy/venv/Include/sliceobject.h +50 -0
  212. quarchpy/venv/Include/stringobject.h +210 -0
  213. quarchpy/venv/Include/structmember.h +99 -0
  214. quarchpy/venv/Include/structseq.h +41 -0
  215. quarchpy/venv/Include/symtable.h +98 -0
  216. quarchpy/venv/Include/sysmodule.h +31 -0
  217. quarchpy/venv/Include/timefuncs.h +26 -0
  218. quarchpy/venv/Include/token.h +85 -0
  219. quarchpy/venv/Include/traceback.h +31 -0
  220. quarchpy/venv/Include/tupleobject.h +61 -0
  221. quarchpy/venv/Include/ucnhash.h +33 -0
  222. quarchpy/venv/Include/unicodeobject.h +1413 -0
  223. quarchpy/venv/Include/warnings.h +23 -0
  224. quarchpy/venv/Include/weakrefobject.h +82 -0
  225. quarchpy/venv/Lib/os.py +742 -0
  226. quarchpy/venv/Lib/os.pyc +0 -0
  227. quarchpy/venv/Lib/site-packages/_virtualenv.pth +1 -0
  228. quarchpy/venv/Lib/site-packages/_virtualenv.py +130 -0
  229. quarchpy/venv/Lib/site-packages/_virtualenv.pyc +0 -0
  230. quarchpy/venv/Lib/site-packages/easy_install.py +5 -0
  231. quarchpy/venv/Lib/site-packages/pip/__init__.py +18 -0
  232. quarchpy/venv/Lib/site-packages/pip/__main__.py +26 -0
  233. quarchpy/venv/Lib/site-packages/pip/_internal/__init__.py +17 -0
  234. quarchpy/venv/Lib/site-packages/pip/_internal/build_env.py +242 -0
  235. quarchpy/venv/Lib/site-packages/pip/_internal/cache.py +346 -0
  236. quarchpy/venv/Lib/site-packages/pip/_internal/cli/__init__.py +4 -0
  237. quarchpy/venv/Lib/site-packages/pip/_internal/cli/autocompletion.py +164 -0
  238. quarchpy/venv/Lib/site-packages/pip/_internal/cli/base_command.py +260 -0
  239. quarchpy/venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py +971 -0
  240. quarchpy/venv/Lib/site-packages/pip/_internal/cli/command_context.py +36 -0
  241. quarchpy/venv/Lib/site-packages/pip/_internal/cli/main.py +75 -0
  242. quarchpy/venv/Lib/site-packages/pip/_internal/cli/main_parser.py +96 -0
  243. quarchpy/venv/Lib/site-packages/pip/_internal/cli/parser.py +285 -0
  244. quarchpy/venv/Lib/site-packages/pip/_internal/cli/progress_bars.py +280 -0
  245. quarchpy/venv/Lib/site-packages/pip/_internal/cli/req_command.py +436 -0
  246. quarchpy/venv/Lib/site-packages/pip/_internal/cli/spinners.py +173 -0
  247. quarchpy/venv/Lib/site-packages/pip/_internal/cli/status_codes.py +8 -0
  248. quarchpy/venv/Lib/site-packages/pip/_internal/commands/__init__.py +123 -0
  249. quarchpy/venv/Lib/site-packages/pip/_internal/commands/cache.py +234 -0
  250. quarchpy/venv/Lib/site-packages/pip/_internal/commands/check.py +51 -0
  251. quarchpy/venv/Lib/site-packages/pip/_internal/commands/completion.py +98 -0
  252. quarchpy/venv/Lib/site-packages/pip/_internal/commands/configuration.py +280 -0
  253. quarchpy/venv/Lib/site-packages/pip/_internal/commands/debug.py +230 -0
  254. quarchpy/venv/Lib/site-packages/pip/_internal/commands/download.py +143 -0
  255. quarchpy/venv/Lib/site-packages/pip/_internal/commands/freeze.py +116 -0
  256. quarchpy/venv/Lib/site-packages/pip/_internal/commands/hash.py +63 -0
  257. quarchpy/venv/Lib/site-packages/pip/_internal/commands/help.py +46 -0
  258. quarchpy/venv/Lib/site-packages/pip/_internal/commands/install.py +737 -0
  259. quarchpy/venv/Lib/site-packages/pip/_internal/commands/list.py +327 -0
  260. quarchpy/venv/Lib/site-packages/pip/_internal/commands/search.py +169 -0
  261. quarchpy/venv/Lib/site-packages/pip/_internal/commands/show.py +186 -0
  262. quarchpy/venv/Lib/site-packages/pip/_internal/commands/uninstall.py +95 -0
  263. quarchpy/venv/Lib/site-packages/pip/_internal/commands/wheel.py +198 -0
  264. quarchpy/venv/Lib/site-packages/pip/_internal/configuration.py +407 -0
  265. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/__init__.py +24 -0
  266. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/base.py +46 -0
  267. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/installed.py +25 -0
  268. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/sdist.py +105 -0
  269. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/wheel.py +37 -0
  270. quarchpy/venv/Lib/site-packages/pip/_internal/exceptions.py +391 -0
  271. quarchpy/venv/Lib/site-packages/pip/_internal/index/__init__.py +2 -0
  272. quarchpy/venv/Lib/site-packages/pip/_internal/index/collector.py +667 -0
  273. quarchpy/venv/Lib/site-packages/pip/_internal/index/package_finder.py +1015 -0
  274. quarchpy/venv/Lib/site-packages/pip/_internal/locations.py +193 -0
  275. quarchpy/venv/Lib/site-packages/pip/_internal/main.py +16 -0
  276. quarchpy/venv/Lib/site-packages/pip/_internal/models/__init__.py +2 -0
  277. quarchpy/venv/Lib/site-packages/pip/_internal/models/candidate.py +39 -0
  278. quarchpy/venv/Lib/site-packages/pip/_internal/models/direct_url.py +243 -0
  279. quarchpy/venv/Lib/site-packages/pip/_internal/models/format_control.py +92 -0
  280. quarchpy/venv/Lib/site-packages/pip/_internal/models/index.py +34 -0
  281. quarchpy/venv/Lib/site-packages/pip/_internal/models/link.py +246 -0
  282. quarchpy/venv/Lib/site-packages/pip/_internal/models/scheme.py +31 -0
  283. quarchpy/venv/Lib/site-packages/pip/_internal/models/search_scope.py +135 -0
  284. quarchpy/venv/Lib/site-packages/pip/_internal/models/selection_prefs.py +50 -0
  285. quarchpy/venv/Lib/site-packages/pip/_internal/models/target_python.py +117 -0
  286. quarchpy/venv/Lib/site-packages/pip/_internal/models/wheel.py +78 -0
  287. quarchpy/venv/Lib/site-packages/pip/_internal/network/__init__.py +2 -0
  288. quarchpy/venv/Lib/site-packages/pip/_internal/network/auth.py +310 -0
  289. quarchpy/venv/Lib/site-packages/pip/_internal/network/cache.py +79 -0
  290. quarchpy/venv/Lib/site-packages/pip/_internal/network/download.py +202 -0
  291. quarchpy/venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py +231 -0
  292. quarchpy/venv/Lib/site-packages/pip/_internal/network/session.py +428 -0
  293. quarchpy/venv/Lib/site-packages/pip/_internal/network/utils.py +97 -0
  294. quarchpy/venv/Lib/site-packages/pip/_internal/network/xmlrpc.py +53 -0
  295. quarchpy/venv/Lib/site-packages/pip/_internal/operations/__init__.py +0 -0
  296. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  297. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/metadata.py +38 -0
  298. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py +77 -0
  299. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/wheel.py +47 -0
  300. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py +113 -0
  301. quarchpy/venv/Lib/site-packages/pip/_internal/operations/check.py +155 -0
  302. quarchpy/venv/Lib/site-packages/pip/_internal/operations/freeze.py +277 -0
  303. quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/__init__.py +2 -0
  304. quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py +52 -0
  305. quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/legacy.py +130 -0
  306. quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/wheel.py +846 -0
  307. quarchpy/venv/Lib/site-packages/pip/_internal/operations/prepare.py +608 -0
  308. quarchpy/venv/Lib/site-packages/pip/_internal/pyproject.py +196 -0
  309. quarchpy/venv/Lib/site-packages/pip/_internal/req/__init__.py +103 -0
  310. quarchpy/venv/Lib/site-packages/pip/_internal/req/constructors.py +476 -0
  311. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_file.py +574 -0
  312. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_install.py +907 -0
  313. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_set.py +204 -0
  314. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_tracker.py +151 -0
  315. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_uninstall.py +657 -0
  316. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/__init__.py +0 -0
  317. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/base.py +21 -0
  318. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  319. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +473 -0
  320. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  321. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +156 -0
  322. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +604 -0
  323. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +504 -0
  324. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +101 -0
  325. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +174 -0
  326. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +84 -0
  327. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +201 -0
  328. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +296 -0
  329. quarchpy/venv/Lib/site-packages/pip/_internal/self_outdated_check.py +197 -0
  330. quarchpy/venv/Lib/site-packages/pip/_internal/utils/__init__.py +0 -0
  331. quarchpy/venv/Lib/site-packages/pip/_internal/utils/appdirs.py +44 -0
  332. quarchpy/venv/Lib/site-packages/pip/_internal/utils/compat.py +293 -0
  333. quarchpy/venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +178 -0
  334. quarchpy/venv/Lib/site-packages/pip/_internal/utils/datetime.py +14 -0
  335. quarchpy/venv/Lib/site-packages/pip/_internal/utils/deprecation.py +104 -0
  336. quarchpy/venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +126 -0
  337. quarchpy/venv/Lib/site-packages/pip/_internal/utils/distutils_args.py +48 -0
  338. quarchpy/venv/Lib/site-packages/pip/_internal/utils/encoding.py +41 -0
  339. quarchpy/venv/Lib/site-packages/pip/_internal/utils/entrypoints.py +31 -0
  340. quarchpy/venv/Lib/site-packages/pip/_internal/utils/filesystem.py +224 -0
  341. quarchpy/venv/Lib/site-packages/pip/_internal/utils/filetypes.py +26 -0
  342. quarchpy/venv/Lib/site-packages/pip/_internal/utils/glibc.py +98 -0
  343. quarchpy/venv/Lib/site-packages/pip/_internal/utils/hashes.py +169 -0
  344. quarchpy/venv/Lib/site-packages/pip/_internal/utils/inject_securetransport.py +36 -0
  345. quarchpy/venv/Lib/site-packages/pip/_internal/utils/logging.py +399 -0
  346. quarchpy/venv/Lib/site-packages/pip/_internal/utils/misc.py +962 -0
  347. quarchpy/venv/Lib/site-packages/pip/_internal/utils/models.py +44 -0
  348. quarchpy/venv/Lib/site-packages/pip/_internal/utils/packaging.py +95 -0
  349. quarchpy/venv/Lib/site-packages/pip/_internal/utils/parallel.py +107 -0
  350. quarchpy/venv/Lib/site-packages/pip/_internal/utils/pkg_resources.py +44 -0
  351. quarchpy/venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py +181 -0
  352. quarchpy/venv/Lib/site-packages/pip/_internal/utils/subprocess.py +299 -0
  353. quarchpy/venv/Lib/site-packages/pip/_internal/utils/temp_dir.py +284 -0
  354. quarchpy/venv/Lib/site-packages/pip/_internal/utils/typing.py +38 -0
  355. quarchpy/venv/Lib/site-packages/pip/_internal/utils/unpacking.py +281 -0
  356. quarchpy/venv/Lib/site-packages/pip/_internal/utils/urls.py +55 -0
  357. quarchpy/venv/Lib/site-packages/pip/_internal/utils/virtualenv.py +119 -0
  358. quarchpy/venv/Lib/site-packages/pip/_internal/utils/wheel.py +225 -0
  359. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/__init__.py +15 -0
  360. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/bazaar.py +123 -0
  361. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/git.py +454 -0
  362. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/mercurial.py +172 -0
  363. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/subversion.py +340 -0
  364. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +735 -0
  365. quarchpy/venv/Lib/site-packages/pip/_internal/wheel_builder.py +362 -0
  366. quarchpy/venv/Lib/site-packages/pip/_vendor/__init__.py +114 -0
  367. quarchpy/venv/Lib/site-packages/pip/_vendor/appdirs.py +633 -0
  368. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +11 -0
  369. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +57 -0
  370. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +133 -0
  371. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +39 -0
  372. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +2 -0
  373. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +146 -0
  374. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +33 -0
  375. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/compat.py +29 -0
  376. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +376 -0
  377. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +80 -0
  378. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +135 -0
  379. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +188 -0
  380. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +29 -0
  381. quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/__init__.py +3 -0
  382. quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/__main__.py +12 -0
  383. quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem +4606 -0
  384. quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/core.py +60 -0
  385. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/__init__.py +39 -0
  386. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/big5freq.py +386 -0
  387. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/big5prober.py +47 -0
  388. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/chardistribution.py +233 -0
  389. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py +106 -0
  390. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/charsetprober.py +145 -0
  391. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py +1 -0
  392. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py +85 -0
  393. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py +88 -0
  394. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/compat.py +34 -0
  395. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/cp949prober.py +49 -0
  396. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/enums.py +76 -0
  397. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/escprober.py +101 -0
  398. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/escsm.py +246 -0
  399. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py +92 -0
  400. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py +195 -0
  401. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euckrprober.py +47 -0
  402. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py +387 -0
  403. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euctwprober.py +46 -0
  404. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py +283 -0
  405. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py +46 -0
  406. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py +292 -0
  407. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/jisfreq.py +325 -0
  408. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/jpcntx.py +233 -0
  409. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +228 -0
  410. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langcyrillicmodel.py +333 -0
  411. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py +225 -0
  412. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py +200 -0
  413. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py +225 -0
  414. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py +199 -0
  415. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py +193 -0
  416. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/latin1prober.py +145 -0
  417. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py +91 -0
  418. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +54 -0
  419. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/mbcssm.py +572 -0
  420. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py +132 -0
  421. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +73 -0
  422. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/sjisprober.py +92 -0
  423. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/universaldetector.py +286 -0
  424. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/utf8prober.py +82 -0
  425. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/version.py +9 -0
  426. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/__init__.py +6 -0
  427. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/ansi.py +102 -0
  428. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py +258 -0
  429. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/initialise.py +80 -0
  430. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/win32.py +152 -0
  431. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/winterm.py +169 -0
  432. quarchpy/venv/Lib/site-packages/pip/_vendor/contextlib2.py +518 -0
  433. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/__init__.py +23 -0
  434. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py +6 -0
  435. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py +41 -0
  436. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py +764 -0
  437. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg +84 -0
  438. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py +786 -0
  439. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py +2607 -0
  440. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/compat.py +1120 -0
  441. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/database.py +1339 -0
  442. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/index.py +516 -0
  443. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/locators.py +1302 -0
  444. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/manifest.py +393 -0
  445. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/markers.py +131 -0
  446. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/metadata.py +1056 -0
  447. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/resources.py +355 -0
  448. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/scripts.py +419 -0
  449. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/t32.exe +0 -0
  450. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/t64.exe +0 -0
  451. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/util.py +1761 -0
  452. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/version.py +736 -0
  453. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/w32.exe +0 -0
  454. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/w64.exe +0 -0
  455. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/wheel.py +1018 -0
  456. quarchpy/venv/Lib/site-packages/pip/_vendor/distro.py +1230 -0
  457. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/__init__.py +35 -0
  458. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py +289 -0
  459. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py +918 -0
  460. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py +1735 -0
  461. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py +5 -0
  462. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py +40 -0
  463. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py +67 -0
  464. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_utils.py +159 -0
  465. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/constants.py +2946 -0
  466. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py +0 -0
  467. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py +29 -0
  468. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/base.py +12 -0
  469. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py +73 -0
  470. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py +93 -0
  471. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py +207 -0
  472. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py +916 -0
  473. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py +38 -0
  474. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/html5parser.py +2795 -0
  475. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/serializer.py +409 -0
  476. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py +30 -0
  477. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py +54 -0
  478. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/sax.py +50 -0
  479. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py +88 -0
  480. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/base.py +417 -0
  481. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/dom.py +239 -0
  482. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree.py +343 -0
  483. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py +392 -0
  484. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py +154 -0
  485. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/base.py +252 -0
  486. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/dom.py +43 -0
  487. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree.py +131 -0
  488. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py +215 -0
  489. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py +69 -0
  490. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/__init__.py +2 -0
  491. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/codec.py +118 -0
  492. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/compat.py +12 -0
  493. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/core.py +400 -0
  494. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/idnadata.py +2050 -0
  495. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/intranges.py +53 -0
  496. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/package_data.py +2 -0
  497. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/uts46data.py +8357 -0
  498. quarchpy/venv/Lib/site-packages/pip/_vendor/ipaddress.py +2420 -0
  499. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py +54 -0
  500. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/_version.py +1 -0
  501. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
  502. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/ext.py +191 -0
  503. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py +1063 -0
  504. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/__about__.py +27 -0
  505. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/__init__.py +26 -0
  506. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/_compat.py +38 -0
  507. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/_structures.py +86 -0
  508. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/_typing.py +48 -0
  509. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/markers.py +328 -0
  510. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/requirements.py +151 -0
  511. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py +864 -0
  512. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/tags.py +852 -0
  513. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/utils.py +67 -0
  514. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/version.py +556 -0
  515. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/__init__.py +6 -0
  516. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/_in_process.py +280 -0
  517. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/build.py +124 -0
  518. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/check.py +203 -0
  519. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/colorlog.py +115 -0
  520. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/compat.py +34 -0
  521. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/dirtools.py +44 -0
  522. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/envbuild.py +167 -0
  523. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/meta.py +92 -0
  524. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/wrappers.py +327 -0
  525. quarchpy/venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +3296 -0
  526. quarchpy/venv/Lib/site-packages/pip/_vendor/pkg_resources/py31compat.py +23 -0
  527. quarchpy/venv/Lib/site-packages/pip/_vendor/progress/__init__.py +177 -0
  528. quarchpy/venv/Lib/site-packages/pip/_vendor/progress/bar.py +91 -0
  529. quarchpy/venv/Lib/site-packages/pip/_vendor/progress/counter.py +41 -0
  530. quarchpy/venv/Lib/site-packages/pip/_vendor/progress/spinner.py +43 -0
  531. quarchpy/venv/Lib/site-packages/pip/_vendor/pyparsing.py +7107 -0
  532. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/__init__.py +144 -0
  533. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/__version__.py +14 -0
  534. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +42 -0
  535. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/adapters.py +533 -0
  536. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/api.py +161 -0
  537. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/auth.py +305 -0
  538. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/certs.py +18 -0
  539. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/compat.py +76 -0
  540. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/cookies.py +549 -0
  541. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/exceptions.py +123 -0
  542. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/help.py +119 -0
  543. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/hooks.py +34 -0
  544. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/models.py +956 -0
  545. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/packages.py +16 -0
  546. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/sessions.py +781 -0
  547. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/status_codes.py +123 -0
  548. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/structures.py +105 -0
  549. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/utils.py +988 -0
  550. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +26 -0
  551. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__init__.py +0 -0
  552. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py +6 -0
  553. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/providers.py +119 -0
  554. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +37 -0
  555. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py +454 -0
  556. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/structs.py +149 -0
  557. quarchpy/venv/Lib/site-packages/pip/_vendor/retrying.py +267 -0
  558. quarchpy/venv/Lib/site-packages/pip/_vendor/six.py +982 -0
  559. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/__init__.py +25 -0
  560. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/decoder.py +1057 -0
  561. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/encoder.py +304 -0
  562. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/ordered.py +15 -0
  563. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/tz.py +24 -0
  564. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/__init__.py +85 -0
  565. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/_collections.py +337 -0
  566. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/_version.py +2 -0
  567. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/connection.py +535 -0
  568. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +1067 -0
  569. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  570. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
  571. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  572. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
  573. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +396 -0
  574. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
  575. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +121 -0
  576. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +509 -0
  577. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +920 -0
  578. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
  579. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +313 -0
  580. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/fields.py +274 -0
  581. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
  582. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py +5 -0
  583. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  584. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
  585. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +1021 -0
  586. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py +22 -0
  587. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py +160 -0
  588. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +536 -0
  589. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/request.py +170 -0
  590. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/response.py +821 -0
  591. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
  592. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +150 -0
  593. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +56 -0
  594. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
  595. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/request.py +143 -0
  596. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
  597. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +601 -0
  598. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +474 -0
  599. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
  600. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +268 -0
  601. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/url.py +430 -0
  602. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +153 -0
  603. quarchpy/venv/Lib/site-packages/pip/_vendor/vendor.txt +24 -0
  604. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/__init__.py +342 -0
  605. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/labels.py +231 -0
  606. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/mklabels.py +59 -0
  607. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/tests.py +153 -0
  608. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py +325 -0
  609. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/INSTALLER +1 -0
  610. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/LICENSE.txt +20 -0
  611. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/METADATA +94 -0
  612. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/RECORD +812 -0
  613. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/WHEEL +6 -0
  614. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/entry_points.txt +5 -0
  615. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/top_level.txt +1 -0
  616. quarchpy/venv/Lib/site-packages/pip-20.3.4.virtualenv +0 -0
  617. quarchpy/venv/Lib/site-packages/pkg_resources/__init__.py +3296 -0
  618. quarchpy/venv/Lib/site-packages/pkg_resources/__init__.pyc +0 -0
  619. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/__init__.py +0 -0
  620. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/__init__.pyc +0 -0
  621. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/appdirs.py +608 -0
  622. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/appdirs.pyc +0 -0
  623. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.py +21 -0
  624. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.pyc +0 -0
  625. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py +14 -0
  626. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.pyc +0 -0
  627. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_compat.py +30 -0
  628. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_compat.pyc +0 -0
  629. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py +68 -0
  630. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.pyc +0 -0
  631. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.py +301 -0
  632. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.pyc +0 -0
  633. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py +127 -0
  634. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.pyc +0 -0
  635. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py +774 -0
  636. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.pyc +0 -0
  637. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/utils.py +14 -0
  638. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/version.py +393 -0
  639. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/version.pyc +0 -0
  640. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.py +5742 -0
  641. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.pyc +0 -0
  642. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/six.py +868 -0
  643. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/six.pyc +0 -0
  644. quarchpy/venv/Lib/site-packages/pkg_resources/extern/__init__.py +73 -0
  645. quarchpy/venv/Lib/site-packages/pkg_resources/extern/__init__.pyc +0 -0
  646. quarchpy/venv/Lib/site-packages/pkg_resources/py31compat.py +23 -0
  647. quarchpy/venv/Lib/site-packages/pkg_resources/py31compat.pyc +0 -0
  648. quarchpy/venv/Lib/site-packages/setuptools/__init__.py +245 -0
  649. quarchpy/venv/Lib/site-packages/setuptools/_deprecation_warning.py +7 -0
  650. quarchpy/venv/Lib/site-packages/setuptools/_imp.py +73 -0
  651. quarchpy/venv/Lib/site-packages/setuptools/_vendor/__init__.py +0 -0
  652. quarchpy/venv/Lib/site-packages/setuptools/_vendor/ordered_set.py +488 -0
  653. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/__about__.py +27 -0
  654. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +26 -0
  655. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/_compat.py +31 -0
  656. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/_structures.py +68 -0
  657. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/markers.py +296 -0
  658. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/requirements.py +138 -0
  659. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +749 -0
  660. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/tags.py +404 -0
  661. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/utils.py +57 -0
  662. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/version.py +420 -0
  663. quarchpy/venv/Lib/site-packages/setuptools/_vendor/pyparsing.py +5742 -0
  664. quarchpy/venv/Lib/site-packages/setuptools/_vendor/six.py +868 -0
  665. quarchpy/venv/Lib/site-packages/setuptools/archive_util.py +173 -0
  666. quarchpy/venv/Lib/site-packages/setuptools/build_meta.py +264 -0
  667. quarchpy/venv/Lib/site-packages/setuptools/cli-32.exe +0 -0
  668. quarchpy/venv/Lib/site-packages/setuptools/cli-64.exe +0 -0
  669. quarchpy/venv/Lib/site-packages/setuptools/cli.exe +0 -0
  670. quarchpy/venv/Lib/site-packages/setuptools/command/__init__.py +17 -0
  671. quarchpy/venv/Lib/site-packages/setuptools/command/alias.py +80 -0
  672. quarchpy/venv/Lib/site-packages/setuptools/command/bdist_egg.py +502 -0
  673. quarchpy/venv/Lib/site-packages/setuptools/command/bdist_rpm.py +43 -0
  674. quarchpy/venv/Lib/site-packages/setuptools/command/bdist_wininst.py +21 -0
  675. quarchpy/venv/Lib/site-packages/setuptools/command/build_clib.py +98 -0
  676. quarchpy/venv/Lib/site-packages/setuptools/command/build_ext.py +327 -0
  677. quarchpy/venv/Lib/site-packages/setuptools/command/build_py.py +270 -0
  678. quarchpy/venv/Lib/site-packages/setuptools/command/develop.py +221 -0
  679. quarchpy/venv/Lib/site-packages/setuptools/command/dist_info.py +36 -0
  680. quarchpy/venv/Lib/site-packages/setuptools/command/easy_install.py +2347 -0
  681. quarchpy/venv/Lib/site-packages/setuptools/command/egg_info.py +717 -0
  682. quarchpy/venv/Lib/site-packages/setuptools/command/install.py +125 -0
  683. quarchpy/venv/Lib/site-packages/setuptools/command/install_egg_info.py +62 -0
  684. quarchpy/venv/Lib/site-packages/setuptools/command/install_lib.py +121 -0
  685. quarchpy/venv/Lib/site-packages/setuptools/command/install_scripts.py +65 -0
  686. quarchpy/venv/Lib/site-packages/setuptools/command/launcher manifest.xml +15 -0
  687. quarchpy/venv/Lib/site-packages/setuptools/command/py36compat.py +136 -0
  688. quarchpy/venv/Lib/site-packages/setuptools/command/register.py +18 -0
  689. quarchpy/venv/Lib/site-packages/setuptools/command/rotate.py +66 -0
  690. quarchpy/venv/Lib/site-packages/setuptools/command/saveopts.py +22 -0
  691. quarchpy/venv/Lib/site-packages/setuptools/command/sdist.py +252 -0
  692. quarchpy/venv/Lib/site-packages/setuptools/command/setopt.py +149 -0
  693. quarchpy/venv/Lib/site-packages/setuptools/command/test.py +279 -0
  694. quarchpy/venv/Lib/site-packages/setuptools/command/upload.py +17 -0
  695. quarchpy/venv/Lib/site-packages/setuptools/command/upload_docs.py +206 -0
  696. quarchpy/venv/Lib/site-packages/setuptools/config.py +659 -0
  697. quarchpy/venv/Lib/site-packages/setuptools/dep_util.py +23 -0
  698. quarchpy/venv/Lib/site-packages/setuptools/depends.py +176 -0
  699. quarchpy/venv/Lib/site-packages/setuptools/dist.py +1274 -0
  700. quarchpy/venv/Lib/site-packages/setuptools/errors.py +16 -0
  701. quarchpy/venv/Lib/site-packages/setuptools/extension.py +57 -0
  702. quarchpy/venv/Lib/site-packages/setuptools/extern/__init__.py +73 -0
  703. quarchpy/venv/Lib/site-packages/setuptools/glob.py +174 -0
  704. quarchpy/venv/Lib/site-packages/setuptools/gui-32.exe +0 -0
  705. quarchpy/venv/Lib/site-packages/setuptools/gui-64.exe +0 -0
  706. quarchpy/venv/Lib/site-packages/setuptools/gui.exe +0 -0
  707. quarchpy/venv/Lib/site-packages/setuptools/installer.py +150 -0
  708. quarchpy/venv/Lib/site-packages/setuptools/launch.py +35 -0
  709. quarchpy/venv/Lib/site-packages/setuptools/lib2to3_ex.py +62 -0
  710. quarchpy/venv/Lib/site-packages/setuptools/monkey.py +179 -0
  711. quarchpy/venv/Lib/site-packages/setuptools/msvc.py +1679 -0
  712. quarchpy/venv/Lib/site-packages/setuptools/namespaces.py +107 -0
  713. quarchpy/venv/Lib/site-packages/setuptools/package_index.py +1136 -0
  714. quarchpy/venv/Lib/site-packages/setuptools/py27compat.py +60 -0
  715. quarchpy/venv/Lib/site-packages/setuptools/py31compat.py +32 -0
  716. quarchpy/venv/Lib/site-packages/setuptools/py33compat.py +59 -0
  717. quarchpy/venv/Lib/site-packages/setuptools/py34compat.py +13 -0
  718. quarchpy/venv/Lib/site-packages/setuptools/sandbox.py +491 -0
  719. quarchpy/venv/Lib/site-packages/setuptools/script (dev).tmpl +6 -0
  720. quarchpy/venv/Lib/site-packages/setuptools/script.tmpl +3 -0
  721. quarchpy/venv/Lib/site-packages/setuptools/site-patch.py +74 -0
  722. quarchpy/venv/Lib/site-packages/setuptools/ssl_support.py +260 -0
  723. quarchpy/venv/Lib/site-packages/setuptools/unicode_utils.py +44 -0
  724. quarchpy/venv/Lib/site-packages/setuptools/version.py +6 -0
  725. quarchpy/venv/Lib/site-packages/setuptools/wheel.py +220 -0
  726. quarchpy/venv/Lib/site-packages/setuptools/windows_support.py +29 -0
  727. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/INSTALLER +1 -0
  728. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/LICENSE +19 -0
  729. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/METADATA +86 -0
  730. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/RECORD +207 -0
  731. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/WHEEL +6 -0
  732. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/dependency_links.txt +2 -0
  733. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/entry_points.txt +69 -0
  734. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/top_level.txt +3 -0
  735. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/zip-safe +1 -0
  736. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.virtualenv +0 -0
  737. quarchpy/venv/Lib/site-packages/wheel/__init__.py +1 -0
  738. quarchpy/venv/Lib/site-packages/wheel/__main__.py +19 -0
  739. quarchpy/venv/Lib/site-packages/wheel/bdist_wheel.py +492 -0
  740. quarchpy/venv/Lib/site-packages/wheel/cli/__init__.py +88 -0
  741. quarchpy/venv/Lib/site-packages/wheel/cli/convert.py +269 -0
  742. quarchpy/venv/Lib/site-packages/wheel/cli/pack.py +82 -0
  743. quarchpy/venv/Lib/site-packages/wheel/cli/unpack.py +25 -0
  744. quarchpy/venv/Lib/site-packages/wheel/macosx_libfile.py +428 -0
  745. quarchpy/venv/Lib/site-packages/wheel/metadata.py +133 -0
  746. quarchpy/venv/Lib/site-packages/wheel/pkginfo.py +43 -0
  747. quarchpy/venv/Lib/site-packages/wheel/util.py +46 -0
  748. quarchpy/venv/Lib/site-packages/wheel/vendored/__init__.py +0 -0
  749. quarchpy/venv/Lib/site-packages/wheel/vendored/packaging/__init__.py +0 -0
  750. quarchpy/venv/Lib/site-packages/wheel/vendored/packaging/_typing.py +48 -0
  751. quarchpy/venv/Lib/site-packages/wheel/vendored/packaging/tags.py +866 -0
  752. quarchpy/venv/Lib/site-packages/wheel/wheelfile.py +181 -0
  753. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/INSTALLER +1 -0
  754. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/LICENSE.txt +22 -0
  755. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/METADATA +69 -0
  756. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/RECORD +49 -0
  757. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/WHEEL +6 -0
  758. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/entry_points.txt +6 -0
  759. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/top_level.txt +1 -0
  760. quarchpy/venv/Lib/site-packages/wheel-0.37.1.virtualenv +0 -0
  761. quarchpy/venv/Lib/site.py +190 -0
  762. quarchpy/venv/Lib/site.pyc +0 -0
  763. quarchpy/venv/Scripts/activate +83 -0
  764. quarchpy/venv/Scripts/activate.bat +39 -0
  765. quarchpy/venv/Scripts/activate.fish +100 -0
  766. quarchpy/venv/Scripts/activate.nu +41 -0
  767. quarchpy/venv/Scripts/activate.ps1 +60 -0
  768. quarchpy/venv/Scripts/activate_this.py +32 -0
  769. quarchpy/venv/Scripts/deactivate.bat +19 -0
  770. quarchpy/venv/Scripts/deactivate.nu +11 -0
  771. quarchpy/venv/Scripts/easy_install-2.7.exe +0 -0
  772. quarchpy/venv/Scripts/easy_install.exe +0 -0
  773. quarchpy/venv/Scripts/easy_install2.7.exe +0 -0
  774. quarchpy/venv/Scripts/easy_install2.exe +0 -0
  775. quarchpy/venv/Scripts/pip-2.7.exe +0 -0
  776. quarchpy/venv/Scripts/pip.exe +0 -0
  777. quarchpy/venv/Scripts/pip2.7.exe +0 -0
  778. quarchpy/venv/Scripts/pip2.exe +0 -0
  779. quarchpy/venv/Scripts/pydoc.bat +1 -0
  780. quarchpy/venv/Scripts/python.exe +0 -0
  781. quarchpy/venv/Scripts/python27.dll +0 -0
  782. quarchpy/venv/Scripts/pythonw.exe +0 -0
  783. quarchpy/venv/Scripts/wheel-2.7.exe +0 -0
  784. quarchpy/venv/Scripts/wheel.exe +0 -0
  785. quarchpy/venv/Scripts/wheel2.7.exe +0 -0
  786. quarchpy/venv/Scripts/wheel2.exe +0 -0
  787. quarchpy/venv/libs/_bsddb.lib +0 -0
  788. quarchpy/venv/libs/_ctypes.lib +0 -0
  789. quarchpy/venv/libs/_ctypes_test.lib +0 -0
  790. quarchpy/venv/libs/_elementtree.lib +0 -0
  791. quarchpy/venv/libs/_hashlib.lib +0 -0
  792. quarchpy/venv/libs/_msi.lib +0 -0
  793. quarchpy/venv/libs/_multiprocessing.lib +0 -0
  794. quarchpy/venv/libs/_socket.lib +0 -0
  795. quarchpy/venv/libs/_sqlite3.lib +0 -0
  796. quarchpy/venv/libs/_ssl.lib +0 -0
  797. quarchpy/venv/libs/_testcapi.lib +0 -0
  798. quarchpy/venv/libs/_tkinter.lib +0 -0
  799. quarchpy/venv/libs/bz2.lib +0 -0
  800. quarchpy/venv/libs/libpython27.a +0 -0
  801. quarchpy/venv/libs/pyexpat.lib +0 -0
  802. quarchpy/venv/libs/python27.lib +0 -0
  803. quarchpy/venv/libs/select.lib +0 -0
  804. quarchpy/venv/libs/unicodedata.lib +0 -0
  805. quarchpy/venv/libs/winsound.lib +0 -0
  806. quarchpy/venv/pyvenv.cfg +8 -0
  807. {quarchpy-2.1.13.dev2.dist-info → quarchpy-2.1.14.dist-info}/METADATA +12 -2
  808. quarchpy-2.1.14.dist-info/RECORD +1216 -0
  809. quarchpy/.idea/inspectionProfiles/Project_Default.xml +0 -26
  810. quarchpy/connection_specific/connection_QIS.py.bak +0 -1821
  811. quarchpy/connection_specific/usb_libs/__pycache__/libusb1.cpython-311.pyc +0 -0
  812. quarchpy/connection_specific/usb_libs/__pycache__/usb1.cpython-311.pyc +0 -0
  813. quarchpy/debug/TextScanIP.py +0 -11
  814. quarchpy/device/device.py.bak +0 -504
  815. quarchpy/device/scanDevices.py.bak +0 -661
  816. quarchpy/user_interface/user_interface.py.bak +0 -749
  817. quarchpy/utilities/TestCenter.py.bak +0 -150
  818. quarchpy-2.1.13.dev2.dist-info/RECORD +0 -542
  819. {quarchpy-2.1.13.dev2.dist-info → quarchpy-2.1.14.dist-info}/WHEEL +0 -0
  820. {quarchpy-2.1.13.dev2.dist-info → quarchpy-2.1.14.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1018 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2013-2017 Vinay Sajip.
4
+ # Licensed to the Python Software Foundation under a contributor agreement.
5
+ # See LICENSE.txt and CONTRIBUTORS.txt.
6
+ #
7
+ from __future__ import unicode_literals
8
+
9
+ import base64
10
+ import codecs
11
+ import datetime
12
+ import distutils.util
13
+ from email import message_from_file
14
+ import hashlib
15
+ import imp
16
+ import json
17
+ import logging
18
+ import os
19
+ import posixpath
20
+ import re
21
+ import shutil
22
+ import sys
23
+ import tempfile
24
+ import zipfile
25
+
26
+ from . import __version__, DistlibException
27
+ from .compat import sysconfig, ZipFile, fsdecode, text_type, filter
28
+ from .database import InstalledDistribution
29
+ from .metadata import (Metadata, METADATA_FILENAME, WHEEL_METADATA_FILENAME,
30
+ LEGACY_METADATA_FILENAME)
31
+ from .util import (FileOperator, convert_path, CSVReader, CSVWriter, Cache,
32
+ cached_property, get_cache_base, read_exports, tempdir)
33
+ from .version import NormalizedVersion, UnsupportedVersionError
34
+
35
+ logger = logging.getLogger(__name__)
36
+
37
+ cache = None # created when needed
38
+
39
+ if hasattr(sys, 'pypy_version_info'): # pragma: no cover
40
+ IMP_PREFIX = 'pp'
41
+ elif sys.platform.startswith('java'): # pragma: no cover
42
+ IMP_PREFIX = 'jy'
43
+ elif sys.platform == 'cli': # pragma: no cover
44
+ IMP_PREFIX = 'ip'
45
+ else:
46
+ IMP_PREFIX = 'cp'
47
+
48
+ VER_SUFFIX = sysconfig.get_config_var('py_version_nodot')
49
+ if not VER_SUFFIX: # pragma: no cover
50
+ VER_SUFFIX = '%s%s' % sys.version_info[:2]
51
+ PYVER = 'py' + VER_SUFFIX
52
+ IMPVER = IMP_PREFIX + VER_SUFFIX
53
+
54
+ ARCH = distutils.util.get_platform().replace('-', '_').replace('.', '_')
55
+
56
+ ABI = sysconfig.get_config_var('SOABI')
57
+ if ABI and ABI.startswith('cpython-'):
58
+ ABI = ABI.replace('cpython-', 'cp')
59
+ else:
60
+ def _derive_abi():
61
+ parts = ['cp', VER_SUFFIX]
62
+ if sysconfig.get_config_var('Py_DEBUG'):
63
+ parts.append('d')
64
+ if sysconfig.get_config_var('WITH_PYMALLOC'):
65
+ parts.append('m')
66
+ if sysconfig.get_config_var('Py_UNICODE_SIZE') == 4:
67
+ parts.append('u')
68
+ return ''.join(parts)
69
+ ABI = _derive_abi()
70
+ del _derive_abi
71
+
72
+ FILENAME_RE = re.compile(r'''
73
+ (?P<nm>[^-]+)
74
+ -(?P<vn>\d+[^-]*)
75
+ (-(?P<bn>\d+[^-]*))?
76
+ -(?P<py>\w+\d+(\.\w+\d+)*)
77
+ -(?P<bi>\w+)
78
+ -(?P<ar>\w+(\.\w+)*)
79
+ \.whl$
80
+ ''', re.IGNORECASE | re.VERBOSE)
81
+
82
+ NAME_VERSION_RE = re.compile(r'''
83
+ (?P<nm>[^-]+)
84
+ -(?P<vn>\d+[^-]*)
85
+ (-(?P<bn>\d+[^-]*))?$
86
+ ''', re.IGNORECASE | re.VERBOSE)
87
+
88
+ SHEBANG_RE = re.compile(br'\s*#![^\r\n]*')
89
+ SHEBANG_DETAIL_RE = re.compile(br'^(\s*#!("[^"]+"|\S+))\s+(.*)$')
90
+ SHEBANG_PYTHON = b'#!python'
91
+ SHEBANG_PYTHONW = b'#!pythonw'
92
+
93
+ if os.sep == '/':
94
+ to_posix = lambda o: o
95
+ else:
96
+ to_posix = lambda o: o.replace(os.sep, '/')
97
+
98
+
99
+ class Mounter(object):
100
+ def __init__(self):
101
+ self.impure_wheels = {}
102
+ self.libs = {}
103
+
104
+ def add(self, pathname, extensions):
105
+ self.impure_wheels[pathname] = extensions
106
+ self.libs.update(extensions)
107
+
108
+ def remove(self, pathname):
109
+ extensions = self.impure_wheels.pop(pathname)
110
+ for k, v in extensions:
111
+ if k in self.libs:
112
+ del self.libs[k]
113
+
114
+ def find_module(self, fullname, path=None):
115
+ if fullname in self.libs:
116
+ result = self
117
+ else:
118
+ result = None
119
+ return result
120
+
121
+ def load_module(self, fullname):
122
+ if fullname in sys.modules:
123
+ result = sys.modules[fullname]
124
+ else:
125
+ if fullname not in self.libs:
126
+ raise ImportError('unable to find extension for %s' % fullname)
127
+ result = imp.load_dynamic(fullname, self.libs[fullname])
128
+ result.__loader__ = self
129
+ parts = fullname.rsplit('.', 1)
130
+ if len(parts) > 1:
131
+ result.__package__ = parts[0]
132
+ return result
133
+
134
+ _hook = Mounter()
135
+
136
+
137
+ class Wheel(object):
138
+ """
139
+ Class to build and install from Wheel files (PEP 427).
140
+ """
141
+
142
+ wheel_version = (1, 1)
143
+ hash_kind = 'sha256'
144
+
145
+ def __init__(self, filename=None, sign=False, verify=False):
146
+ """
147
+ Initialise an instance using a (valid) filename.
148
+ """
149
+ self.sign = sign
150
+ self.should_verify = verify
151
+ self.buildver = ''
152
+ self.pyver = [PYVER]
153
+ self.abi = ['none']
154
+ self.arch = ['any']
155
+ self.dirname = os.getcwd()
156
+ if filename is None:
157
+ self.name = 'dummy'
158
+ self.version = '0.1'
159
+ self._filename = self.filename
160
+ else:
161
+ m = NAME_VERSION_RE.match(filename)
162
+ if m:
163
+ info = m.groupdict('')
164
+ self.name = info['nm']
165
+ # Reinstate the local version separator
166
+ self.version = info['vn'].replace('_', '-')
167
+ self.buildver = info['bn']
168
+ self._filename = self.filename
169
+ else:
170
+ dirname, filename = os.path.split(filename)
171
+ m = FILENAME_RE.match(filename)
172
+ if not m:
173
+ raise DistlibException('Invalid name or '
174
+ 'filename: %r' % filename)
175
+ if dirname:
176
+ self.dirname = os.path.abspath(dirname)
177
+ self._filename = filename
178
+ info = m.groupdict('')
179
+ self.name = info['nm']
180
+ self.version = info['vn']
181
+ self.buildver = info['bn']
182
+ self.pyver = info['py'].split('.')
183
+ self.abi = info['bi'].split('.')
184
+ self.arch = info['ar'].split('.')
185
+
186
+ @property
187
+ def filename(self):
188
+ """
189
+ Build and return a filename from the various components.
190
+ """
191
+ if self.buildver:
192
+ buildver = '-' + self.buildver
193
+ else:
194
+ buildver = ''
195
+ pyver = '.'.join(self.pyver)
196
+ abi = '.'.join(self.abi)
197
+ arch = '.'.join(self.arch)
198
+ # replace - with _ as a local version separator
199
+ version = self.version.replace('-', '_')
200
+ return '%s-%s%s-%s-%s-%s.whl' % (self.name, version, buildver,
201
+ pyver, abi, arch)
202
+
203
+ @property
204
+ def exists(self):
205
+ path = os.path.join(self.dirname, self.filename)
206
+ return os.path.isfile(path)
207
+
208
+ @property
209
+ def tags(self):
210
+ for pyver in self.pyver:
211
+ for abi in self.abi:
212
+ for arch in self.arch:
213
+ yield pyver, abi, arch
214
+
215
+ @cached_property
216
+ def metadata(self):
217
+ pathname = os.path.join(self.dirname, self.filename)
218
+ name_ver = '%s-%s' % (self.name, self.version)
219
+ info_dir = '%s.dist-info' % name_ver
220
+ wrapper = codecs.getreader('utf-8')
221
+ with ZipFile(pathname, 'r') as zf:
222
+ wheel_metadata = self.get_wheel_metadata(zf)
223
+ wv = wheel_metadata['Wheel-Version'].split('.', 1)
224
+ file_version = tuple([int(i) for i in wv])
225
+ # if file_version < (1, 1):
226
+ # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME,
227
+ # LEGACY_METADATA_FILENAME]
228
+ # else:
229
+ # fns = [WHEEL_METADATA_FILENAME, METADATA_FILENAME]
230
+ fns = [WHEEL_METADATA_FILENAME, LEGACY_METADATA_FILENAME]
231
+ result = None
232
+ for fn in fns:
233
+ try:
234
+ metadata_filename = posixpath.join(info_dir, fn)
235
+ with zf.open(metadata_filename) as bf:
236
+ wf = wrapper(bf)
237
+ result = Metadata(fileobj=wf)
238
+ if result:
239
+ break
240
+ except KeyError:
241
+ pass
242
+ if not result:
243
+ raise ValueError('Invalid wheel, because metadata is '
244
+ 'missing: looked in %s' % ', '.join(fns))
245
+ return result
246
+
247
+ def get_wheel_metadata(self, zf):
248
+ name_ver = '%s-%s' % (self.name, self.version)
249
+ info_dir = '%s.dist-info' % name_ver
250
+ metadata_filename = posixpath.join(info_dir, 'WHEEL')
251
+ with zf.open(metadata_filename) as bf:
252
+ wf = codecs.getreader('utf-8')(bf)
253
+ message = message_from_file(wf)
254
+ return dict(message)
255
+
256
+ @cached_property
257
+ def info(self):
258
+ pathname = os.path.join(self.dirname, self.filename)
259
+ with ZipFile(pathname, 'r') as zf:
260
+ result = self.get_wheel_metadata(zf)
261
+ return result
262
+
263
+ def process_shebang(self, data):
264
+ m = SHEBANG_RE.match(data)
265
+ if m:
266
+ end = m.end()
267
+ shebang, data_after_shebang = data[:end], data[end:]
268
+ # Preserve any arguments after the interpreter
269
+ if b'pythonw' in shebang.lower():
270
+ shebang_python = SHEBANG_PYTHONW
271
+ else:
272
+ shebang_python = SHEBANG_PYTHON
273
+ m = SHEBANG_DETAIL_RE.match(shebang)
274
+ if m:
275
+ args = b' ' + m.groups()[-1]
276
+ else:
277
+ args = b''
278
+ shebang = shebang_python + args
279
+ data = shebang + data_after_shebang
280
+ else:
281
+ cr = data.find(b'\r')
282
+ lf = data.find(b'\n')
283
+ if cr < 0 or cr > lf:
284
+ term = b'\n'
285
+ else:
286
+ if data[cr:cr + 2] == b'\r\n':
287
+ term = b'\r\n'
288
+ else:
289
+ term = b'\r'
290
+ data = SHEBANG_PYTHON + term + data
291
+ return data
292
+
293
+ def get_hash(self, data, hash_kind=None):
294
+ if hash_kind is None:
295
+ hash_kind = self.hash_kind
296
+ try:
297
+ hasher = getattr(hashlib, hash_kind)
298
+ except AttributeError:
299
+ raise DistlibException('Unsupported hash algorithm: %r' % hash_kind)
300
+ result = hasher(data).digest()
301
+ result = base64.urlsafe_b64encode(result).rstrip(b'=').decode('ascii')
302
+ return hash_kind, result
303
+
304
+ def write_record(self, records, record_path, base):
305
+ records = list(records) # make a copy, as mutated
306
+ p = to_posix(os.path.relpath(record_path, base))
307
+ records.append((p, '', ''))
308
+ with CSVWriter(record_path) as writer:
309
+ for row in records:
310
+ writer.writerow(row)
311
+
312
+ def write_records(self, info, libdir, archive_paths):
313
+ records = []
314
+ distinfo, info_dir = info
315
+ hasher = getattr(hashlib, self.hash_kind)
316
+ for ap, p in archive_paths:
317
+ with open(p, 'rb') as f:
318
+ data = f.read()
319
+ digest = '%s=%s' % self.get_hash(data)
320
+ size = os.path.getsize(p)
321
+ records.append((ap, digest, size))
322
+
323
+ p = os.path.join(distinfo, 'RECORD')
324
+ self.write_record(records, p, libdir)
325
+ ap = to_posix(os.path.join(info_dir, 'RECORD'))
326
+ archive_paths.append((ap, p))
327
+
328
+ def build_zip(self, pathname, archive_paths):
329
+ with ZipFile(pathname, 'w', zipfile.ZIP_DEFLATED) as zf:
330
+ for ap, p in archive_paths:
331
+ logger.debug('Wrote %s to %s in wheel', p, ap)
332
+ zf.write(p, ap)
333
+
334
+ def build(self, paths, tags=None, wheel_version=None):
335
+ """
336
+ Build a wheel from files in specified paths, and use any specified tags
337
+ when determining the name of the wheel.
338
+ """
339
+ if tags is None:
340
+ tags = {}
341
+
342
+ libkey = list(filter(lambda o: o in paths, ('purelib', 'platlib')))[0]
343
+ if libkey == 'platlib':
344
+ is_pure = 'false'
345
+ default_pyver = [IMPVER]
346
+ default_abi = [ABI]
347
+ default_arch = [ARCH]
348
+ else:
349
+ is_pure = 'true'
350
+ default_pyver = [PYVER]
351
+ default_abi = ['none']
352
+ default_arch = ['any']
353
+
354
+ self.pyver = tags.get('pyver', default_pyver)
355
+ self.abi = tags.get('abi', default_abi)
356
+ self.arch = tags.get('arch', default_arch)
357
+
358
+ libdir = paths[libkey]
359
+
360
+ name_ver = '%s-%s' % (self.name, self.version)
361
+ data_dir = '%s.data' % name_ver
362
+ info_dir = '%s.dist-info' % name_ver
363
+
364
+ archive_paths = []
365
+
366
+ # First, stuff which is not in site-packages
367
+ for key in ('data', 'headers', 'scripts'):
368
+ if key not in paths:
369
+ continue
370
+ path = paths[key]
371
+ if os.path.isdir(path):
372
+ for root, dirs, files in os.walk(path):
373
+ for fn in files:
374
+ p = fsdecode(os.path.join(root, fn))
375
+ rp = os.path.relpath(p, path)
376
+ ap = to_posix(os.path.join(data_dir, key, rp))
377
+ archive_paths.append((ap, p))
378
+ if key == 'scripts' and not p.endswith('.exe'):
379
+ with open(p, 'rb') as f:
380
+ data = f.read()
381
+ data = self.process_shebang(data)
382
+ with open(p, 'wb') as f:
383
+ f.write(data)
384
+
385
+ # Now, stuff which is in site-packages, other than the
386
+ # distinfo stuff.
387
+ path = libdir
388
+ distinfo = None
389
+ for root, dirs, files in os.walk(path):
390
+ if root == path:
391
+ # At the top level only, save distinfo for later
392
+ # and skip it for now
393
+ for i, dn in enumerate(dirs):
394
+ dn = fsdecode(dn)
395
+ if dn.endswith('.dist-info'):
396
+ distinfo = os.path.join(root, dn)
397
+ del dirs[i]
398
+ break
399
+ assert distinfo, '.dist-info directory expected, not found'
400
+
401
+ for fn in files:
402
+ # comment out next suite to leave .pyc files in
403
+ if fsdecode(fn).endswith(('.pyc', '.pyo')):
404
+ continue
405
+ p = os.path.join(root, fn)
406
+ rp = to_posix(os.path.relpath(p, path))
407
+ archive_paths.append((rp, p))
408
+
409
+ # Now distinfo. Assumed to be flat, i.e. os.listdir is enough.
410
+ files = os.listdir(distinfo)
411
+ for fn in files:
412
+ if fn not in ('RECORD', 'INSTALLER', 'SHARED', 'WHEEL'):
413
+ p = fsdecode(os.path.join(distinfo, fn))
414
+ ap = to_posix(os.path.join(info_dir, fn))
415
+ archive_paths.append((ap, p))
416
+
417
+ wheel_metadata = [
418
+ 'Wheel-Version: %d.%d' % (wheel_version or self.wheel_version),
419
+ 'Generator: distlib %s' % __version__,
420
+ 'Root-Is-Purelib: %s' % is_pure,
421
+ ]
422
+ for pyver, abi, arch in self.tags:
423
+ wheel_metadata.append('Tag: %s-%s-%s' % (pyver, abi, arch))
424
+ p = os.path.join(distinfo, 'WHEEL')
425
+ with open(p, 'w') as f:
426
+ f.write('\n'.join(wheel_metadata))
427
+ ap = to_posix(os.path.join(info_dir, 'WHEEL'))
428
+ archive_paths.append((ap, p))
429
+
430
+ # sort the entries by archive path. Not needed by any spec, but it
431
+ # keeps the archive listing and RECORD tidier than they would otherwise
432
+ # be. Use the number of path segments to keep directory entries together,
433
+ # and keep the dist-info stuff at the end.
434
+ def sorter(t):
435
+ ap = t[0]
436
+ n = ap.count('/')
437
+ if '.dist-info' in ap:
438
+ n += 10000
439
+ return (n, ap)
440
+ archive_paths = sorted(archive_paths, key=sorter)
441
+
442
+ # Now, at last, RECORD.
443
+ # Paths in here are archive paths - nothing else makes sense.
444
+ self.write_records((distinfo, info_dir), libdir, archive_paths)
445
+ # Now, ready to build the zip file
446
+ pathname = os.path.join(self.dirname, self.filename)
447
+ self.build_zip(pathname, archive_paths)
448
+ return pathname
449
+
450
+ def skip_entry(self, arcname):
451
+ """
452
+ Determine whether an archive entry should be skipped when verifying
453
+ or installing.
454
+ """
455
+ # The signature file won't be in RECORD,
456
+ # and we don't currently don't do anything with it
457
+ # We also skip directories, as they won't be in RECORD
458
+ # either. See:
459
+ #
460
+ # https://github.com/pypa/wheel/issues/294
461
+ # https://github.com/pypa/wheel/issues/287
462
+ # https://github.com/pypa/wheel/pull/289
463
+ #
464
+ return arcname.endswith(('/', '/RECORD.jws'))
465
+
466
+ def install(self, paths, maker, **kwargs):
467
+ """
468
+ Install a wheel to the specified paths. If kwarg ``warner`` is
469
+ specified, it should be a callable, which will be called with two
470
+ tuples indicating the wheel version of this software and the wheel
471
+ version in the file, if there is a discrepancy in the versions.
472
+ This can be used to issue any warnings to raise any exceptions.
473
+ If kwarg ``lib_only`` is True, only the purelib/platlib files are
474
+ installed, and the headers, scripts, data and dist-info metadata are
475
+ not written. If kwarg ``bytecode_hashed_invalidation`` is True, written
476
+ bytecode will try to use file-hash based invalidation (PEP-552) on
477
+ supported interpreter versions (CPython 2.7+).
478
+
479
+ The return value is a :class:`InstalledDistribution` instance unless
480
+ ``options.lib_only`` is True, in which case the return value is ``None``.
481
+ """
482
+
483
+ dry_run = maker.dry_run
484
+ warner = kwargs.get('warner')
485
+ lib_only = kwargs.get('lib_only', False)
486
+ bc_hashed_invalidation = kwargs.get('bytecode_hashed_invalidation', False)
487
+
488
+ pathname = os.path.join(self.dirname, self.filename)
489
+ name_ver = '%s-%s' % (self.name, self.version)
490
+ data_dir = '%s.data' % name_ver
491
+ info_dir = '%s.dist-info' % name_ver
492
+
493
+ metadata_name = posixpath.join(info_dir, LEGACY_METADATA_FILENAME)
494
+ wheel_metadata_name = posixpath.join(info_dir, 'WHEEL')
495
+ record_name = posixpath.join(info_dir, 'RECORD')
496
+
497
+ wrapper = codecs.getreader('utf-8')
498
+
499
+ with ZipFile(pathname, 'r') as zf:
500
+ with zf.open(wheel_metadata_name) as bwf:
501
+ wf = wrapper(bwf)
502
+ message = message_from_file(wf)
503
+ wv = message['Wheel-Version'].split('.', 1)
504
+ file_version = tuple([int(i) for i in wv])
505
+ if (file_version != self.wheel_version) and warner:
506
+ warner(self.wheel_version, file_version)
507
+
508
+ if message['Root-Is-Purelib'] == 'true':
509
+ libdir = paths['purelib']
510
+ else:
511
+ libdir = paths['platlib']
512
+
513
+ records = {}
514
+ with zf.open(record_name) as bf:
515
+ with CSVReader(stream=bf) as reader:
516
+ for row in reader:
517
+ p = row[0]
518
+ records[p] = row
519
+
520
+ data_pfx = posixpath.join(data_dir, '')
521
+ info_pfx = posixpath.join(info_dir, '')
522
+ script_pfx = posixpath.join(data_dir, 'scripts', '')
523
+
524
+ # make a new instance rather than a copy of maker's,
525
+ # as we mutate it
526
+ fileop = FileOperator(dry_run=dry_run)
527
+ fileop.record = True # so we can rollback if needed
528
+
529
+ bc = not sys.dont_write_bytecode # Double negatives. Lovely!
530
+
531
+ outfiles = [] # for RECORD writing
532
+
533
+ # for script copying/shebang processing
534
+ workdir = tempfile.mkdtemp()
535
+ # set target dir later
536
+ # we default add_launchers to False, as the
537
+ # Python Launcher should be used instead
538
+ maker.source_dir = workdir
539
+ maker.target_dir = None
540
+ try:
541
+ for zinfo in zf.infolist():
542
+ arcname = zinfo.filename
543
+ if isinstance(arcname, text_type):
544
+ u_arcname = arcname
545
+ else:
546
+ u_arcname = arcname.decode('utf-8')
547
+ if self.skip_entry(u_arcname):
548
+ continue
549
+ row = records[u_arcname]
550
+ if row[2] and str(zinfo.file_size) != row[2]:
551
+ raise DistlibException('size mismatch for '
552
+ '%s' % u_arcname)
553
+ if row[1]:
554
+ kind, value = row[1].split('=', 1)
555
+ with zf.open(arcname) as bf:
556
+ data = bf.read()
557
+ _, digest = self.get_hash(data, kind)
558
+ if digest != value:
559
+ raise DistlibException('digest mismatch for '
560
+ '%s' % arcname)
561
+
562
+ if lib_only and u_arcname.startswith((info_pfx, data_pfx)):
563
+ logger.debug('lib_only: skipping %s', u_arcname)
564
+ continue
565
+ is_script = (u_arcname.startswith(script_pfx)
566
+ and not u_arcname.endswith('.exe'))
567
+
568
+ if u_arcname.startswith(data_pfx):
569
+ _, where, rp = u_arcname.split('/', 2)
570
+ outfile = os.path.join(paths[where], convert_path(rp))
571
+ else:
572
+ # meant for site-packages.
573
+ if u_arcname in (wheel_metadata_name, record_name):
574
+ continue
575
+ outfile = os.path.join(libdir, convert_path(u_arcname))
576
+ if not is_script:
577
+ with zf.open(arcname) as bf:
578
+ fileop.copy_stream(bf, outfile)
579
+ outfiles.append(outfile)
580
+ # Double check the digest of the written file
581
+ if not dry_run and row[1]:
582
+ with open(outfile, 'rb') as bf:
583
+ data = bf.read()
584
+ _, newdigest = self.get_hash(data, kind)
585
+ if newdigest != digest:
586
+ raise DistlibException('digest mismatch '
587
+ 'on write for '
588
+ '%s' % outfile)
589
+ if bc and outfile.endswith('.py'):
590
+ try:
591
+ pyc = fileop.byte_compile(outfile,
592
+ hashed_invalidation=bc_hashed_invalidation)
593
+ outfiles.append(pyc)
594
+ except Exception:
595
+ # Don't give up if byte-compilation fails,
596
+ # but log it and perhaps warn the user
597
+ logger.warning('Byte-compilation failed',
598
+ exc_info=True)
599
+ else:
600
+ fn = os.path.basename(convert_path(arcname))
601
+ workname = os.path.join(workdir, fn)
602
+ with zf.open(arcname) as bf:
603
+ fileop.copy_stream(bf, workname)
604
+
605
+ dn, fn = os.path.split(outfile)
606
+ maker.target_dir = dn
607
+ filenames = maker.make(fn)
608
+ fileop.set_executable_mode(filenames)
609
+ outfiles.extend(filenames)
610
+
611
+ if lib_only:
612
+ logger.debug('lib_only: returning None')
613
+ dist = None
614
+ else:
615
+ # Generate scripts
616
+
617
+ # Try to get pydist.json so we can see if there are
618
+ # any commands to generate. If this fails (e.g. because
619
+ # of a legacy wheel), log a warning but don't give up.
620
+ commands = None
621
+ file_version = self.info['Wheel-Version']
622
+ if file_version == '1.0':
623
+ # Use legacy info
624
+ ep = posixpath.join(info_dir, 'entry_points.txt')
625
+ try:
626
+ with zf.open(ep) as bwf:
627
+ epdata = read_exports(bwf)
628
+ commands = {}
629
+ for key in ('console', 'gui'):
630
+ k = '%s_scripts' % key
631
+ if k in epdata:
632
+ commands['wrap_%s' % key] = d = {}
633
+ for v in epdata[k].values():
634
+ s = '%s:%s' % (v.prefix, v.suffix)
635
+ if v.flags:
636
+ s += ' [%s]' % ','.join(v.flags)
637
+ d[v.name] = s
638
+ except Exception:
639
+ logger.warning('Unable to read legacy script '
640
+ 'metadata, so cannot generate '
641
+ 'scripts')
642
+ else:
643
+ try:
644
+ with zf.open(metadata_name) as bwf:
645
+ wf = wrapper(bwf)
646
+ commands = json.load(wf).get('extensions')
647
+ if commands:
648
+ commands = commands.get('python.commands')
649
+ except Exception:
650
+ logger.warning('Unable to read JSON metadata, so '
651
+ 'cannot generate scripts')
652
+ if commands:
653
+ console_scripts = commands.get('wrap_console', {})
654
+ gui_scripts = commands.get('wrap_gui', {})
655
+ if console_scripts or gui_scripts:
656
+ script_dir = paths.get('scripts', '')
657
+ if not os.path.isdir(script_dir):
658
+ raise ValueError('Valid script path not '
659
+ 'specified')
660
+ maker.target_dir = script_dir
661
+ for k, v in console_scripts.items():
662
+ script = '%s = %s' % (k, v)
663
+ filenames = maker.make(script)
664
+ fileop.set_executable_mode(filenames)
665
+
666
+ if gui_scripts:
667
+ options = {'gui': True }
668
+ for k, v in gui_scripts.items():
669
+ script = '%s = %s' % (k, v)
670
+ filenames = maker.make(script, options)
671
+ fileop.set_executable_mode(filenames)
672
+
673
+ p = os.path.join(libdir, info_dir)
674
+ dist = InstalledDistribution(p)
675
+
676
+ # Write SHARED
677
+ paths = dict(paths) # don't change passed in dict
678
+ del paths['purelib']
679
+ del paths['platlib']
680
+ paths['lib'] = libdir
681
+ p = dist.write_shared_locations(paths, dry_run)
682
+ if p:
683
+ outfiles.append(p)
684
+
685
+ # Write RECORD
686
+ dist.write_installed_files(outfiles, paths['prefix'],
687
+ dry_run)
688
+ return dist
689
+ except Exception: # pragma: no cover
690
+ logger.exception('installation failed.')
691
+ fileop.rollback()
692
+ raise
693
+ finally:
694
+ shutil.rmtree(workdir)
695
+
696
+ def _get_dylib_cache(self):
697
+ global cache
698
+ if cache is None:
699
+ # Use native string to avoid issues on 2.x: see Python #20140.
700
+ base = os.path.join(get_cache_base(), str('dylib-cache'),
701
+ '%s.%s' % sys.version_info[:2])
702
+ cache = Cache(base)
703
+ return cache
704
+
705
+ def _get_extensions(self):
706
+ pathname = os.path.join(self.dirname, self.filename)
707
+ name_ver = '%s-%s' % (self.name, self.version)
708
+ info_dir = '%s.dist-info' % name_ver
709
+ arcname = posixpath.join(info_dir, 'EXTENSIONS')
710
+ wrapper = codecs.getreader('utf-8')
711
+ result = []
712
+ with ZipFile(pathname, 'r') as zf:
713
+ try:
714
+ with zf.open(arcname) as bf:
715
+ wf = wrapper(bf)
716
+ extensions = json.load(wf)
717
+ cache = self._get_dylib_cache()
718
+ prefix = cache.prefix_to_dir(pathname)
719
+ cache_base = os.path.join(cache.base, prefix)
720
+ if not os.path.isdir(cache_base):
721
+ os.makedirs(cache_base)
722
+ for name, relpath in extensions.items():
723
+ dest = os.path.join(cache_base, convert_path(relpath))
724
+ if not os.path.exists(dest):
725
+ extract = True
726
+ else:
727
+ file_time = os.stat(dest).st_mtime
728
+ file_time = datetime.datetime.fromtimestamp(file_time)
729
+ info = zf.getinfo(relpath)
730
+ wheel_time = datetime.datetime(*info.date_time)
731
+ extract = wheel_time > file_time
732
+ if extract:
733
+ zf.extract(relpath, cache_base)
734
+ result.append((name, dest))
735
+ except KeyError:
736
+ pass
737
+ return result
738
+
739
+ def is_compatible(self):
740
+ """
741
+ Determine if a wheel is compatible with the running system.
742
+ """
743
+ return is_compatible(self)
744
+
745
+ def is_mountable(self):
746
+ """
747
+ Determine if a wheel is asserted as mountable by its metadata.
748
+ """
749
+ return True # for now - metadata details TBD
750
+
751
+ def mount(self, append=False):
752
+ pathname = os.path.abspath(os.path.join(self.dirname, self.filename))
753
+ if not self.is_compatible():
754
+ msg = 'Wheel %s not compatible with this Python.' % pathname
755
+ raise DistlibException(msg)
756
+ if not self.is_mountable():
757
+ msg = 'Wheel %s is marked as not mountable.' % pathname
758
+ raise DistlibException(msg)
759
+ if pathname in sys.path:
760
+ logger.debug('%s already in path', pathname)
761
+ else:
762
+ if append:
763
+ sys.path.append(pathname)
764
+ else:
765
+ sys.path.insert(0, pathname)
766
+ extensions = self._get_extensions()
767
+ if extensions:
768
+ if _hook not in sys.meta_path:
769
+ sys.meta_path.append(_hook)
770
+ _hook.add(pathname, extensions)
771
+
772
+ def unmount(self):
773
+ pathname = os.path.abspath(os.path.join(self.dirname, self.filename))
774
+ if pathname not in sys.path:
775
+ logger.debug('%s not in path', pathname)
776
+ else:
777
+ sys.path.remove(pathname)
778
+ if pathname in _hook.impure_wheels:
779
+ _hook.remove(pathname)
780
+ if not _hook.impure_wheels:
781
+ if _hook in sys.meta_path:
782
+ sys.meta_path.remove(_hook)
783
+
784
+ def verify(self):
785
+ pathname = os.path.join(self.dirname, self.filename)
786
+ name_ver = '%s-%s' % (self.name, self.version)
787
+ data_dir = '%s.data' % name_ver
788
+ info_dir = '%s.dist-info' % name_ver
789
+
790
+ metadata_name = posixpath.join(info_dir, LEGACY_METADATA_FILENAME)
791
+ wheel_metadata_name = posixpath.join(info_dir, 'WHEEL')
792
+ record_name = posixpath.join(info_dir, 'RECORD')
793
+
794
+ wrapper = codecs.getreader('utf-8')
795
+
796
+ with ZipFile(pathname, 'r') as zf:
797
+ with zf.open(wheel_metadata_name) as bwf:
798
+ wf = wrapper(bwf)
799
+ message = message_from_file(wf)
800
+ wv = message['Wheel-Version'].split('.', 1)
801
+ file_version = tuple([int(i) for i in wv])
802
+ # TODO version verification
803
+
804
+ records = {}
805
+ with zf.open(record_name) as bf:
806
+ with CSVReader(stream=bf) as reader:
807
+ for row in reader:
808
+ p = row[0]
809
+ records[p] = row
810
+
811
+ for zinfo in zf.infolist():
812
+ arcname = zinfo.filename
813
+ if isinstance(arcname, text_type):
814
+ u_arcname = arcname
815
+ else:
816
+ u_arcname = arcname.decode('utf-8')
817
+ # See issue #115: some wheels have .. in their entries, but
818
+ # in the filename ... e.g. __main__..py ! So the check is
819
+ # updated to look for .. in the directory portions
820
+ p = u_arcname.split('/')
821
+ if '..' in p:
822
+ raise DistlibException('invalid entry in '
823
+ 'wheel: %r' % u_arcname)
824
+
825
+ if self.skip_entry(u_arcname):
826
+ continue
827
+ row = records[u_arcname]
828
+ if row[2] and str(zinfo.file_size) != row[2]:
829
+ raise DistlibException('size mismatch for '
830
+ '%s' % u_arcname)
831
+ if row[1]:
832
+ kind, value = row[1].split('=', 1)
833
+ with zf.open(arcname) as bf:
834
+ data = bf.read()
835
+ _, digest = self.get_hash(data, kind)
836
+ if digest != value:
837
+ raise DistlibException('digest mismatch for '
838
+ '%s' % arcname)
839
+
840
+ def update(self, modifier, dest_dir=None, **kwargs):
841
+ """
842
+ Update the contents of a wheel in a generic way. The modifier should
843
+ be a callable which expects a dictionary argument: its keys are
844
+ archive-entry paths, and its values are absolute filesystem paths
845
+ where the contents the corresponding archive entries can be found. The
846
+ modifier is free to change the contents of the files pointed to, add
847
+ new entries and remove entries, before returning. This method will
848
+ extract the entire contents of the wheel to a temporary location, call
849
+ the modifier, and then use the passed (and possibly updated)
850
+ dictionary to write a new wheel. If ``dest_dir`` is specified, the new
851
+ wheel is written there -- otherwise, the original wheel is overwritten.
852
+
853
+ The modifier should return True if it updated the wheel, else False.
854
+ This method returns the same value the modifier returns.
855
+ """
856
+
857
+ def get_version(path_map, info_dir):
858
+ version = path = None
859
+ key = '%s/%s' % (info_dir, LEGACY_METADATA_FILENAME)
860
+ if key not in path_map:
861
+ key = '%s/PKG-INFO' % info_dir
862
+ if key in path_map:
863
+ path = path_map[key]
864
+ version = Metadata(path=path).version
865
+ return version, path
866
+
867
+ def update_version(version, path):
868
+ updated = None
869
+ try:
870
+ v = NormalizedVersion(version)
871
+ i = version.find('-')
872
+ if i < 0:
873
+ updated = '%s+1' % version
874
+ else:
875
+ parts = [int(s) for s in version[i + 1:].split('.')]
876
+ parts[-1] += 1
877
+ updated = '%s+%s' % (version[:i],
878
+ '.'.join(str(i) for i in parts))
879
+ except UnsupportedVersionError:
880
+ logger.debug('Cannot update non-compliant (PEP-440) '
881
+ 'version %r', version)
882
+ if updated:
883
+ md = Metadata(path=path)
884
+ md.version = updated
885
+ legacy = path.endswith(LEGACY_METADATA_FILENAME)
886
+ md.write(path=path, legacy=legacy)
887
+ logger.debug('Version updated from %r to %r', version,
888
+ updated)
889
+
890
+ pathname = os.path.join(self.dirname, self.filename)
891
+ name_ver = '%s-%s' % (self.name, self.version)
892
+ info_dir = '%s.dist-info' % name_ver
893
+ record_name = posixpath.join(info_dir, 'RECORD')
894
+ with tempdir() as workdir:
895
+ with ZipFile(pathname, 'r') as zf:
896
+ path_map = {}
897
+ for zinfo in zf.infolist():
898
+ arcname = zinfo.filename
899
+ if isinstance(arcname, text_type):
900
+ u_arcname = arcname
901
+ else:
902
+ u_arcname = arcname.decode('utf-8')
903
+ if u_arcname == record_name:
904
+ continue
905
+ if '..' in u_arcname:
906
+ raise DistlibException('invalid entry in '
907
+ 'wheel: %r' % u_arcname)
908
+ zf.extract(zinfo, workdir)
909
+ path = os.path.join(workdir, convert_path(u_arcname))
910
+ path_map[u_arcname] = path
911
+
912
+ # Remember the version.
913
+ original_version, _ = get_version(path_map, info_dir)
914
+ # Files extracted. Call the modifier.
915
+ modified = modifier(path_map, **kwargs)
916
+ if modified:
917
+ # Something changed - need to build a new wheel.
918
+ current_version, path = get_version(path_map, info_dir)
919
+ if current_version and (current_version == original_version):
920
+ # Add or update local version to signify changes.
921
+ update_version(current_version, path)
922
+ # Decide where the new wheel goes.
923
+ if dest_dir is None:
924
+ fd, newpath = tempfile.mkstemp(suffix='.whl',
925
+ prefix='wheel-update-',
926
+ dir=workdir)
927
+ os.close(fd)
928
+ else:
929
+ if not os.path.isdir(dest_dir):
930
+ raise DistlibException('Not a directory: %r' % dest_dir)
931
+ newpath = os.path.join(dest_dir, self.filename)
932
+ archive_paths = list(path_map.items())
933
+ distinfo = os.path.join(workdir, info_dir)
934
+ info = distinfo, info_dir
935
+ self.write_records(info, workdir, archive_paths)
936
+ self.build_zip(newpath, archive_paths)
937
+ if dest_dir is None:
938
+ shutil.copyfile(newpath, pathname)
939
+ return modified
940
+
941
+ def compatible_tags():
942
+ """
943
+ Return (pyver, abi, arch) tuples compatible with this Python.
944
+ """
945
+ versions = [VER_SUFFIX]
946
+ major = VER_SUFFIX[0]
947
+ for minor in range(sys.version_info[1] - 1, - 1, -1):
948
+ versions.append(''.join([major, str(minor)]))
949
+
950
+ abis = []
951
+ for suffix, _, _ in imp.get_suffixes():
952
+ if suffix.startswith('.abi'):
953
+ abis.append(suffix.split('.', 2)[1])
954
+ abis.sort()
955
+ if ABI != 'none':
956
+ abis.insert(0, ABI)
957
+ abis.append('none')
958
+ result = []
959
+
960
+ arches = [ARCH]
961
+ if sys.platform == 'darwin':
962
+ m = re.match(r'(\w+)_(\d+)_(\d+)_(\w+)$', ARCH)
963
+ if m:
964
+ name, major, minor, arch = m.groups()
965
+ minor = int(minor)
966
+ matches = [arch]
967
+ if arch in ('i386', 'ppc'):
968
+ matches.append('fat')
969
+ if arch in ('i386', 'ppc', 'x86_64'):
970
+ matches.append('fat3')
971
+ if arch in ('ppc64', 'x86_64'):
972
+ matches.append('fat64')
973
+ if arch in ('i386', 'x86_64'):
974
+ matches.append('intel')
975
+ if arch in ('i386', 'x86_64', 'intel', 'ppc', 'ppc64'):
976
+ matches.append('universal')
977
+ while minor >= 0:
978
+ for match in matches:
979
+ s = '%s_%s_%s_%s' % (name, major, minor, match)
980
+ if s != ARCH: # already there
981
+ arches.append(s)
982
+ minor -= 1
983
+
984
+ # Most specific - our Python version, ABI and arch
985
+ for abi in abis:
986
+ for arch in arches:
987
+ result.append((''.join((IMP_PREFIX, versions[0])), abi, arch))
988
+
989
+ # where no ABI / arch dependency, but IMP_PREFIX dependency
990
+ for i, version in enumerate(versions):
991
+ result.append((''.join((IMP_PREFIX, version)), 'none', 'any'))
992
+ if i == 0:
993
+ result.append((''.join((IMP_PREFIX, version[0])), 'none', 'any'))
994
+
995
+ # no IMP_PREFIX, ABI or arch dependency
996
+ for i, version in enumerate(versions):
997
+ result.append((''.join(('py', version)), 'none', 'any'))
998
+ if i == 0:
999
+ result.append((''.join(('py', version[0])), 'none', 'any'))
1000
+ return set(result)
1001
+
1002
+
1003
+ COMPATIBLE_TAGS = compatible_tags()
1004
+
1005
+ del compatible_tags
1006
+
1007
+
1008
+ def is_compatible(wheel, tags=None):
1009
+ if not isinstance(wheel, Wheel):
1010
+ wheel = Wheel(wheel) # assume it's a filename
1011
+ result = False
1012
+ if tags is None:
1013
+ tags = COMPATIBLE_TAGS
1014
+ for ver, abi, arch in tags:
1015
+ if ver in wheel.pyver and abi in wheel.abi and arch in wheel.arch:
1016
+ result = True
1017
+ break
1018
+ return result