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,1056 @@
1
+ # -*- coding: utf-8 -*-
2
+ #
3
+ # Copyright (C) 2012 The Python Software Foundation.
4
+ # See LICENSE.txt and CONTRIBUTORS.txt.
5
+ #
6
+ """Implementation of the Metadata for Python packages PEPs.
7
+
8
+ Supports all metadata formats (1.0, 1.1, 1.2, 1.3/2.1 and withdrawn 2.0).
9
+ """
10
+ from __future__ import unicode_literals
11
+
12
+ import codecs
13
+ from email import message_from_file
14
+ import json
15
+ import logging
16
+ import re
17
+
18
+
19
+ from . import DistlibException, __version__
20
+ from .compat import StringIO, string_types, text_type
21
+ from .markers import interpret
22
+ from .util import extract_by_key, get_extras
23
+ from .version import get_scheme, PEP440_VERSION_RE
24
+
25
+ logger = logging.getLogger(__name__)
26
+
27
+
28
+ class MetadataMissingError(DistlibException):
29
+ """A required metadata is missing"""
30
+
31
+
32
+ class MetadataConflictError(DistlibException):
33
+ """Attempt to read or write metadata fields that are conflictual."""
34
+
35
+
36
+ class MetadataUnrecognizedVersionError(DistlibException):
37
+ """Unknown metadata version number."""
38
+
39
+
40
+ class MetadataInvalidError(DistlibException):
41
+ """A metadata value is invalid"""
42
+
43
+ # public API of this module
44
+ __all__ = ['Metadata', 'PKG_INFO_ENCODING', 'PKG_INFO_PREFERRED_VERSION']
45
+
46
+ # Encoding used for the PKG-INFO files
47
+ PKG_INFO_ENCODING = 'utf-8'
48
+
49
+ # preferred version. Hopefully will be changed
50
+ # to 1.2 once PEP 345 is supported everywhere
51
+ PKG_INFO_PREFERRED_VERSION = '1.1'
52
+
53
+ _LINE_PREFIX_1_2 = re.compile('\n \\|')
54
+ _LINE_PREFIX_PRE_1_2 = re.compile('\n ')
55
+ _241_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform',
56
+ 'Summary', 'Description',
57
+ 'Keywords', 'Home-page', 'Author', 'Author-email',
58
+ 'License')
59
+
60
+ _314_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform',
61
+ 'Supported-Platform', 'Summary', 'Description',
62
+ 'Keywords', 'Home-page', 'Author', 'Author-email',
63
+ 'License', 'Classifier', 'Download-URL', 'Obsoletes',
64
+ 'Provides', 'Requires')
65
+
66
+ _314_MARKERS = ('Obsoletes', 'Provides', 'Requires', 'Classifier',
67
+ 'Download-URL')
68
+
69
+ _345_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform',
70
+ 'Supported-Platform', 'Summary', 'Description',
71
+ 'Keywords', 'Home-page', 'Author', 'Author-email',
72
+ 'Maintainer', 'Maintainer-email', 'License',
73
+ 'Classifier', 'Download-URL', 'Obsoletes-Dist',
74
+ 'Project-URL', 'Provides-Dist', 'Requires-Dist',
75
+ 'Requires-Python', 'Requires-External')
76
+
77
+ _345_MARKERS = ('Provides-Dist', 'Requires-Dist', 'Requires-Python',
78
+ 'Obsoletes-Dist', 'Requires-External', 'Maintainer',
79
+ 'Maintainer-email', 'Project-URL')
80
+
81
+ _426_FIELDS = ('Metadata-Version', 'Name', 'Version', 'Platform',
82
+ 'Supported-Platform', 'Summary', 'Description',
83
+ 'Keywords', 'Home-page', 'Author', 'Author-email',
84
+ 'Maintainer', 'Maintainer-email', 'License',
85
+ 'Classifier', 'Download-URL', 'Obsoletes-Dist',
86
+ 'Project-URL', 'Provides-Dist', 'Requires-Dist',
87
+ 'Requires-Python', 'Requires-External', 'Private-Version',
88
+ 'Obsoleted-By', 'Setup-Requires-Dist', 'Extension',
89
+ 'Provides-Extra')
90
+
91
+ _426_MARKERS = ('Private-Version', 'Provides-Extra', 'Obsoleted-By',
92
+ 'Setup-Requires-Dist', 'Extension')
93
+
94
+ # See issue #106: Sometimes 'Requires' and 'Provides' occur wrongly in
95
+ # the metadata. Include them in the tuple literal below to allow them
96
+ # (for now).
97
+ _566_FIELDS = _426_FIELDS + ('Description-Content-Type',
98
+ 'Requires', 'Provides')
99
+
100
+ _566_MARKERS = ('Description-Content-Type',)
101
+
102
+ _ALL_FIELDS = set()
103
+ _ALL_FIELDS.update(_241_FIELDS)
104
+ _ALL_FIELDS.update(_314_FIELDS)
105
+ _ALL_FIELDS.update(_345_FIELDS)
106
+ _ALL_FIELDS.update(_426_FIELDS)
107
+ _ALL_FIELDS.update(_566_FIELDS)
108
+
109
+ EXTRA_RE = re.compile(r'''extra\s*==\s*("([^"]+)"|'([^']+)')''')
110
+
111
+
112
+ def _version2fieldlist(version):
113
+ if version == '1.0':
114
+ return _241_FIELDS
115
+ elif version == '1.1':
116
+ return _314_FIELDS
117
+ elif version == '1.2':
118
+ return _345_FIELDS
119
+ elif version in ('1.3', '2.1'):
120
+ return _345_FIELDS + _566_FIELDS
121
+ elif version == '2.0':
122
+ return _426_FIELDS
123
+ raise MetadataUnrecognizedVersionError(version)
124
+
125
+
126
+ def _best_version(fields):
127
+ """Detect the best version depending on the fields used."""
128
+ def _has_marker(keys, markers):
129
+ for marker in markers:
130
+ if marker in keys:
131
+ return True
132
+ return False
133
+
134
+ keys = []
135
+ for key, value in fields.items():
136
+ if value in ([], 'UNKNOWN', None):
137
+ continue
138
+ keys.append(key)
139
+
140
+ possible_versions = ['1.0', '1.1', '1.2', '1.3', '2.0', '2.1']
141
+
142
+ # first let's try to see if a field is not part of one of the version
143
+ for key in keys:
144
+ if key not in _241_FIELDS and '1.0' in possible_versions:
145
+ possible_versions.remove('1.0')
146
+ logger.debug('Removed 1.0 due to %s', key)
147
+ if key not in _314_FIELDS and '1.1' in possible_versions:
148
+ possible_versions.remove('1.1')
149
+ logger.debug('Removed 1.1 due to %s', key)
150
+ if key not in _345_FIELDS and '1.2' in possible_versions:
151
+ possible_versions.remove('1.2')
152
+ logger.debug('Removed 1.2 due to %s', key)
153
+ if key not in _566_FIELDS and '1.3' in possible_versions:
154
+ possible_versions.remove('1.3')
155
+ logger.debug('Removed 1.3 due to %s', key)
156
+ if key not in _566_FIELDS and '2.1' in possible_versions:
157
+ if key != 'Description': # In 2.1, description allowed after headers
158
+ possible_versions.remove('2.1')
159
+ logger.debug('Removed 2.1 due to %s', key)
160
+ if key not in _426_FIELDS and '2.0' in possible_versions:
161
+ possible_versions.remove('2.0')
162
+ logger.debug('Removed 2.0 due to %s', key)
163
+
164
+ # possible_version contains qualified versions
165
+ if len(possible_versions) == 1:
166
+ return possible_versions[0] # found !
167
+ elif len(possible_versions) == 0:
168
+ logger.debug('Out of options - unknown metadata set: %s', fields)
169
+ raise MetadataConflictError('Unknown metadata set')
170
+
171
+ # let's see if one unique marker is found
172
+ is_1_1 = '1.1' in possible_versions and _has_marker(keys, _314_MARKERS)
173
+ is_1_2 = '1.2' in possible_versions and _has_marker(keys, _345_MARKERS)
174
+ is_2_1 = '2.1' in possible_versions and _has_marker(keys, _566_MARKERS)
175
+ is_2_0 = '2.0' in possible_versions and _has_marker(keys, _426_MARKERS)
176
+ if int(is_1_1) + int(is_1_2) + int(is_2_1) + int(is_2_0) > 1:
177
+ raise MetadataConflictError('You used incompatible 1.1/1.2/2.0/2.1 fields')
178
+
179
+ # we have the choice, 1.0, or 1.2, or 2.0
180
+ # - 1.0 has a broken Summary field but works with all tools
181
+ # - 1.1 is to avoid
182
+ # - 1.2 fixes Summary but has little adoption
183
+ # - 2.0 adds more features and is very new
184
+ if not is_1_1 and not is_1_2 and not is_2_1 and not is_2_0:
185
+ # we couldn't find any specific marker
186
+ if PKG_INFO_PREFERRED_VERSION in possible_versions:
187
+ return PKG_INFO_PREFERRED_VERSION
188
+ if is_1_1:
189
+ return '1.1'
190
+ if is_1_2:
191
+ return '1.2'
192
+ if is_2_1:
193
+ return '2.1'
194
+
195
+ return '2.0'
196
+
197
+ # This follows the rules about transforming keys as described in
198
+ # https://www.python.org/dev/peps/pep-0566/#id17
199
+ _ATTR2FIELD = {
200
+ name.lower().replace("-", "_"): name for name in _ALL_FIELDS
201
+ }
202
+ _FIELD2ATTR = {field: attr for attr, field in _ATTR2FIELD.items()}
203
+
204
+ _PREDICATE_FIELDS = ('Requires-Dist', 'Obsoletes-Dist', 'Provides-Dist')
205
+ _VERSIONS_FIELDS = ('Requires-Python',)
206
+ _VERSION_FIELDS = ('Version',)
207
+ _LISTFIELDS = ('Platform', 'Classifier', 'Obsoletes',
208
+ 'Requires', 'Provides', 'Obsoletes-Dist',
209
+ 'Provides-Dist', 'Requires-Dist', 'Requires-External',
210
+ 'Project-URL', 'Supported-Platform', 'Setup-Requires-Dist',
211
+ 'Provides-Extra', 'Extension')
212
+ _LISTTUPLEFIELDS = ('Project-URL',)
213
+
214
+ _ELEMENTSFIELD = ('Keywords',)
215
+
216
+ _UNICODEFIELDS = ('Author', 'Maintainer', 'Summary', 'Description')
217
+
218
+ _MISSING = object()
219
+
220
+ _FILESAFE = re.compile('[^A-Za-z0-9.]+')
221
+
222
+
223
+ def _get_name_and_version(name, version, for_filename=False):
224
+ """Return the distribution name with version.
225
+
226
+ If for_filename is true, return a filename-escaped form."""
227
+ if for_filename:
228
+ # For both name and version any runs of non-alphanumeric or '.'
229
+ # characters are replaced with a single '-'. Additionally any
230
+ # spaces in the version string become '.'
231
+ name = _FILESAFE.sub('-', name)
232
+ version = _FILESAFE.sub('-', version.replace(' ', '.'))
233
+ return '%s-%s' % (name, version)
234
+
235
+
236
+ class LegacyMetadata(object):
237
+ """The legacy metadata of a release.
238
+
239
+ Supports versions 1.0, 1.1, 1.2, 2.0 and 1.3/2.1 (auto-detected). You can
240
+ instantiate the class with one of these arguments (or none):
241
+ - *path*, the path to a metadata file
242
+ - *fileobj* give a file-like object with metadata as content
243
+ - *mapping* is a dict-like object
244
+ - *scheme* is a version scheme name
245
+ """
246
+ # TODO document the mapping API and UNKNOWN default key
247
+
248
+ def __init__(self, path=None, fileobj=None, mapping=None,
249
+ scheme='default'):
250
+ if [path, fileobj, mapping].count(None) < 2:
251
+ raise TypeError('path, fileobj and mapping are exclusive')
252
+ self._fields = {}
253
+ self.requires_files = []
254
+ self._dependencies = None
255
+ self.scheme = scheme
256
+ if path is not None:
257
+ self.read(path)
258
+ elif fileobj is not None:
259
+ self.read_file(fileobj)
260
+ elif mapping is not None:
261
+ self.update(mapping)
262
+ self.set_metadata_version()
263
+
264
+ def set_metadata_version(self):
265
+ self._fields['Metadata-Version'] = _best_version(self._fields)
266
+
267
+ def _write_field(self, fileobj, name, value):
268
+ fileobj.write('%s: %s\n' % (name, value))
269
+
270
+ def __getitem__(self, name):
271
+ return self.get(name)
272
+
273
+ def __setitem__(self, name, value):
274
+ return self.set(name, value)
275
+
276
+ def __delitem__(self, name):
277
+ field_name = self._convert_name(name)
278
+ try:
279
+ del self._fields[field_name]
280
+ except KeyError:
281
+ raise KeyError(name)
282
+
283
+ def __contains__(self, name):
284
+ return (name in self._fields or
285
+ self._convert_name(name) in self._fields)
286
+
287
+ def _convert_name(self, name):
288
+ if name in _ALL_FIELDS:
289
+ return name
290
+ name = name.replace('-', '_').lower()
291
+ return _ATTR2FIELD.get(name, name)
292
+
293
+ def _default_value(self, name):
294
+ if name in _LISTFIELDS or name in _ELEMENTSFIELD:
295
+ return []
296
+ return 'UNKNOWN'
297
+
298
+ def _remove_line_prefix(self, value):
299
+ if self.metadata_version in ('1.0', '1.1'):
300
+ return _LINE_PREFIX_PRE_1_2.sub('\n', value)
301
+ else:
302
+ return _LINE_PREFIX_1_2.sub('\n', value)
303
+
304
+ def __getattr__(self, name):
305
+ if name in _ATTR2FIELD:
306
+ return self[name]
307
+ raise AttributeError(name)
308
+
309
+ #
310
+ # Public API
311
+ #
312
+
313
+ # dependencies = property(_get_dependencies, _set_dependencies)
314
+
315
+ def get_fullname(self, filesafe=False):
316
+ """Return the distribution name with version.
317
+
318
+ If filesafe is true, return a filename-escaped form."""
319
+ return _get_name_and_version(self['Name'], self['Version'], filesafe)
320
+
321
+ def is_field(self, name):
322
+ """return True if name is a valid metadata key"""
323
+ name = self._convert_name(name)
324
+ return name in _ALL_FIELDS
325
+
326
+ def is_multi_field(self, name):
327
+ name = self._convert_name(name)
328
+ return name in _LISTFIELDS
329
+
330
+ def read(self, filepath):
331
+ """Read the metadata values from a file path."""
332
+ fp = codecs.open(filepath, 'r', encoding='utf-8')
333
+ try:
334
+ self.read_file(fp)
335
+ finally:
336
+ fp.close()
337
+
338
+ def read_file(self, fileob):
339
+ """Read the metadata values from a file object."""
340
+ msg = message_from_file(fileob)
341
+ self._fields['Metadata-Version'] = msg['metadata-version']
342
+
343
+ # When reading, get all the fields we can
344
+ for field in _ALL_FIELDS:
345
+ if field not in msg:
346
+ continue
347
+ if field in _LISTFIELDS:
348
+ # we can have multiple lines
349
+ values = msg.get_all(field)
350
+ if field in _LISTTUPLEFIELDS and values is not None:
351
+ values = [tuple(value.split(',')) for value in values]
352
+ self.set(field, values)
353
+ else:
354
+ # single line
355
+ value = msg[field]
356
+ if value is not None and value != 'UNKNOWN':
357
+ self.set(field, value)
358
+
359
+ # PEP 566 specifies that the body be used for the description, if
360
+ # available
361
+ body = msg.get_payload()
362
+ self["Description"] = body if body else self["Description"]
363
+ # logger.debug('Attempting to set metadata for %s', self)
364
+ # self.set_metadata_version()
365
+
366
+ def write(self, filepath, skip_unknown=False):
367
+ """Write the metadata fields to filepath."""
368
+ fp = codecs.open(filepath, 'w', encoding='utf-8')
369
+ try:
370
+ self.write_file(fp, skip_unknown)
371
+ finally:
372
+ fp.close()
373
+
374
+ def write_file(self, fileobject, skip_unknown=False):
375
+ """Write the PKG-INFO format data to a file object."""
376
+ self.set_metadata_version()
377
+
378
+ for field in _version2fieldlist(self['Metadata-Version']):
379
+ values = self.get(field)
380
+ if skip_unknown and values in ('UNKNOWN', [], ['UNKNOWN']):
381
+ continue
382
+ if field in _ELEMENTSFIELD:
383
+ self._write_field(fileobject, field, ','.join(values))
384
+ continue
385
+ if field not in _LISTFIELDS:
386
+ if field == 'Description':
387
+ if self.metadata_version in ('1.0', '1.1'):
388
+ values = values.replace('\n', '\n ')
389
+ else:
390
+ values = values.replace('\n', '\n |')
391
+ values = [values]
392
+
393
+ if field in _LISTTUPLEFIELDS:
394
+ values = [','.join(value) for value in values]
395
+
396
+ for value in values:
397
+ self._write_field(fileobject, field, value)
398
+
399
+ def update(self, other=None, **kwargs):
400
+ """Set metadata values from the given iterable `other` and kwargs.
401
+
402
+ Behavior is like `dict.update`: If `other` has a ``keys`` method,
403
+ they are looped over and ``self[key]`` is assigned ``other[key]``.
404
+ Else, ``other`` is an iterable of ``(key, value)`` iterables.
405
+
406
+ Keys that don't match a metadata field or that have an empty value are
407
+ dropped.
408
+ """
409
+ def _set(key, value):
410
+ if key in _ATTR2FIELD and value:
411
+ self.set(self._convert_name(key), value)
412
+
413
+ if not other:
414
+ # other is None or empty container
415
+ pass
416
+ elif hasattr(other, 'keys'):
417
+ for k in other.keys():
418
+ _set(k, other[k])
419
+ else:
420
+ for k, v in other:
421
+ _set(k, v)
422
+
423
+ if kwargs:
424
+ for k, v in kwargs.items():
425
+ _set(k, v)
426
+
427
+ def set(self, name, value):
428
+ """Control then set a metadata field."""
429
+ name = self._convert_name(name)
430
+
431
+ if ((name in _ELEMENTSFIELD or name == 'Platform') and
432
+ not isinstance(value, (list, tuple))):
433
+ if isinstance(value, string_types):
434
+ value = [v.strip() for v in value.split(',')]
435
+ else:
436
+ value = []
437
+ elif (name in _LISTFIELDS and
438
+ not isinstance(value, (list, tuple))):
439
+ if isinstance(value, string_types):
440
+ value = [value]
441
+ else:
442
+ value = []
443
+
444
+ if logger.isEnabledFor(logging.WARNING):
445
+ project_name = self['Name']
446
+
447
+ scheme = get_scheme(self.scheme)
448
+ if name in _PREDICATE_FIELDS and value is not None:
449
+ for v in value:
450
+ # check that the values are valid
451
+ if not scheme.is_valid_matcher(v.split(';')[0]):
452
+ logger.warning(
453
+ "'%s': '%s' is not valid (field '%s')",
454
+ project_name, v, name)
455
+ # FIXME this rejects UNKNOWN, is that right?
456
+ elif name in _VERSIONS_FIELDS and value is not None:
457
+ if not scheme.is_valid_constraint_list(value):
458
+ logger.warning("'%s': '%s' is not a valid version (field '%s')",
459
+ project_name, value, name)
460
+ elif name in _VERSION_FIELDS and value is not None:
461
+ if not scheme.is_valid_version(value):
462
+ logger.warning("'%s': '%s' is not a valid version (field '%s')",
463
+ project_name, value, name)
464
+
465
+ if name in _UNICODEFIELDS:
466
+ if name == 'Description':
467
+ value = self._remove_line_prefix(value)
468
+
469
+ self._fields[name] = value
470
+
471
+ def get(self, name, default=_MISSING):
472
+ """Get a metadata field."""
473
+ name = self._convert_name(name)
474
+ if name not in self._fields:
475
+ if default is _MISSING:
476
+ default = self._default_value(name)
477
+ return default
478
+ if name in _UNICODEFIELDS:
479
+ value = self._fields[name]
480
+ return value
481
+ elif name in _LISTFIELDS:
482
+ value = self._fields[name]
483
+ if value is None:
484
+ return []
485
+ res = []
486
+ for val in value:
487
+ if name not in _LISTTUPLEFIELDS:
488
+ res.append(val)
489
+ else:
490
+ # That's for Project-URL
491
+ res.append((val[0], val[1]))
492
+ return res
493
+
494
+ elif name in _ELEMENTSFIELD:
495
+ value = self._fields[name]
496
+ if isinstance(value, string_types):
497
+ return value.split(',')
498
+ return self._fields[name]
499
+
500
+ def check(self, strict=False):
501
+ """Check if the metadata is compliant. If strict is True then raise if
502
+ no Name or Version are provided"""
503
+ self.set_metadata_version()
504
+
505
+ # XXX should check the versions (if the file was loaded)
506
+ missing, warnings = [], []
507
+
508
+ for attr in ('Name', 'Version'): # required by PEP 345
509
+ if attr not in self:
510
+ missing.append(attr)
511
+
512
+ if strict and missing != []:
513
+ msg = 'missing required metadata: %s' % ', '.join(missing)
514
+ raise MetadataMissingError(msg)
515
+
516
+ for attr in ('Home-page', 'Author'):
517
+ if attr not in self:
518
+ missing.append(attr)
519
+
520
+ # checking metadata 1.2 (XXX needs to check 1.1, 1.0)
521
+ if self['Metadata-Version'] != '1.2':
522
+ return missing, warnings
523
+
524
+ scheme = get_scheme(self.scheme)
525
+
526
+ def are_valid_constraints(value):
527
+ for v in value:
528
+ if not scheme.is_valid_matcher(v.split(';')[0]):
529
+ return False
530
+ return True
531
+
532
+ for fields, controller in ((_PREDICATE_FIELDS, are_valid_constraints),
533
+ (_VERSIONS_FIELDS,
534
+ scheme.is_valid_constraint_list),
535
+ (_VERSION_FIELDS,
536
+ scheme.is_valid_version)):
537
+ for field in fields:
538
+ value = self.get(field, None)
539
+ if value is not None and not controller(value):
540
+ warnings.append("Wrong value for '%s': %s" % (field, value))
541
+
542
+ return missing, warnings
543
+
544
+ def todict(self, skip_missing=False):
545
+ """Return fields as a dict.
546
+
547
+ Field names will be converted to use the underscore-lowercase style
548
+ instead of hyphen-mixed case (i.e. home_page instead of Home-page).
549
+ This is as per https://www.python.org/dev/peps/pep-0566/#id17.
550
+ """
551
+ self.set_metadata_version()
552
+
553
+ fields = _version2fieldlist(self['Metadata-Version'])
554
+
555
+ data = {}
556
+
557
+ for field_name in fields:
558
+ if not skip_missing or field_name in self._fields:
559
+ key = _FIELD2ATTR[field_name]
560
+ if key != 'project_url':
561
+ data[key] = self[field_name]
562
+ else:
563
+ data[key] = [','.join(u) for u in self[field_name]]
564
+
565
+ return data
566
+
567
+ def add_requirements(self, requirements):
568
+ if self['Metadata-Version'] == '1.1':
569
+ # we can't have 1.1 metadata *and* Setuptools requires
570
+ for field in ('Obsoletes', 'Requires', 'Provides'):
571
+ if field in self:
572
+ del self[field]
573
+ self['Requires-Dist'] += requirements
574
+
575
+ # Mapping API
576
+ # TODO could add iter* variants
577
+
578
+ def keys(self):
579
+ return list(_version2fieldlist(self['Metadata-Version']))
580
+
581
+ def __iter__(self):
582
+ for key in self.keys():
583
+ yield key
584
+
585
+ def values(self):
586
+ return [self[key] for key in self.keys()]
587
+
588
+ def items(self):
589
+ return [(key, self[key]) for key in self.keys()]
590
+
591
+ def __repr__(self):
592
+ return '<%s %s %s>' % (self.__class__.__name__, self.name,
593
+ self.version)
594
+
595
+
596
+ METADATA_FILENAME = 'pydist.json'
597
+ WHEEL_METADATA_FILENAME = 'metadata.json'
598
+ LEGACY_METADATA_FILENAME = 'METADATA'
599
+
600
+
601
+ class Metadata(object):
602
+ """
603
+ The metadata of a release. This implementation uses 2.0 (JSON)
604
+ metadata where possible. If not possible, it wraps a LegacyMetadata
605
+ instance which handles the key-value metadata format.
606
+ """
607
+
608
+ METADATA_VERSION_MATCHER = re.compile(r'^\d+(\.\d+)*$')
609
+
610
+ NAME_MATCHER = re.compile('^[0-9A-Z]([0-9A-Z_.-]*[0-9A-Z])?$', re.I)
611
+
612
+ VERSION_MATCHER = PEP440_VERSION_RE
613
+
614
+ SUMMARY_MATCHER = re.compile('.{1,2047}')
615
+
616
+ METADATA_VERSION = '2.0'
617
+
618
+ GENERATOR = 'distlib (%s)' % __version__
619
+
620
+ MANDATORY_KEYS = {
621
+ 'name': (),
622
+ 'version': (),
623
+ 'summary': ('legacy',),
624
+ }
625
+
626
+ INDEX_KEYS = ('name version license summary description author '
627
+ 'author_email keywords platform home_page classifiers '
628
+ 'download_url')
629
+
630
+ DEPENDENCY_KEYS = ('extras run_requires test_requires build_requires '
631
+ 'dev_requires provides meta_requires obsoleted_by '
632
+ 'supports_environments')
633
+
634
+ SYNTAX_VALIDATORS = {
635
+ 'metadata_version': (METADATA_VERSION_MATCHER, ()),
636
+ 'name': (NAME_MATCHER, ('legacy',)),
637
+ 'version': (VERSION_MATCHER, ('legacy',)),
638
+ 'summary': (SUMMARY_MATCHER, ('legacy',)),
639
+ }
640
+
641
+ __slots__ = ('_legacy', '_data', 'scheme')
642
+
643
+ def __init__(self, path=None, fileobj=None, mapping=None,
644
+ scheme='default'):
645
+ if [path, fileobj, mapping].count(None) < 2:
646
+ raise TypeError('path, fileobj and mapping are exclusive')
647
+ self._legacy = None
648
+ self._data = None
649
+ self.scheme = scheme
650
+ #import pdb; pdb.set_trace()
651
+ if mapping is not None:
652
+ try:
653
+ self._validate_mapping(mapping, scheme)
654
+ self._data = mapping
655
+ except MetadataUnrecognizedVersionError:
656
+ self._legacy = LegacyMetadata(mapping=mapping, scheme=scheme)
657
+ self.validate()
658
+ else:
659
+ data = None
660
+ if path:
661
+ with open(path, 'rb') as f:
662
+ data = f.read()
663
+ elif fileobj:
664
+ data = fileobj.read()
665
+ if data is None:
666
+ # Initialised with no args - to be added
667
+ self._data = {
668
+ 'metadata_version': self.METADATA_VERSION,
669
+ 'generator': self.GENERATOR,
670
+ }
671
+ else:
672
+ if not isinstance(data, text_type):
673
+ data = data.decode('utf-8')
674
+ try:
675
+ self._data = json.loads(data)
676
+ self._validate_mapping(self._data, scheme)
677
+ except ValueError:
678
+ # Note: MetadataUnrecognizedVersionError does not
679
+ # inherit from ValueError (it's a DistlibException,
680
+ # which should not inherit from ValueError).
681
+ # The ValueError comes from the json.load - if that
682
+ # succeeds and we get a validation error, we want
683
+ # that to propagate
684
+ self._legacy = LegacyMetadata(fileobj=StringIO(data),
685
+ scheme=scheme)
686
+ self.validate()
687
+
688
+ common_keys = set(('name', 'version', 'license', 'keywords', 'summary'))
689
+
690
+ none_list = (None, list)
691
+ none_dict = (None, dict)
692
+
693
+ mapped_keys = {
694
+ 'run_requires': ('Requires-Dist', list),
695
+ 'build_requires': ('Setup-Requires-Dist', list),
696
+ 'dev_requires': none_list,
697
+ 'test_requires': none_list,
698
+ 'meta_requires': none_list,
699
+ 'extras': ('Provides-Extra', list),
700
+ 'modules': none_list,
701
+ 'namespaces': none_list,
702
+ 'exports': none_dict,
703
+ 'commands': none_dict,
704
+ 'classifiers': ('Classifier', list),
705
+ 'source_url': ('Download-URL', None),
706
+ 'metadata_version': ('Metadata-Version', None),
707
+ }
708
+
709
+ del none_list, none_dict
710
+
711
+ def __getattribute__(self, key):
712
+ common = object.__getattribute__(self, 'common_keys')
713
+ mapped = object.__getattribute__(self, 'mapped_keys')
714
+ if key in mapped:
715
+ lk, maker = mapped[key]
716
+ if self._legacy:
717
+ if lk is None:
718
+ result = None if maker is None else maker()
719
+ else:
720
+ result = self._legacy.get(lk)
721
+ else:
722
+ value = None if maker is None else maker()
723
+ if key not in ('commands', 'exports', 'modules', 'namespaces',
724
+ 'classifiers'):
725
+ result = self._data.get(key, value)
726
+ else:
727
+ # special cases for PEP 459
728
+ sentinel = object()
729
+ result = sentinel
730
+ d = self._data.get('extensions')
731
+ if d:
732
+ if key == 'commands':
733
+ result = d.get('python.commands', value)
734
+ elif key == 'classifiers':
735
+ d = d.get('python.details')
736
+ if d:
737
+ result = d.get(key, value)
738
+ else:
739
+ d = d.get('python.exports')
740
+ if not d:
741
+ d = self._data.get('python.exports')
742
+ if d:
743
+ result = d.get(key, value)
744
+ if result is sentinel:
745
+ result = value
746
+ elif key not in common:
747
+ result = object.__getattribute__(self, key)
748
+ elif self._legacy:
749
+ result = self._legacy.get(key)
750
+ else:
751
+ result = self._data.get(key)
752
+ return result
753
+
754
+ def _validate_value(self, key, value, scheme=None):
755
+ if key in self.SYNTAX_VALIDATORS:
756
+ pattern, exclusions = self.SYNTAX_VALIDATORS[key]
757
+ if (scheme or self.scheme) not in exclusions:
758
+ m = pattern.match(value)
759
+ if not m:
760
+ raise MetadataInvalidError("'%s' is an invalid value for "
761
+ "the '%s' property" % (value,
762
+ key))
763
+
764
+ def __setattr__(self, key, value):
765
+ self._validate_value(key, value)
766
+ common = object.__getattribute__(self, 'common_keys')
767
+ mapped = object.__getattribute__(self, 'mapped_keys')
768
+ if key in mapped:
769
+ lk, _ = mapped[key]
770
+ if self._legacy:
771
+ if lk is None:
772
+ raise NotImplementedError
773
+ self._legacy[lk] = value
774
+ elif key not in ('commands', 'exports', 'modules', 'namespaces',
775
+ 'classifiers'):
776
+ self._data[key] = value
777
+ else:
778
+ # special cases for PEP 459
779
+ d = self._data.setdefault('extensions', {})
780
+ if key == 'commands':
781
+ d['python.commands'] = value
782
+ elif key == 'classifiers':
783
+ d = d.setdefault('python.details', {})
784
+ d[key] = value
785
+ else:
786
+ d = d.setdefault('python.exports', {})
787
+ d[key] = value
788
+ elif key not in common:
789
+ object.__setattr__(self, key, value)
790
+ else:
791
+ if key == 'keywords':
792
+ if isinstance(value, string_types):
793
+ value = value.strip()
794
+ if value:
795
+ value = value.split()
796
+ else:
797
+ value = []
798
+ if self._legacy:
799
+ self._legacy[key] = value
800
+ else:
801
+ self._data[key] = value
802
+
803
+ @property
804
+ def name_and_version(self):
805
+ return _get_name_and_version(self.name, self.version, True)
806
+
807
+ @property
808
+ def provides(self):
809
+ if self._legacy:
810
+ result = self._legacy['Provides-Dist']
811
+ else:
812
+ result = self._data.setdefault('provides', [])
813
+ s = '%s (%s)' % (self.name, self.version)
814
+ if s not in result:
815
+ result.append(s)
816
+ return result
817
+
818
+ @provides.setter
819
+ def provides(self, value):
820
+ if self._legacy:
821
+ self._legacy['Provides-Dist'] = value
822
+ else:
823
+ self._data['provides'] = value
824
+
825
+ def get_requirements(self, reqts, extras=None, env=None):
826
+ """
827
+ Base method to get dependencies, given a set of extras
828
+ to satisfy and an optional environment context.
829
+ :param reqts: A list of sometimes-wanted dependencies,
830
+ perhaps dependent on extras and environment.
831
+ :param extras: A list of optional components being requested.
832
+ :param env: An optional environment for marker evaluation.
833
+ """
834
+ if self._legacy:
835
+ result = reqts
836
+ else:
837
+ result = []
838
+ extras = get_extras(extras or [], self.extras)
839
+ for d in reqts:
840
+ if 'extra' not in d and 'environment' not in d:
841
+ # unconditional
842
+ include = True
843
+ else:
844
+ if 'extra' not in d:
845
+ # Not extra-dependent - only environment-dependent
846
+ include = True
847
+ else:
848
+ include = d.get('extra') in extras
849
+ if include:
850
+ # Not excluded because of extras, check environment
851
+ marker = d.get('environment')
852
+ if marker:
853
+ include = interpret(marker, env)
854
+ if include:
855
+ result.extend(d['requires'])
856
+ for key in ('build', 'dev', 'test'):
857
+ e = ':%s:' % key
858
+ if e in extras:
859
+ extras.remove(e)
860
+ # A recursive call, but it should terminate since 'test'
861
+ # has been removed from the extras
862
+ reqts = self._data.get('%s_requires' % key, [])
863
+ result.extend(self.get_requirements(reqts, extras=extras,
864
+ env=env))
865
+ return result
866
+
867
+ @property
868
+ def dictionary(self):
869
+ if self._legacy:
870
+ return self._from_legacy()
871
+ return self._data
872
+
873
+ @property
874
+ def dependencies(self):
875
+ if self._legacy:
876
+ raise NotImplementedError
877
+ else:
878
+ return extract_by_key(self._data, self.DEPENDENCY_KEYS)
879
+
880
+ @dependencies.setter
881
+ def dependencies(self, value):
882
+ if self._legacy:
883
+ raise NotImplementedError
884
+ else:
885
+ self._data.update(value)
886
+
887
+ def _validate_mapping(self, mapping, scheme):
888
+ if mapping.get('metadata_version') != self.METADATA_VERSION:
889
+ raise MetadataUnrecognizedVersionError()
890
+ missing = []
891
+ for key, exclusions in self.MANDATORY_KEYS.items():
892
+ if key not in mapping:
893
+ if scheme not in exclusions:
894
+ missing.append(key)
895
+ if missing:
896
+ msg = 'Missing metadata items: %s' % ', '.join(missing)
897
+ raise MetadataMissingError(msg)
898
+ for k, v in mapping.items():
899
+ self._validate_value(k, v, scheme)
900
+
901
+ def validate(self):
902
+ if self._legacy:
903
+ missing, warnings = self._legacy.check(True)
904
+ if missing or warnings:
905
+ logger.warning('Metadata: missing: %s, warnings: %s',
906
+ missing, warnings)
907
+ else:
908
+ self._validate_mapping(self._data, self.scheme)
909
+
910
+ def todict(self):
911
+ if self._legacy:
912
+ return self._legacy.todict(True)
913
+ else:
914
+ result = extract_by_key(self._data, self.INDEX_KEYS)
915
+ return result
916
+
917
+ def _from_legacy(self):
918
+ assert self._legacy and not self._data
919
+ result = {
920
+ 'metadata_version': self.METADATA_VERSION,
921
+ 'generator': self.GENERATOR,
922
+ }
923
+ lmd = self._legacy.todict(True) # skip missing ones
924
+ for k in ('name', 'version', 'license', 'summary', 'description',
925
+ 'classifier'):
926
+ if k in lmd:
927
+ if k == 'classifier':
928
+ nk = 'classifiers'
929
+ else:
930
+ nk = k
931
+ result[nk] = lmd[k]
932
+ kw = lmd.get('Keywords', [])
933
+ if kw == ['']:
934
+ kw = []
935
+ result['keywords'] = kw
936
+ keys = (('requires_dist', 'run_requires'),
937
+ ('setup_requires_dist', 'build_requires'))
938
+ for ok, nk in keys:
939
+ if ok in lmd and lmd[ok]:
940
+ result[nk] = [{'requires': lmd[ok]}]
941
+ result['provides'] = self.provides
942
+ author = {}
943
+ maintainer = {}
944
+ return result
945
+
946
+ LEGACY_MAPPING = {
947
+ 'name': 'Name',
948
+ 'version': 'Version',
949
+ ('extensions', 'python.details', 'license'): 'License',
950
+ 'summary': 'Summary',
951
+ 'description': 'Description',
952
+ ('extensions', 'python.project', 'project_urls', 'Home'): 'Home-page',
953
+ ('extensions', 'python.project', 'contacts', 0, 'name'): 'Author',
954
+ ('extensions', 'python.project', 'contacts', 0, 'email'): 'Author-email',
955
+ 'source_url': 'Download-URL',
956
+ ('extensions', 'python.details', 'classifiers'): 'Classifier',
957
+ }
958
+
959
+ def _to_legacy(self):
960
+ def process_entries(entries):
961
+ reqts = set()
962
+ for e in entries:
963
+ extra = e.get('extra')
964
+ env = e.get('environment')
965
+ rlist = e['requires']
966
+ for r in rlist:
967
+ if not env and not extra:
968
+ reqts.add(r)
969
+ else:
970
+ marker = ''
971
+ if extra:
972
+ marker = 'extra == "%s"' % extra
973
+ if env:
974
+ if marker:
975
+ marker = '(%s) and %s' % (env, marker)
976
+ else:
977
+ marker = env
978
+ reqts.add(';'.join((r, marker)))
979
+ return reqts
980
+
981
+ assert self._data and not self._legacy
982
+ result = LegacyMetadata()
983
+ nmd = self._data
984
+ # import pdb; pdb.set_trace()
985
+ for nk, ok in self.LEGACY_MAPPING.items():
986
+ if not isinstance(nk, tuple):
987
+ if nk in nmd:
988
+ result[ok] = nmd[nk]
989
+ else:
990
+ d = nmd
991
+ found = True
992
+ for k in nk:
993
+ try:
994
+ d = d[k]
995
+ except (KeyError, IndexError):
996
+ found = False
997
+ break
998
+ if found:
999
+ result[ok] = d
1000
+ r1 = process_entries(self.run_requires + self.meta_requires)
1001
+ r2 = process_entries(self.build_requires + self.dev_requires)
1002
+ if self.extras:
1003
+ result['Provides-Extra'] = sorted(self.extras)
1004
+ result['Requires-Dist'] = sorted(r1)
1005
+ result['Setup-Requires-Dist'] = sorted(r2)
1006
+ # TODO: any other fields wanted
1007
+ return result
1008
+
1009
+ def write(self, path=None, fileobj=None, legacy=False, skip_unknown=True):
1010
+ if [path, fileobj].count(None) != 1:
1011
+ raise ValueError('Exactly one of path and fileobj is needed')
1012
+ self.validate()
1013
+ if legacy:
1014
+ if self._legacy:
1015
+ legacy_md = self._legacy
1016
+ else:
1017
+ legacy_md = self._to_legacy()
1018
+ if path:
1019
+ legacy_md.write(path, skip_unknown=skip_unknown)
1020
+ else:
1021
+ legacy_md.write_file(fileobj, skip_unknown=skip_unknown)
1022
+ else:
1023
+ if self._legacy:
1024
+ d = self._from_legacy()
1025
+ else:
1026
+ d = self._data
1027
+ if fileobj:
1028
+ json.dump(d, fileobj, ensure_ascii=True, indent=2,
1029
+ sort_keys=True)
1030
+ else:
1031
+ with codecs.open(path, 'w', 'utf-8') as f:
1032
+ json.dump(d, f, ensure_ascii=True, indent=2,
1033
+ sort_keys=True)
1034
+
1035
+ def add_requirements(self, requirements):
1036
+ if self._legacy:
1037
+ self._legacy.add_requirements(requirements)
1038
+ else:
1039
+ run_requires = self._data.setdefault('run_requires', [])
1040
+ always = None
1041
+ for entry in run_requires:
1042
+ if 'environment' not in entry and 'extra' not in entry:
1043
+ always = entry
1044
+ break
1045
+ if always is None:
1046
+ always = { 'requires': requirements }
1047
+ run_requires.insert(0, always)
1048
+ else:
1049
+ rset = set(always['requires']) | set(requirements)
1050
+ always['requires'] = sorted(rset)
1051
+
1052
+ def __repr__(self):
1053
+ name = self.name or '(no name)'
1054
+ version = self.version or 'no version'
1055
+ return '<%s %s %s (%s)>' % (self.__class__.__name__,
1056
+ self.metadata_version, name, version)