quarchpy 2.1.13.dev1__py2.py3-none-any.whl → 2.1.14__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (837) hide show
  1. quarchpy/.idea/.name +1 -1
  2. quarchpy/.idea/modules.xml +1 -0
  3. quarchpy/.idea/quarchpy.iml +4 -1
  4. quarchpy/.idea/workspace.xml +208 -11
  5. quarchpy/__pycache__/__init__.cpython-311.pyc +0 -0
  6. quarchpy/__pycache__/_version.cpython-311.pyc +0 -0
  7. quarchpy/__pycache__/connection.cpython-311.pyc +0 -0
  8. quarchpy/__pycache__/run.cpython-311.pyc +0 -0
  9. quarchpy/_version.py +1 -1
  10. quarchpy/config_files/__pycache__/__init__.cpython-311.pyc +0 -0
  11. quarchpy/config_files/__pycache__/quarch_config_parser.cpython-311.pyc +0 -0
  12. quarchpy/connection_specific/QPS/commandLineOptions.txt +12 -10
  13. quarchpy/connection_specific/QPS/qis/qis.jar +0 -0
  14. quarchpy/connection_specific/QPS/qis/qis_lib/{CInterface-1.7.03.jar → CInterface-1.7.04.jar} +0 -0
  15. quarchpy/connection_specific/QPS/qis/qis_lib/{QuarchCommon-0.2.5.jar → QuarchCommon-0.2.6.jar} +0 -0
  16. quarchpy/connection_specific/QPS/qis/qis_lib/commons-lang3-3.2.1.jar +0 -0
  17. quarchpy/connection_specific/QPS/qps.jar +0 -0
  18. quarchpy/connection_specific/QPS/qps_lib/QuarchCommon-0.2.6.jar +0 -0
  19. quarchpy/connection_specific/QPS/qps_lib/istack-commons-runtime-3.0.11.jar +0 -0
  20. quarchpy/connection_specific/QPS/qps_lib/jakarta.activation-api-2.1.0.jar +0 -0
  21. quarchpy/connection_specific/QPS/qps_lib/jakarta.xml.bind-api-3.0.0.jar +0 -0
  22. quarchpy/connection_specific/QPS/qps_lib/jaxb-core-3.0.0.jar +0 -0
  23. quarchpy/connection_specific/QPS/qps_lib/jaxb-impl-3.0.0.jar +0 -0
  24. quarchpy/connection_specific/QPS/qps_lib/jaxb-runtime-3.0.0.jar +0 -0
  25. quarchpy/connection_specific/QPS/qps_lib/qis-1.39.jar +0 -0
  26. quarchpy/connection_specific/QPS/qps_lib/txw2-3.0.0.jar +0 -0
  27. quarchpy/connection_specific/QPS/scriptCommands.txt +2 -2
  28. quarchpy/connection_specific/__pycache__/StreamChannels.cpython-311.pyc +0 -0
  29. quarchpy/connection_specific/__pycache__/__init__.cpython-311.pyc +0 -0
  30. quarchpy/connection_specific/__pycache__/connection_QIS.cpython-311.pyc +0 -0
  31. quarchpy/connection_specific/__pycache__/connection_QPS.cpython-311.pyc +0 -0
  32. quarchpy/connection_specific/__pycache__/connection_ReST.cpython-311.pyc +0 -0
  33. quarchpy/connection_specific/__pycache__/connection_Serial.cpython-311.pyc +0 -0
  34. quarchpy/connection_specific/__pycache__/connection_TCP.cpython-311.pyc +0 -0
  35. quarchpy/connection_specific/__pycache__/connection_Telnet.cpython-311.pyc +0 -0
  36. quarchpy/connection_specific/__pycache__/connection_USB.cpython-311.pyc +0 -0
  37. quarchpy/connection_specific/__pycache__/connection_mDNS.cpython-311.pyc +0 -0
  38. quarchpy/connection_specific/connection_QIS.py +246 -331
  39. quarchpy/connection_specific/connection_QPS.py +1 -1
  40. quarchpy/connection_specific/connection_ReST.py +26 -16
  41. quarchpy/connection_specific/connection_TCP.py +1 -1
  42. quarchpy/connection_specific/connection_mDNS.py +46 -0
  43. quarchpy/connection_specific/serial/__pycache__/__init__.cpython-311.pyc +0 -0
  44. quarchpy/connection_specific/serial/__pycache__/serialutil.cpython-311.pyc +0 -0
  45. quarchpy/connection_specific/serial/__pycache__/serialwin32.cpython-311.pyc +0 -0
  46. quarchpy/connection_specific/serial/__pycache__/win32.cpython-311.pyc +0 -0
  47. quarchpy/connection_specific/serial/tools/__pycache__/__init__.cpython-311.pyc +0 -0
  48. quarchpy/connection_specific/serial/tools/__pycache__/list_ports.cpython-311.pyc +0 -0
  49. quarchpy/connection_specific/serial/tools/__pycache__/list_ports_common.cpython-311.pyc +0 -0
  50. quarchpy/connection_specific/serial/tools/__pycache__/list_ports_windows.cpython-311.pyc +0 -0
  51. quarchpy/debug/__pycache__/SystemTest.cpython-311.pyc +0 -0
  52. quarchpy/debug/__pycache__/__init__.cpython-311.pyc +0 -0
  53. quarchpy/debug/__pycache__/module_debug.cpython-311.pyc +0 -0
  54. quarchpy/debug/__pycache__/simple_terminal.cpython-311.pyc +0 -0
  55. quarchpy/debug/__pycache__/upgrade_quarchpy.cpython-311.pyc +0 -0
  56. quarchpy/debug/__pycache__/versionCompare.cpython-311.pyc +0 -0
  57. quarchpy/device/__pycache__/__init__.cpython-311.pyc +0 -0
  58. quarchpy/device/__pycache__/device.cpython-311.pyc +0 -0
  59. quarchpy/device/__pycache__/quarchArray.cpython-311.pyc +0 -0
  60. quarchpy/device/__pycache__/quarchPPM.cpython-311.pyc +0 -0
  61. quarchpy/device/__pycache__/quarchQPS.cpython-311.pyc +0 -0
  62. quarchpy/device/__pycache__/scanDevices.cpython-311.pyc +0 -0
  63. quarchpy/device/device.py +2 -0
  64. quarchpy/device/quarchPPM.py +2 -2
  65. quarchpy/device/quarchQPS.py +95 -86
  66. quarchpy/device/scanDevices.py +13 -3
  67. quarchpy/disk_test/__pycache__/AbsDiskFinder.cpython-311.pyc +0 -0
  68. quarchpy/disk_test/__pycache__/DiskTargetSelection.cpython-311.pyc +0 -0
  69. quarchpy/disk_test/__pycache__/__init__.cpython-311.pyc +0 -0
  70. quarchpy/disk_test/__pycache__/iometerDiskFinder.cpython-311.pyc +0 -0
  71. quarchpy/docs/CHANGES.rst +11 -1
  72. quarchpy/docs/_build/doctrees/CHANGES.doctree +0 -0
  73. quarchpy/docs/_build/doctrees/environment.pickle +0 -0
  74. quarchpy/docs/_build/doctrees/index.doctree +0 -0
  75. quarchpy/docs/_build/doctrees/readme.doctree +0 -0
  76. quarchpy/docs/_build/doctrees/source/changelog.doctree +0 -0
  77. quarchpy/docs/_build/doctrees/source/licenses.doctree +0 -0
  78. quarchpy/docs/_build/doctrees/source/modules.doctree +0 -0
  79. quarchpy/docs/_build/doctrees/source/quarchpy.calibration.doctree +0 -0
  80. quarchpy/docs/_build/doctrees/source/quarchpy.config_files.doctree +0 -0
  81. quarchpy/docs/_build/doctrees/source/quarchpy.connection_specific.doctree +0 -0
  82. quarchpy/docs/_build/doctrees/source/quarchpy.debug.doctree +0 -0
  83. quarchpy/docs/_build/doctrees/source/quarchpy.device.doctree +0 -0
  84. quarchpy/docs/_build/doctrees/source/quarchpy.disk_test.doctree +0 -0
  85. quarchpy/docs/_build/doctrees/source/quarchpy.doctree +0 -0
  86. quarchpy/docs/_build/doctrees/source/quarchpy.fio.doctree +0 -0
  87. quarchpy/docs/_build/doctrees/source/quarchpy.iometer.doctree +0 -0
  88. quarchpy/docs/_build/doctrees/source/quarchpy.qis.doctree +0 -0
  89. quarchpy/docs/_build/doctrees/source/quarchpy.qps.doctree +0 -0
  90. quarchpy/docs/_build/doctrees/source/quarchpy.user_interface.doctree +0 -0
  91. quarchpy/docs/_build/doctrees/source/quarchpy.utilities.doctree +0 -0
  92. quarchpy/docs/_build/doctrees/source/readme.doctree +0 -0
  93. quarchpy/docs/_build/html/.buildinfo +1 -1
  94. quarchpy/docs/_build/html/CHANGES.html +198 -156
  95. quarchpy/docs/_build/html/_sources/CHANGES.rst.txt +30 -0
  96. quarchpy/docs/_build/html/_static/alabaster.css +3 -1
  97. quarchpy/docs/_build/html/_static/basic.css +47 -27
  98. quarchpy/docs/_build/html/_static/doctools.js +107 -274
  99. quarchpy/docs/_build/html/_static/documentation_options.js +5 -4
  100. quarchpy/docs/_build/html/_static/language_data.js +2 -100
  101. quarchpy/docs/_build/html/_static/pygments.css +1 -0
  102. quarchpy/docs/_build/html/_static/searchtools.js +440 -395
  103. quarchpy/docs/_build/html/_static/sphinx_highlight.js +154 -0
  104. quarchpy/docs/_build/html/genindex.html +263 -87
  105. quarchpy/docs/_build/html/index.html +68 -63
  106. quarchpy/docs/_build/html/objects.inv +0 -0
  107. quarchpy/docs/_build/html/py-modindex.html +9 -11
  108. quarchpy/docs/_build/html/readme.html +26 -27
  109. quarchpy/docs/_build/html/search.html +8 -10
  110. quarchpy/docs/_build/html/searchindex.js +1 -1
  111. quarchpy/docs/_build/html/source/changelog.html +249 -201
  112. quarchpy/docs/_build/html/source/licenses.html +23 -24
  113. quarchpy/docs/_build/html/source/modules.html +24 -17
  114. quarchpy/docs/_build/html/source/quarchpy.calibration.html +44 -45
  115. quarchpy/docs/_build/html/source/quarchpy.config_files.html +25 -26
  116. quarchpy/docs/_build/html/source/quarchpy.connection_specific.html +239 -133
  117. quarchpy/docs/_build/html/source/quarchpy.debug.html +57 -54
  118. quarchpy/docs/_build/html/source/quarchpy.device.html +245 -211
  119. quarchpy/docs/_build/html/source/quarchpy.disk_test.html +75 -76
  120. quarchpy/docs/_build/html/source/quarchpy.fio.html +33 -34
  121. quarchpy/docs/_build/html/source/quarchpy.html +518 -61
  122. quarchpy/docs/_build/html/source/quarchpy.iometer.html +130 -44
  123. quarchpy/docs/_build/html/source/quarchpy.qis.html +420 -44
  124. quarchpy/docs/_build/html/source/quarchpy.qps.html +44 -43
  125. quarchpy/docs/_build/html/source/quarchpy.user_interface.html +70 -120
  126. quarchpy/docs/_build/html/source/quarchpy.utilities.html +39 -40
  127. quarchpy/docs/_build/html/source/readme.html +26 -27
  128. quarchpy/fio/__pycache__/FIO_interface.cpython-311.pyc +0 -0
  129. quarchpy/fio/__pycache__/__init__.cpython-311.pyc +0 -0
  130. quarchpy/fio/__pycache__/fioDiskFinder.cpython-311.pyc +0 -0
  131. quarchpy/iometer/__pycache__/__init__.cpython-311.pyc +0 -0
  132. quarchpy/iometer/__pycache__/gen_iometer_template.cpython-311.pyc +0 -0
  133. quarchpy/iometer/__pycache__/iometerFuncs.cpython-311.pyc +0 -0
  134. quarchpy/qis/__pycache__/StreamHeaderInfo.cpython-311.pyc +0 -0
  135. quarchpy/qis/__pycache__/__init__.cpython-311.pyc +0 -0
  136. quarchpy/qis/__pycache__/qisFuncs.cpython-311.pyc +0 -0
  137. quarchpy/qis/qisFuncs.py +25 -42
  138. quarchpy/qps/__pycache__/__init__.cpython-311.pyc +0 -0
  139. quarchpy/qps/__pycache__/qpsFuncs.cpython-311.pyc +0 -0
  140. quarchpy/qps/qpsFuncs.py +18 -19
  141. quarchpy/user_interface/__pycache__/__init__.cpython-311.pyc +0 -0
  142. quarchpy/user_interface/__pycache__/user_interface.cpython-311.pyc +0 -0
  143. quarchpy/user_interface/user_interface.py +156 -137
  144. quarchpy/utilities/TestCenter.py +11 -16
  145. quarchpy/utilities/Version.py +50 -0
  146. quarchpy/utilities/__pycache__/TestCenter.cpython-311.pyc +0 -0
  147. quarchpy/utilities/__pycache__/TimeValue.cpython-311.pyc +0 -0
  148. quarchpy/utilities/__pycache__/Version.cpython-311.pyc +0 -0
  149. quarchpy/utilities/__pycache__/__init__.cpython-311.pyc +0 -0
  150. quarchpy/venv/.gitignore +2 -0
  151. quarchpy/venv/Include/Python-ast.h +535 -0
  152. quarchpy/venv/Include/Python.h +181 -0
  153. quarchpy/venv/Include/abstract.h +1396 -0
  154. quarchpy/venv/Include/asdl.h +45 -0
  155. quarchpy/venv/Include/ast.h +13 -0
  156. quarchpy/venv/Include/bitset.h +32 -0
  157. quarchpy/venv/Include/boolobject.h +36 -0
  158. quarchpy/venv/Include/bufferobject.h +33 -0
  159. quarchpy/venv/Include/bytearrayobject.h +57 -0
  160. quarchpy/venv/Include/bytes_methods.h +75 -0
  161. quarchpy/venv/Include/bytesobject.h +27 -0
  162. quarchpy/venv/Include/cStringIO.h +73 -0
  163. quarchpy/venv/Include/cellobject.h +28 -0
  164. quarchpy/venv/Include/ceval.h +154 -0
  165. quarchpy/venv/Include/classobject.h +83 -0
  166. quarchpy/venv/Include/cobject.h +89 -0
  167. quarchpy/venv/Include/code.h +116 -0
  168. quarchpy/venv/Include/codecs.h +212 -0
  169. quarchpy/venv/Include/compile.h +40 -0
  170. quarchpy/venv/Include/complexobject.h +66 -0
  171. quarchpy/venv/Include/datetime.h +239 -0
  172. quarchpy/venv/Include/descrobject.h +94 -0
  173. quarchpy/venv/Include/dictobject.h +160 -0
  174. quarchpy/venv/Include/dtoa.h +15 -0
  175. quarchpy/venv/Include/enumobject.h +17 -0
  176. quarchpy/venv/Include/errcode.h +37 -0
  177. quarchpy/venv/Include/eval.h +25 -0
  178. quarchpy/venv/Include/fileobject.h +97 -0
  179. quarchpy/venv/Include/floatobject.h +140 -0
  180. quarchpy/venv/Include/frameobject.h +89 -0
  181. quarchpy/venv/Include/funcobject.h +76 -0
  182. quarchpy/venv/Include/genobject.h +40 -0
  183. quarchpy/venv/Include/graminit.h +87 -0
  184. quarchpy/venv/Include/grammar.h +94 -0
  185. quarchpy/venv/Include/import.h +71 -0
  186. quarchpy/venv/Include/intobject.h +84 -0
  187. quarchpy/venv/Include/intrcheck.h +15 -0
  188. quarchpy/venv/Include/iterobject.h +23 -0
  189. quarchpy/venv/Include/listobject.h +68 -0
  190. quarchpy/venv/Include/longintrepr.h +103 -0
  191. quarchpy/venv/Include/longobject.h +135 -0
  192. quarchpy/venv/Include/marshal.h +25 -0
  193. quarchpy/venv/Include/memoryobject.h +74 -0
  194. quarchpy/venv/Include/metagrammar.h +18 -0
  195. quarchpy/venv/Include/methodobject.h +93 -0
  196. quarchpy/venv/Include/modsupport.h +134 -0
  197. quarchpy/venv/Include/moduleobject.h +24 -0
  198. quarchpy/venv/Include/node.h +41 -0
  199. quarchpy/venv/Include/object.h +1046 -0
  200. quarchpy/venv/Include/objimpl.h +369 -0
  201. quarchpy/venv/Include/opcode.h +171 -0
  202. quarchpy/venv/Include/osdefs.h +63 -0
  203. quarchpy/venv/Include/parsetok.h +64 -0
  204. quarchpy/venv/Include/patchlevel.h +43 -0
  205. quarchpy/venv/Include/pgen.h +18 -0
  206. quarchpy/venv/Include/pgenheaders.h +43 -0
  207. quarchpy/venv/Include/py_curses.h +177 -0
  208. quarchpy/venv/Include/pyarena.h +62 -0
  209. quarchpy/venv/Include/pycapsule.h +56 -0
  210. quarchpy/venv/Include/pyconfig.h +770 -0
  211. quarchpy/venv/Include/pyctype.h +31 -0
  212. quarchpy/venv/Include/pydebug.h +41 -0
  213. quarchpy/venv/Include/pyerrors.h +329 -0
  214. quarchpy/venv/Include/pyexpat.h +50 -0
  215. quarchpy/venv/Include/pyfpe.h +176 -0
  216. quarchpy/venv/Include/pygetopt.h +18 -0
  217. quarchpy/venv/Include/pymacconfig.h +102 -0
  218. quarchpy/venv/Include/pymactoolbox.h +232 -0
  219. quarchpy/venv/Include/pymath.h +214 -0
  220. quarchpy/venv/Include/pymem.h +122 -0
  221. quarchpy/venv/Include/pyport.h +950 -0
  222. quarchpy/venv/Include/pystate.h +200 -0
  223. quarchpy/venv/Include/pystrcmp.h +23 -0
  224. quarchpy/venv/Include/pystrtod.h +45 -0
  225. quarchpy/venv/Include/pythonrun.h +181 -0
  226. quarchpy/venv/Include/pythread.h +41 -0
  227. quarchpy/venv/Include/rangeobject.h +28 -0
  228. quarchpy/venv/Include/setobject.h +99 -0
  229. quarchpy/venv/Include/sliceobject.h +50 -0
  230. quarchpy/venv/Include/stringobject.h +210 -0
  231. quarchpy/venv/Include/structmember.h +99 -0
  232. quarchpy/venv/Include/structseq.h +41 -0
  233. quarchpy/venv/Include/symtable.h +98 -0
  234. quarchpy/venv/Include/sysmodule.h +31 -0
  235. quarchpy/venv/Include/timefuncs.h +26 -0
  236. quarchpy/venv/Include/token.h +85 -0
  237. quarchpy/venv/Include/traceback.h +31 -0
  238. quarchpy/venv/Include/tupleobject.h +61 -0
  239. quarchpy/venv/Include/ucnhash.h +33 -0
  240. quarchpy/venv/Include/unicodeobject.h +1413 -0
  241. quarchpy/venv/Include/warnings.h +23 -0
  242. quarchpy/venv/Include/weakrefobject.h +82 -0
  243. quarchpy/venv/Lib/os.py +742 -0
  244. quarchpy/venv/Lib/os.pyc +0 -0
  245. quarchpy/venv/Lib/site-packages/_virtualenv.pth +1 -0
  246. quarchpy/venv/Lib/site-packages/_virtualenv.py +130 -0
  247. quarchpy/venv/Lib/site-packages/_virtualenv.pyc +0 -0
  248. quarchpy/venv/Lib/site-packages/easy_install.py +5 -0
  249. quarchpy/venv/Lib/site-packages/pip/__init__.py +18 -0
  250. quarchpy/venv/Lib/site-packages/pip/__main__.py +26 -0
  251. quarchpy/venv/Lib/site-packages/pip/_internal/__init__.py +17 -0
  252. quarchpy/venv/Lib/site-packages/pip/_internal/build_env.py +242 -0
  253. quarchpy/venv/Lib/site-packages/pip/_internal/cache.py +346 -0
  254. quarchpy/venv/Lib/site-packages/pip/_internal/cli/__init__.py +4 -0
  255. quarchpy/venv/Lib/site-packages/pip/_internal/cli/autocompletion.py +164 -0
  256. quarchpy/venv/Lib/site-packages/pip/_internal/cli/base_command.py +260 -0
  257. quarchpy/venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py +971 -0
  258. quarchpy/venv/Lib/site-packages/pip/_internal/cli/command_context.py +36 -0
  259. quarchpy/venv/Lib/site-packages/pip/_internal/cli/main.py +75 -0
  260. quarchpy/venv/Lib/site-packages/pip/_internal/cli/main_parser.py +96 -0
  261. quarchpy/venv/Lib/site-packages/pip/_internal/cli/parser.py +285 -0
  262. quarchpy/venv/Lib/site-packages/pip/_internal/cli/progress_bars.py +280 -0
  263. quarchpy/venv/Lib/site-packages/pip/_internal/cli/req_command.py +436 -0
  264. quarchpy/venv/Lib/site-packages/pip/_internal/cli/spinners.py +173 -0
  265. quarchpy/venv/Lib/site-packages/pip/_internal/cli/status_codes.py +8 -0
  266. quarchpy/venv/Lib/site-packages/pip/_internal/commands/__init__.py +123 -0
  267. quarchpy/venv/Lib/site-packages/pip/_internal/commands/cache.py +234 -0
  268. quarchpy/venv/Lib/site-packages/pip/_internal/commands/check.py +51 -0
  269. quarchpy/venv/Lib/site-packages/pip/_internal/commands/completion.py +98 -0
  270. quarchpy/venv/Lib/site-packages/pip/_internal/commands/configuration.py +280 -0
  271. quarchpy/venv/Lib/site-packages/pip/_internal/commands/debug.py +230 -0
  272. quarchpy/venv/Lib/site-packages/pip/_internal/commands/download.py +143 -0
  273. quarchpy/venv/Lib/site-packages/pip/_internal/commands/freeze.py +116 -0
  274. quarchpy/venv/Lib/site-packages/pip/_internal/commands/hash.py +63 -0
  275. quarchpy/venv/Lib/site-packages/pip/_internal/commands/help.py +46 -0
  276. quarchpy/venv/Lib/site-packages/pip/_internal/commands/install.py +737 -0
  277. quarchpy/venv/Lib/site-packages/pip/_internal/commands/list.py +327 -0
  278. quarchpy/venv/Lib/site-packages/pip/_internal/commands/search.py +169 -0
  279. quarchpy/venv/Lib/site-packages/pip/_internal/commands/show.py +186 -0
  280. quarchpy/venv/Lib/site-packages/pip/_internal/commands/uninstall.py +95 -0
  281. quarchpy/venv/Lib/site-packages/pip/_internal/commands/wheel.py +198 -0
  282. quarchpy/venv/Lib/site-packages/pip/_internal/configuration.py +407 -0
  283. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/__init__.py +24 -0
  284. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/base.py +46 -0
  285. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/installed.py +25 -0
  286. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/sdist.py +105 -0
  287. quarchpy/venv/Lib/site-packages/pip/_internal/distributions/wheel.py +37 -0
  288. quarchpy/venv/Lib/site-packages/pip/_internal/exceptions.py +391 -0
  289. quarchpy/venv/Lib/site-packages/pip/_internal/index/__init__.py +2 -0
  290. quarchpy/venv/Lib/site-packages/pip/_internal/index/collector.py +667 -0
  291. quarchpy/venv/Lib/site-packages/pip/_internal/index/package_finder.py +1015 -0
  292. quarchpy/venv/Lib/site-packages/pip/_internal/locations.py +193 -0
  293. quarchpy/venv/Lib/site-packages/pip/_internal/main.py +16 -0
  294. quarchpy/venv/Lib/site-packages/pip/_internal/models/__init__.py +2 -0
  295. quarchpy/venv/Lib/site-packages/pip/_internal/models/candidate.py +39 -0
  296. quarchpy/venv/Lib/site-packages/pip/_internal/models/direct_url.py +243 -0
  297. quarchpy/venv/Lib/site-packages/pip/_internal/models/format_control.py +92 -0
  298. quarchpy/venv/Lib/site-packages/pip/_internal/models/index.py +34 -0
  299. quarchpy/venv/Lib/site-packages/pip/_internal/models/link.py +246 -0
  300. quarchpy/venv/Lib/site-packages/pip/_internal/models/scheme.py +31 -0
  301. quarchpy/venv/Lib/site-packages/pip/_internal/models/search_scope.py +135 -0
  302. quarchpy/venv/Lib/site-packages/pip/_internal/models/selection_prefs.py +50 -0
  303. quarchpy/venv/Lib/site-packages/pip/_internal/models/target_python.py +117 -0
  304. quarchpy/venv/Lib/site-packages/pip/_internal/models/wheel.py +78 -0
  305. quarchpy/venv/Lib/site-packages/pip/_internal/network/__init__.py +2 -0
  306. quarchpy/venv/Lib/site-packages/pip/_internal/network/auth.py +310 -0
  307. quarchpy/venv/Lib/site-packages/pip/_internal/network/cache.py +79 -0
  308. quarchpy/venv/Lib/site-packages/pip/_internal/network/download.py +202 -0
  309. quarchpy/venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py +231 -0
  310. quarchpy/venv/Lib/site-packages/pip/_internal/network/session.py +428 -0
  311. quarchpy/venv/Lib/site-packages/pip/_internal/network/utils.py +97 -0
  312. quarchpy/venv/Lib/site-packages/pip/_internal/network/xmlrpc.py +53 -0
  313. quarchpy/venv/Lib/site-packages/pip/_internal/operations/__init__.py +0 -0
  314. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  315. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/metadata.py +38 -0
  316. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py +77 -0
  317. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/wheel.py +47 -0
  318. quarchpy/venv/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py +113 -0
  319. quarchpy/venv/Lib/site-packages/pip/_internal/operations/check.py +155 -0
  320. quarchpy/venv/Lib/site-packages/pip/_internal/operations/freeze.py +277 -0
  321. quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/__init__.py +2 -0
  322. quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py +52 -0
  323. quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/legacy.py +130 -0
  324. quarchpy/venv/Lib/site-packages/pip/_internal/operations/install/wheel.py +846 -0
  325. quarchpy/venv/Lib/site-packages/pip/_internal/operations/prepare.py +608 -0
  326. quarchpy/venv/Lib/site-packages/pip/_internal/pyproject.py +196 -0
  327. quarchpy/venv/Lib/site-packages/pip/_internal/req/__init__.py +103 -0
  328. quarchpy/venv/Lib/site-packages/pip/_internal/req/constructors.py +476 -0
  329. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_file.py +574 -0
  330. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_install.py +907 -0
  331. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_set.py +204 -0
  332. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_tracker.py +151 -0
  333. quarchpy/venv/Lib/site-packages/pip/_internal/req/req_uninstall.py +657 -0
  334. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/__init__.py +0 -0
  335. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/base.py +21 -0
  336. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  337. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +473 -0
  338. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  339. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +156 -0
  340. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +604 -0
  341. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +504 -0
  342. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +101 -0
  343. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +174 -0
  344. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +84 -0
  345. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +201 -0
  346. quarchpy/venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +296 -0
  347. quarchpy/venv/Lib/site-packages/pip/_internal/self_outdated_check.py +197 -0
  348. quarchpy/venv/Lib/site-packages/pip/_internal/utils/__init__.py +0 -0
  349. quarchpy/venv/Lib/site-packages/pip/_internal/utils/appdirs.py +44 -0
  350. quarchpy/venv/Lib/site-packages/pip/_internal/utils/compat.py +293 -0
  351. quarchpy/venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +178 -0
  352. quarchpy/venv/Lib/site-packages/pip/_internal/utils/datetime.py +14 -0
  353. quarchpy/venv/Lib/site-packages/pip/_internal/utils/deprecation.py +104 -0
  354. quarchpy/venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +126 -0
  355. quarchpy/venv/Lib/site-packages/pip/_internal/utils/distutils_args.py +48 -0
  356. quarchpy/venv/Lib/site-packages/pip/_internal/utils/encoding.py +41 -0
  357. quarchpy/venv/Lib/site-packages/pip/_internal/utils/entrypoints.py +31 -0
  358. quarchpy/venv/Lib/site-packages/pip/_internal/utils/filesystem.py +224 -0
  359. quarchpy/venv/Lib/site-packages/pip/_internal/utils/filetypes.py +26 -0
  360. quarchpy/venv/Lib/site-packages/pip/_internal/utils/glibc.py +98 -0
  361. quarchpy/venv/Lib/site-packages/pip/_internal/utils/hashes.py +169 -0
  362. quarchpy/venv/Lib/site-packages/pip/_internal/utils/inject_securetransport.py +36 -0
  363. quarchpy/venv/Lib/site-packages/pip/_internal/utils/logging.py +399 -0
  364. quarchpy/venv/Lib/site-packages/pip/_internal/utils/misc.py +962 -0
  365. quarchpy/venv/Lib/site-packages/pip/_internal/utils/models.py +44 -0
  366. quarchpy/venv/Lib/site-packages/pip/_internal/utils/packaging.py +95 -0
  367. quarchpy/venv/Lib/site-packages/pip/_internal/utils/parallel.py +107 -0
  368. quarchpy/venv/Lib/site-packages/pip/_internal/utils/pkg_resources.py +44 -0
  369. quarchpy/venv/Lib/site-packages/pip/_internal/utils/setuptools_build.py +181 -0
  370. quarchpy/venv/Lib/site-packages/pip/_internal/utils/subprocess.py +299 -0
  371. quarchpy/venv/Lib/site-packages/pip/_internal/utils/temp_dir.py +284 -0
  372. quarchpy/venv/Lib/site-packages/pip/_internal/utils/typing.py +38 -0
  373. quarchpy/venv/Lib/site-packages/pip/_internal/utils/unpacking.py +281 -0
  374. quarchpy/venv/Lib/site-packages/pip/_internal/utils/urls.py +55 -0
  375. quarchpy/venv/Lib/site-packages/pip/_internal/utils/virtualenv.py +119 -0
  376. quarchpy/venv/Lib/site-packages/pip/_internal/utils/wheel.py +225 -0
  377. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/__init__.py +15 -0
  378. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/bazaar.py +123 -0
  379. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/git.py +454 -0
  380. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/mercurial.py +172 -0
  381. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/subversion.py +340 -0
  382. quarchpy/venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +735 -0
  383. quarchpy/venv/Lib/site-packages/pip/_internal/wheel_builder.py +362 -0
  384. quarchpy/venv/Lib/site-packages/pip/_vendor/__init__.py +114 -0
  385. quarchpy/venv/Lib/site-packages/pip/_vendor/appdirs.py +633 -0
  386. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +11 -0
  387. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +57 -0
  388. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +133 -0
  389. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +39 -0
  390. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +2 -0
  391. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +146 -0
  392. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +33 -0
  393. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/compat.py +29 -0
  394. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +376 -0
  395. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +80 -0
  396. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +135 -0
  397. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +188 -0
  398. quarchpy/venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +29 -0
  399. quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/__init__.py +3 -0
  400. quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/__main__.py +12 -0
  401. quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/cacert.pem +4606 -0
  402. quarchpy/venv/Lib/site-packages/pip/_vendor/certifi/core.py +60 -0
  403. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/__init__.py +39 -0
  404. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/big5freq.py +386 -0
  405. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/big5prober.py +47 -0
  406. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/chardistribution.py +233 -0
  407. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py +106 -0
  408. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/charsetprober.py +145 -0
  409. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py +1 -0
  410. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py +85 -0
  411. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py +88 -0
  412. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/compat.py +34 -0
  413. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/cp949prober.py +49 -0
  414. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/enums.py +76 -0
  415. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/escprober.py +101 -0
  416. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/escsm.py +246 -0
  417. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py +92 -0
  418. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py +195 -0
  419. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euckrprober.py +47 -0
  420. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py +387 -0
  421. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/euctwprober.py +46 -0
  422. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py +283 -0
  423. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py +46 -0
  424. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py +292 -0
  425. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/jisfreq.py +325 -0
  426. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/jpcntx.py +233 -0
  427. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +228 -0
  428. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langcyrillicmodel.py +333 -0
  429. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py +225 -0
  430. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py +200 -0
  431. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py +225 -0
  432. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py +199 -0
  433. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py +193 -0
  434. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/latin1prober.py +145 -0
  435. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py +91 -0
  436. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +54 -0
  437. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/mbcssm.py +572 -0
  438. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py +132 -0
  439. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +73 -0
  440. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/sjisprober.py +92 -0
  441. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/universaldetector.py +286 -0
  442. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/utf8prober.py +82 -0
  443. quarchpy/venv/Lib/site-packages/pip/_vendor/chardet/version.py +9 -0
  444. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/__init__.py +6 -0
  445. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/ansi.py +102 -0
  446. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py +258 -0
  447. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/initialise.py +80 -0
  448. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/win32.py +152 -0
  449. quarchpy/venv/Lib/site-packages/pip/_vendor/colorama/winterm.py +169 -0
  450. quarchpy/venv/Lib/site-packages/pip/_vendor/contextlib2.py +518 -0
  451. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/__init__.py +23 -0
  452. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/__init__.py +6 -0
  453. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/misc.py +41 -0
  454. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/shutil.py +764 -0
  455. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg +84 -0
  456. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/sysconfig.py +786 -0
  457. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/_backport/tarfile.py +2607 -0
  458. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/compat.py +1120 -0
  459. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/database.py +1339 -0
  460. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/index.py +516 -0
  461. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/locators.py +1302 -0
  462. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/manifest.py +393 -0
  463. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/markers.py +131 -0
  464. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/metadata.py +1056 -0
  465. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/resources.py +355 -0
  466. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/scripts.py +419 -0
  467. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/t32.exe +0 -0
  468. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/t64.exe +0 -0
  469. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/util.py +1761 -0
  470. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/version.py +736 -0
  471. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/w32.exe +0 -0
  472. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/w64.exe +0 -0
  473. quarchpy/venv/Lib/site-packages/pip/_vendor/distlib/wheel.py +1018 -0
  474. quarchpy/venv/Lib/site-packages/pip/_vendor/distro.py +1230 -0
  475. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/__init__.py +35 -0
  476. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_ihatexml.py +289 -0
  477. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_inputstream.py +918 -0
  478. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_tokenizer.py +1735 -0
  479. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/__init__.py +5 -0
  480. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/_base.py +40 -0
  481. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_trie/py.py +67 -0
  482. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/_utils.py +159 -0
  483. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/constants.py +2946 -0
  484. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/__init__.py +0 -0
  485. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py +29 -0
  486. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/base.py +12 -0
  487. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py +73 -0
  488. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/lint.py +93 -0
  489. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/optionaltags.py +207 -0
  490. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/sanitizer.py +916 -0
  491. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/filters/whitespace.py +38 -0
  492. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/html5parser.py +2795 -0
  493. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/serializer.py +409 -0
  494. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py +30 -0
  495. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py +54 -0
  496. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treeadapters/sax.py +50 -0
  497. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py +88 -0
  498. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/base.py +417 -0
  499. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/dom.py +239 -0
  500. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree.py +343 -0
  501. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py +392 -0
  502. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py +154 -0
  503. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/base.py +252 -0
  504. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/dom.py +43 -0
  505. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree.py +131 -0
  506. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py +215 -0
  507. quarchpy/venv/Lib/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py +69 -0
  508. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/__init__.py +2 -0
  509. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/codec.py +118 -0
  510. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/compat.py +12 -0
  511. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/core.py +400 -0
  512. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/idnadata.py +2050 -0
  513. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/intranges.py +53 -0
  514. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/package_data.py +2 -0
  515. quarchpy/venv/Lib/site-packages/pip/_vendor/idna/uts46data.py +8357 -0
  516. quarchpy/venv/Lib/site-packages/pip/_vendor/ipaddress.py +2420 -0
  517. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py +54 -0
  518. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/_version.py +1 -0
  519. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
  520. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/ext.py +191 -0
  521. quarchpy/venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py +1063 -0
  522. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/__about__.py +27 -0
  523. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/__init__.py +26 -0
  524. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/_compat.py +38 -0
  525. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/_structures.py +86 -0
  526. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/_typing.py +48 -0
  527. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/markers.py +328 -0
  528. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/requirements.py +151 -0
  529. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py +864 -0
  530. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/tags.py +852 -0
  531. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/utils.py +67 -0
  532. quarchpy/venv/Lib/site-packages/pip/_vendor/packaging/version.py +556 -0
  533. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/__init__.py +6 -0
  534. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/_in_process.py +280 -0
  535. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/build.py +124 -0
  536. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/check.py +203 -0
  537. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/colorlog.py +115 -0
  538. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/compat.py +34 -0
  539. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/dirtools.py +44 -0
  540. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/envbuild.py +167 -0
  541. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/meta.py +92 -0
  542. quarchpy/venv/Lib/site-packages/pip/_vendor/pep517/wrappers.py +327 -0
  543. quarchpy/venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +3296 -0
  544. quarchpy/venv/Lib/site-packages/pip/_vendor/pkg_resources/py31compat.py +23 -0
  545. quarchpy/venv/Lib/site-packages/pip/_vendor/progress/__init__.py +177 -0
  546. quarchpy/venv/Lib/site-packages/pip/_vendor/progress/bar.py +91 -0
  547. quarchpy/venv/Lib/site-packages/pip/_vendor/progress/counter.py +41 -0
  548. quarchpy/venv/Lib/site-packages/pip/_vendor/progress/spinner.py +43 -0
  549. quarchpy/venv/Lib/site-packages/pip/_vendor/pyparsing.py +7107 -0
  550. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/__init__.py +144 -0
  551. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/__version__.py +14 -0
  552. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +42 -0
  553. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/adapters.py +533 -0
  554. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/api.py +161 -0
  555. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/auth.py +305 -0
  556. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/certs.py +18 -0
  557. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/compat.py +76 -0
  558. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/cookies.py +549 -0
  559. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/exceptions.py +123 -0
  560. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/help.py +119 -0
  561. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/hooks.py +34 -0
  562. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/models.py +956 -0
  563. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/packages.py +16 -0
  564. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/sessions.py +781 -0
  565. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/status_codes.py +123 -0
  566. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/structures.py +105 -0
  567. quarchpy/venv/Lib/site-packages/pip/_vendor/requests/utils.py +988 -0
  568. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +26 -0
  569. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/compat/__init__.py +0 -0
  570. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py +6 -0
  571. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/providers.py +119 -0
  572. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +37 -0
  573. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py +454 -0
  574. quarchpy/venv/Lib/site-packages/pip/_vendor/resolvelib/structs.py +149 -0
  575. quarchpy/venv/Lib/site-packages/pip/_vendor/retrying.py +267 -0
  576. quarchpy/venv/Lib/site-packages/pip/_vendor/six.py +982 -0
  577. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/__init__.py +25 -0
  578. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/decoder.py +1057 -0
  579. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/encoder.py +304 -0
  580. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/ordered.py +15 -0
  581. quarchpy/venv/Lib/site-packages/pip/_vendor/toml/tz.py +24 -0
  582. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/__init__.py +85 -0
  583. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/_collections.py +337 -0
  584. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/_version.py +2 -0
  585. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/connection.py +535 -0
  586. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +1067 -0
  587. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  588. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
  589. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  590. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
  591. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +396 -0
  592. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
  593. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +121 -0
  594. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +509 -0
  595. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +920 -0
  596. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
  597. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +313 -0
  598. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/fields.py +274 -0
  599. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
  600. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py +5 -0
  601. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  602. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
  603. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +1021 -0
  604. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py +22 -0
  605. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py +160 -0
  606. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +536 -0
  607. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/request.py +170 -0
  608. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/response.py +821 -0
  609. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
  610. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +150 -0
  611. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +56 -0
  612. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
  613. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/request.py +143 -0
  614. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
  615. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +601 -0
  616. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +474 -0
  617. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
  618. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +268 -0
  619. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/url.py +430 -0
  620. quarchpy/venv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +153 -0
  621. quarchpy/venv/Lib/site-packages/pip/_vendor/vendor.txt +24 -0
  622. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/__init__.py +342 -0
  623. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/labels.py +231 -0
  624. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/mklabels.py +59 -0
  625. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/tests.py +153 -0
  626. quarchpy/venv/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py +325 -0
  627. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/INSTALLER +1 -0
  628. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/LICENSE.txt +20 -0
  629. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/METADATA +94 -0
  630. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/RECORD +812 -0
  631. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/WHEEL +6 -0
  632. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/entry_points.txt +5 -0
  633. quarchpy/venv/Lib/site-packages/pip-20.3.4.dist-info/top_level.txt +1 -0
  634. quarchpy/venv/Lib/site-packages/pip-20.3.4.virtualenv +0 -0
  635. quarchpy/venv/Lib/site-packages/pkg_resources/__init__.py +3296 -0
  636. quarchpy/venv/Lib/site-packages/pkg_resources/__init__.pyc +0 -0
  637. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/__init__.py +0 -0
  638. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/__init__.pyc +0 -0
  639. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/appdirs.py +608 -0
  640. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/appdirs.pyc +0 -0
  641. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.py +21 -0
  642. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__about__.pyc +0 -0
  643. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py +14 -0
  644. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.pyc +0 -0
  645. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_compat.py +30 -0
  646. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_compat.pyc +0 -0
  647. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py +68 -0
  648. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.pyc +0 -0
  649. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.py +301 -0
  650. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/markers.pyc +0 -0
  651. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py +127 -0
  652. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.pyc +0 -0
  653. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py +774 -0
  654. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.pyc +0 -0
  655. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/utils.py +14 -0
  656. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/version.py +393 -0
  657. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/packaging/version.pyc +0 -0
  658. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.py +5742 -0
  659. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/pyparsing.pyc +0 -0
  660. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/six.py +868 -0
  661. quarchpy/venv/Lib/site-packages/pkg_resources/_vendor/six.pyc +0 -0
  662. quarchpy/venv/Lib/site-packages/pkg_resources/extern/__init__.py +73 -0
  663. quarchpy/venv/Lib/site-packages/pkg_resources/extern/__init__.pyc +0 -0
  664. quarchpy/venv/Lib/site-packages/pkg_resources/py31compat.py +23 -0
  665. quarchpy/venv/Lib/site-packages/pkg_resources/py31compat.pyc +0 -0
  666. quarchpy/venv/Lib/site-packages/setuptools/__init__.py +245 -0
  667. quarchpy/venv/Lib/site-packages/setuptools/_deprecation_warning.py +7 -0
  668. quarchpy/venv/Lib/site-packages/setuptools/_imp.py +73 -0
  669. quarchpy/venv/Lib/site-packages/setuptools/_vendor/__init__.py +0 -0
  670. quarchpy/venv/Lib/site-packages/setuptools/_vendor/ordered_set.py +488 -0
  671. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/__about__.py +27 -0
  672. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/__init__.py +26 -0
  673. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/_compat.py +31 -0
  674. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/_structures.py +68 -0
  675. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/markers.py +296 -0
  676. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/requirements.py +138 -0
  677. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py +749 -0
  678. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/tags.py +404 -0
  679. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/utils.py +57 -0
  680. quarchpy/venv/Lib/site-packages/setuptools/_vendor/packaging/version.py +420 -0
  681. quarchpy/venv/Lib/site-packages/setuptools/_vendor/pyparsing.py +5742 -0
  682. quarchpy/venv/Lib/site-packages/setuptools/_vendor/six.py +868 -0
  683. quarchpy/venv/Lib/site-packages/setuptools/archive_util.py +173 -0
  684. quarchpy/venv/Lib/site-packages/setuptools/build_meta.py +264 -0
  685. quarchpy/venv/Lib/site-packages/setuptools/cli-32.exe +0 -0
  686. quarchpy/venv/Lib/site-packages/setuptools/cli-64.exe +0 -0
  687. quarchpy/venv/Lib/site-packages/setuptools/cli.exe +0 -0
  688. quarchpy/venv/Lib/site-packages/setuptools/command/__init__.py +17 -0
  689. quarchpy/venv/Lib/site-packages/setuptools/command/alias.py +80 -0
  690. quarchpy/venv/Lib/site-packages/setuptools/command/bdist_egg.py +502 -0
  691. quarchpy/venv/Lib/site-packages/setuptools/command/bdist_rpm.py +43 -0
  692. quarchpy/venv/Lib/site-packages/setuptools/command/bdist_wininst.py +21 -0
  693. quarchpy/venv/Lib/site-packages/setuptools/command/build_clib.py +98 -0
  694. quarchpy/venv/Lib/site-packages/setuptools/command/build_ext.py +327 -0
  695. quarchpy/venv/Lib/site-packages/setuptools/command/build_py.py +270 -0
  696. quarchpy/venv/Lib/site-packages/setuptools/command/develop.py +221 -0
  697. quarchpy/venv/Lib/site-packages/setuptools/command/dist_info.py +36 -0
  698. quarchpy/venv/Lib/site-packages/setuptools/command/easy_install.py +2347 -0
  699. quarchpy/venv/Lib/site-packages/setuptools/command/egg_info.py +717 -0
  700. quarchpy/venv/Lib/site-packages/setuptools/command/install.py +125 -0
  701. quarchpy/venv/Lib/site-packages/setuptools/command/install_egg_info.py +62 -0
  702. quarchpy/venv/Lib/site-packages/setuptools/command/install_lib.py +121 -0
  703. quarchpy/venv/Lib/site-packages/setuptools/command/install_scripts.py +65 -0
  704. quarchpy/venv/Lib/site-packages/setuptools/command/launcher manifest.xml +15 -0
  705. quarchpy/venv/Lib/site-packages/setuptools/command/py36compat.py +136 -0
  706. quarchpy/venv/Lib/site-packages/setuptools/command/register.py +18 -0
  707. quarchpy/venv/Lib/site-packages/setuptools/command/rotate.py +66 -0
  708. quarchpy/venv/Lib/site-packages/setuptools/command/saveopts.py +22 -0
  709. quarchpy/venv/Lib/site-packages/setuptools/command/sdist.py +252 -0
  710. quarchpy/venv/Lib/site-packages/setuptools/command/setopt.py +149 -0
  711. quarchpy/venv/Lib/site-packages/setuptools/command/test.py +279 -0
  712. quarchpy/venv/Lib/site-packages/setuptools/command/upload.py +17 -0
  713. quarchpy/venv/Lib/site-packages/setuptools/command/upload_docs.py +206 -0
  714. quarchpy/venv/Lib/site-packages/setuptools/config.py +659 -0
  715. quarchpy/venv/Lib/site-packages/setuptools/dep_util.py +23 -0
  716. quarchpy/venv/Lib/site-packages/setuptools/depends.py +176 -0
  717. quarchpy/venv/Lib/site-packages/setuptools/dist.py +1274 -0
  718. quarchpy/venv/Lib/site-packages/setuptools/errors.py +16 -0
  719. quarchpy/venv/Lib/site-packages/setuptools/extension.py +57 -0
  720. quarchpy/venv/Lib/site-packages/setuptools/extern/__init__.py +73 -0
  721. quarchpy/venv/Lib/site-packages/setuptools/glob.py +174 -0
  722. quarchpy/venv/Lib/site-packages/setuptools/gui-32.exe +0 -0
  723. quarchpy/venv/Lib/site-packages/setuptools/gui-64.exe +0 -0
  724. quarchpy/venv/Lib/site-packages/setuptools/gui.exe +0 -0
  725. quarchpy/venv/Lib/site-packages/setuptools/installer.py +150 -0
  726. quarchpy/venv/Lib/site-packages/setuptools/launch.py +35 -0
  727. quarchpy/venv/Lib/site-packages/setuptools/lib2to3_ex.py +62 -0
  728. quarchpy/venv/Lib/site-packages/setuptools/monkey.py +179 -0
  729. quarchpy/venv/Lib/site-packages/setuptools/msvc.py +1679 -0
  730. quarchpy/venv/Lib/site-packages/setuptools/namespaces.py +107 -0
  731. quarchpy/venv/Lib/site-packages/setuptools/package_index.py +1136 -0
  732. quarchpy/venv/Lib/site-packages/setuptools/py27compat.py +60 -0
  733. quarchpy/venv/Lib/site-packages/setuptools/py31compat.py +32 -0
  734. quarchpy/venv/Lib/site-packages/setuptools/py33compat.py +59 -0
  735. quarchpy/venv/Lib/site-packages/setuptools/py34compat.py +13 -0
  736. quarchpy/venv/Lib/site-packages/setuptools/sandbox.py +491 -0
  737. quarchpy/venv/Lib/site-packages/setuptools/script (dev).tmpl +6 -0
  738. quarchpy/venv/Lib/site-packages/setuptools/script.tmpl +3 -0
  739. quarchpy/venv/Lib/site-packages/setuptools/site-patch.py +74 -0
  740. quarchpy/venv/Lib/site-packages/setuptools/ssl_support.py +260 -0
  741. quarchpy/venv/Lib/site-packages/setuptools/unicode_utils.py +44 -0
  742. quarchpy/venv/Lib/site-packages/setuptools/version.py +6 -0
  743. quarchpy/venv/Lib/site-packages/setuptools/wheel.py +220 -0
  744. quarchpy/venv/Lib/site-packages/setuptools/windows_support.py +29 -0
  745. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/INSTALLER +1 -0
  746. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/LICENSE +19 -0
  747. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/METADATA +86 -0
  748. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/RECORD +207 -0
  749. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/WHEEL +6 -0
  750. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/dependency_links.txt +2 -0
  751. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/entry_points.txt +69 -0
  752. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/top_level.txt +3 -0
  753. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.dist-info/zip-safe +1 -0
  754. quarchpy/venv/Lib/site-packages/setuptools-44.1.1.virtualenv +0 -0
  755. quarchpy/venv/Lib/site-packages/wheel/__init__.py +1 -0
  756. quarchpy/venv/Lib/site-packages/wheel/__main__.py +19 -0
  757. quarchpy/venv/Lib/site-packages/wheel/bdist_wheel.py +492 -0
  758. quarchpy/venv/Lib/site-packages/wheel/cli/__init__.py +88 -0
  759. quarchpy/venv/Lib/site-packages/wheel/cli/convert.py +269 -0
  760. quarchpy/venv/Lib/site-packages/wheel/cli/pack.py +82 -0
  761. quarchpy/venv/Lib/site-packages/wheel/cli/unpack.py +25 -0
  762. quarchpy/venv/Lib/site-packages/wheel/macosx_libfile.py +428 -0
  763. quarchpy/venv/Lib/site-packages/wheel/metadata.py +133 -0
  764. quarchpy/venv/Lib/site-packages/wheel/pkginfo.py +43 -0
  765. quarchpy/venv/Lib/site-packages/wheel/util.py +46 -0
  766. quarchpy/venv/Lib/site-packages/wheel/vendored/__init__.py +0 -0
  767. quarchpy/venv/Lib/site-packages/wheel/vendored/packaging/__init__.py +0 -0
  768. quarchpy/venv/Lib/site-packages/wheel/vendored/packaging/_typing.py +48 -0
  769. quarchpy/venv/Lib/site-packages/wheel/vendored/packaging/tags.py +866 -0
  770. quarchpy/venv/Lib/site-packages/wheel/wheelfile.py +181 -0
  771. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/INSTALLER +1 -0
  772. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/LICENSE.txt +22 -0
  773. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/METADATA +69 -0
  774. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/RECORD +49 -0
  775. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/WHEEL +6 -0
  776. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/entry_points.txt +6 -0
  777. quarchpy/venv/Lib/site-packages/wheel-0.37.1.dist-info/top_level.txt +1 -0
  778. quarchpy/venv/Lib/site-packages/wheel-0.37.1.virtualenv +0 -0
  779. quarchpy/venv/Lib/site.py +190 -0
  780. quarchpy/venv/Lib/site.pyc +0 -0
  781. quarchpy/venv/Scripts/activate +83 -0
  782. quarchpy/venv/Scripts/activate.bat +39 -0
  783. quarchpy/venv/Scripts/activate.fish +100 -0
  784. quarchpy/venv/Scripts/activate.nu +41 -0
  785. quarchpy/venv/Scripts/activate.ps1 +60 -0
  786. quarchpy/venv/Scripts/activate_this.py +32 -0
  787. quarchpy/venv/Scripts/deactivate.bat +19 -0
  788. quarchpy/venv/Scripts/deactivate.nu +11 -0
  789. quarchpy/venv/Scripts/easy_install-2.7.exe +0 -0
  790. quarchpy/venv/Scripts/easy_install.exe +0 -0
  791. quarchpy/venv/Scripts/easy_install2.7.exe +0 -0
  792. quarchpy/venv/Scripts/easy_install2.exe +0 -0
  793. quarchpy/venv/Scripts/pip-2.7.exe +0 -0
  794. quarchpy/venv/Scripts/pip.exe +0 -0
  795. quarchpy/venv/Scripts/pip2.7.exe +0 -0
  796. quarchpy/venv/Scripts/pip2.exe +0 -0
  797. quarchpy/venv/Scripts/pydoc.bat +1 -0
  798. quarchpy/venv/Scripts/python.exe +0 -0
  799. quarchpy/venv/Scripts/python27.dll +0 -0
  800. quarchpy/venv/Scripts/pythonw.exe +0 -0
  801. quarchpy/venv/Scripts/wheel-2.7.exe +0 -0
  802. quarchpy/venv/Scripts/wheel.exe +0 -0
  803. quarchpy/venv/Scripts/wheel2.7.exe +0 -0
  804. quarchpy/venv/Scripts/wheel2.exe +0 -0
  805. quarchpy/venv/libs/_bsddb.lib +0 -0
  806. quarchpy/venv/libs/_ctypes.lib +0 -0
  807. quarchpy/venv/libs/_ctypes_test.lib +0 -0
  808. quarchpy/venv/libs/_elementtree.lib +0 -0
  809. quarchpy/venv/libs/_hashlib.lib +0 -0
  810. quarchpy/venv/libs/_msi.lib +0 -0
  811. quarchpy/venv/libs/_multiprocessing.lib +0 -0
  812. quarchpy/venv/libs/_socket.lib +0 -0
  813. quarchpy/venv/libs/_sqlite3.lib +0 -0
  814. quarchpy/venv/libs/_ssl.lib +0 -0
  815. quarchpy/venv/libs/_testcapi.lib +0 -0
  816. quarchpy/venv/libs/_tkinter.lib +0 -0
  817. quarchpy/venv/libs/bz2.lib +0 -0
  818. quarchpy/venv/libs/libpython27.a +0 -0
  819. quarchpy/venv/libs/pyexpat.lib +0 -0
  820. quarchpy/venv/libs/python27.lib +0 -0
  821. quarchpy/venv/libs/select.lib +0 -0
  822. quarchpy/venv/libs/unicodedata.lib +0 -0
  823. quarchpy/venv/libs/winsound.lib +0 -0
  824. quarchpy/venv/pyvenv.cfg +8 -0
  825. {quarchpy-2.1.13.dev1.dist-info → quarchpy-2.1.14.dist-info}/METADATA +12 -2
  826. quarchpy-2.1.14.dist-info/RECORD +1216 -0
  827. quarchpy/.idea/inspectionProfiles/Project_Default.xml +0 -26
  828. quarchpy/connection_specific/QPS/qps_lib/QuarchCommon-0.2.4.jar +0 -0
  829. quarchpy/connection_specific/connection_QIS.py.bak +0 -1821
  830. quarchpy/connection_specific/usb_libs/__pycache__/libusb1.cpython-311.pyc +0 -0
  831. quarchpy/connection_specific/usb_libs/__pycache__/usb1.cpython-311.pyc +0 -0
  832. quarchpy/debug/TextScanIP.py +0 -11
  833. quarchpy/device/device.py.bak +0 -504
  834. quarchpy/device/scanDevices.py.bak +0 -661
  835. quarchpy-2.1.13.dev1.dist-info/RECORD +0 -531
  836. {quarchpy-2.1.13.dev1.dist-info → quarchpy-2.1.14.dist-info}/WHEEL +0 -0
  837. {quarchpy-2.1.13.dev1.dist-info → quarchpy-2.1.14.dist-info}/top_level.txt +0 -0
@@ -4,22 +4,24 @@
4
4
  *
5
5
  * Sphinx JavaScript utilities for the full-text search.
6
6
  *
7
- * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
7
+ * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
8
8
  * :license: BSD, see LICENSE for details.
9
9
  *
10
10
  */
11
+ "use strict";
11
12
 
12
- if (!Scorer) {
13
- /**
14
- * Simple result scoring code.
15
- */
13
+ /**
14
+ * Simple result scoring code.
15
+ */
16
+ if (typeof Scorer === "undefined") {
16
17
  var Scorer = {
17
18
  // Implement the following function to further tweak the score for each result
18
- // The function takes a result array [filename, title, anchor, descr, score]
19
+ // The function takes a result array [docname, title, anchor, descr, score, filename]
19
20
  // and returns the new score.
20
21
  /*
21
- score: function(result) {
22
- return result[4];
22
+ score: result => {
23
+ const [docname, title, anchor, descr, score, filename] = result
24
+ return score
23
25
  },
24
26
  */
25
27
 
@@ -28,9 +30,11 @@ if (!Scorer) {
28
30
  // or matches in the last dotted part of the object name
29
31
  objPartialMatch: 6,
30
32
  // Additive scores depending on the priority of the object
31
- objPrio: {0: 15, // used to be importantResults
32
- 1: 5, // used to be objectResults
33
- 2: -5}, // used to be unimportantResults
33
+ objPrio: {
34
+ 0: 15, // used to be importantResults
35
+ 1: 5, // used to be objectResults
36
+ 2: -5, // used to be unimportantResults
37
+ },
34
38
  // Used when the priority is not in the mapping.
35
39
  objPrioDefault: 0,
36
40
 
@@ -39,456 +43,503 @@ if (!Scorer) {
39
43
  partialTitle: 7,
40
44
  // query found in terms
41
45
  term: 5,
42
- partialTerm: 2
46
+ partialTerm: 2,
43
47
  };
44
48
  }
45
49
 
46
- if (!splitQuery) {
47
- function splitQuery(query) {
48
- return query.split(/\s+/);
50
+ const _removeChildren = (element) => {
51
+ while (element && element.lastChild) element.removeChild(element.lastChild);
52
+ };
53
+
54
+ /**
55
+ * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
56
+ */
57
+ const _escapeRegExp = (string) =>
58
+ string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
59
+
60
+ const _displayItem = (item, searchTerms, highlightTerms) => {
61
+ const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
62
+ const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
63
+ const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
64
+ const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
65
+ const contentRoot = document.documentElement.dataset.content_root;
66
+
67
+ const [docName, title, anchor, descr, score, _filename] = item;
68
+
69
+ let listItem = document.createElement("li");
70
+ let requestUrl;
71
+ let linkUrl;
72
+ if (docBuilder === "dirhtml") {
73
+ // dirhtml builder
74
+ let dirname = docName + "/";
75
+ if (dirname.match(/\/index\/$/))
76
+ dirname = dirname.substring(0, dirname.length - 6);
77
+ else if (dirname === "index/") dirname = "";
78
+ requestUrl = contentRoot + dirname;
79
+ linkUrl = requestUrl;
80
+ } else {
81
+ // normal html builders
82
+ requestUrl = contentRoot + docName + docFileSuffix;
83
+ linkUrl = docName + docLinkSuffix;
49
84
  }
85
+ let linkEl = listItem.appendChild(document.createElement("a"));
86
+ linkEl.href = linkUrl + anchor;
87
+ linkEl.dataset.score = score;
88
+ linkEl.innerHTML = title;
89
+ if (descr) {
90
+ listItem.appendChild(document.createElement("span")).innerHTML =
91
+ " (" + descr + ")";
92
+ // highlight search terms in the description
93
+ if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
94
+ highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
95
+ }
96
+ else if (showSearchSummary)
97
+ fetch(requestUrl)
98
+ .then((responseData) => responseData.text())
99
+ .then((data) => {
100
+ if (data)
101
+ listItem.appendChild(
102
+ Search.makeSearchSummary(data, searchTerms)
103
+ );
104
+ // highlight search terms in the summary
105
+ if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
106
+ highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
107
+ });
108
+ Search.output.appendChild(listItem);
109
+ };
110
+ const _finishSearch = (resultCount) => {
111
+ Search.stopPulse();
112
+ Search.title.innerText = _("Search Results");
113
+ if (!resultCount)
114
+ Search.status.innerText = Documentation.gettext(
115
+ "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
116
+ );
117
+ else
118
+ Search.status.innerText = _(
119
+ `Search finished, found ${resultCount} page(s) matching the search query.`
120
+ );
121
+ };
122
+ const _displayNextItem = (
123
+ results,
124
+ resultCount,
125
+ searchTerms,
126
+ highlightTerms,
127
+ ) => {
128
+ // results left, load the summary and display it
129
+ // this is intended to be dynamic (don't sub resultsCount)
130
+ if (results.length) {
131
+ _displayItem(results.pop(), searchTerms, highlightTerms);
132
+ setTimeout(
133
+ () => _displayNextItem(results, resultCount, searchTerms, highlightTerms),
134
+ 5
135
+ );
136
+ }
137
+ // search finished, update title and status message
138
+ else _finishSearch(resultCount);
139
+ };
140
+
141
+ /**
142
+ * Default splitQuery function. Can be overridden in ``sphinx.search`` with a
143
+ * custom function per language.
144
+ *
145
+ * The regular expression works by splitting the string on consecutive characters
146
+ * that are not Unicode letters, numbers, underscores, or emoji characters.
147
+ * This is the same as ``\W+`` in Python, preserving the surrogate pair area.
148
+ */
149
+ if (typeof splitQuery === "undefined") {
150
+ var splitQuery = (query) => query
151
+ .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu)
152
+ .filter(term => term) // remove remaining empty strings
50
153
  }
51
154
 
52
155
  /**
53
156
  * Search Module
54
157
  */
55
- var Search = {
56
-
57
- _index : null,
58
- _queued_query : null,
59
- _pulse_status : -1,
60
-
61
- htmlToText : function(htmlString) {
62
- var virtualDocument = document.implementation.createHTMLDocument('virtual');
63
- var htmlElement = $(htmlString, virtualDocument);
64
- htmlElement.find('.headerlink').remove();
65
- docContent = htmlElement.find('[role=main]')[0];
66
- if(docContent === undefined) {
67
- console.warn("Content block not found. Sphinx search tries to obtain it " +
68
- "via '[role=main]'. Could you check your theme or template.");
69
- return "";
70
- }
71
- return docContent.textContent || docContent.innerText;
158
+ const Search = {
159
+ _index: null,
160
+ _queued_query: null,
161
+ _pulse_status: -1,
162
+
163
+ htmlToText: (htmlString) => {
164
+ const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
165
+ htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() });
166
+ const docContent = htmlElement.querySelector('[role="main"]');
167
+ if (docContent !== undefined) return docContent.textContent;
168
+ console.warn(
169
+ "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template."
170
+ );
171
+ return "";
72
172
  },
73
173
 
74
- init : function() {
75
- var params = $.getQueryParameters();
76
- if (params.q) {
77
- var query = params.q[0];
78
- $('input[name="q"]')[0].value = query;
79
- this.performSearch(query);
80
- }
174
+ init: () => {
175
+ const query = new URLSearchParams(window.location.search).get("q");
176
+ document
177
+ .querySelectorAll('input[name="q"]')
178
+ .forEach((el) => (el.value = query));
179
+ if (query) Search.performSearch(query);
81
180
  },
82
181
 
83
- loadIndex : function(url) {
84
- $.ajax({type: "GET", url: url, data: null,
85
- dataType: "script", cache: true,
86
- complete: function(jqxhr, textstatus) {
87
- if (textstatus != "success") {
88
- document.getElementById("searchindexloader").src = url;
89
- }
90
- }});
91
- },
182
+ loadIndex: (url) =>
183
+ (document.body.appendChild(document.createElement("script")).src = url),
92
184
 
93
- setIndex : function(index) {
94
- var q;
95
- this._index = index;
96
- if ((q = this._queued_query) !== null) {
97
- this._queued_query = null;
98
- Search.query(q);
185
+ setIndex: (index) => {
186
+ Search._index = index;
187
+ if (Search._queued_query !== null) {
188
+ const query = Search._queued_query;
189
+ Search._queued_query = null;
190
+ Search.query(query);
99
191
  }
100
192
  },
101
193
 
102
- hasIndex : function() {
103
- return this._index !== null;
104
- },
194
+ hasIndex: () => Search._index !== null,
105
195
 
106
- deferQuery : function(query) {
107
- this._queued_query = query;
108
- },
196
+ deferQuery: (query) => (Search._queued_query = query),
109
197
 
110
- stopPulse : function() {
111
- this._pulse_status = 0;
112
- },
198
+ stopPulse: () => (Search._pulse_status = -1),
113
199
 
114
- startPulse : function() {
115
- if (this._pulse_status >= 0)
116
- return;
117
- function pulse() {
118
- var i;
200
+ startPulse: () => {
201
+ if (Search._pulse_status >= 0) return;
202
+
203
+ const pulse = () => {
119
204
  Search._pulse_status = (Search._pulse_status + 1) % 4;
120
- var dotString = '';
121
- for (i = 0; i < Search._pulse_status; i++)
122
- dotString += '.';
123
- Search.dots.text(dotString);
124
- if (Search._pulse_status > -1)
125
- window.setTimeout(pulse, 500);
126
- }
205
+ Search.dots.innerText = ".".repeat(Search._pulse_status);
206
+ if (Search._pulse_status >= 0) window.setTimeout(pulse, 500);
207
+ };
127
208
  pulse();
128
209
  },
129
210
 
130
211
  /**
131
212
  * perform a search for something (or wait until index is loaded)
132
213
  */
133
- performSearch : function(query) {
214
+ performSearch: (query) => {
134
215
  // create the required interface elements
135
- this.out = $('#search-results');
136
- this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
137
- this.dots = $('<span></span>').appendTo(this.title);
138
- this.status = $('<p class="search-summary">&nbsp;</p>').appendTo(this.out);
139
- this.output = $('<ul class="search"/>').appendTo(this.out);
140
-
141
- $('#search-progress').text(_('Preparing search...'));
142
- this.startPulse();
216
+ const searchText = document.createElement("h2");
217
+ searchText.textContent = _("Searching");
218
+ const searchSummary = document.createElement("p");
219
+ searchSummary.classList.add("search-summary");
220
+ searchSummary.innerText = "";
221
+ const searchList = document.createElement("ul");
222
+ searchList.classList.add("search");
223
+
224
+ const out = document.getElementById("search-results");
225
+ Search.title = out.appendChild(searchText);
226
+ Search.dots = Search.title.appendChild(document.createElement("span"));
227
+ Search.status = out.appendChild(searchSummary);
228
+ Search.output = out.appendChild(searchList);
229
+
230
+ const searchProgress = document.getElementById("search-progress");
231
+ // Some themes don't use the search progress node
232
+ if (searchProgress) {
233
+ searchProgress.innerText = _("Preparing search...");
234
+ }
235
+ Search.startPulse();
143
236
 
144
237
  // index already loaded, the browser was quick!
145
- if (this.hasIndex())
146
- this.query(query);
147
- else
148
- this.deferQuery(query);
238
+ if (Search.hasIndex()) Search.query(query);
239
+ else Search.deferQuery(query);
149
240
  },
150
241
 
151
242
  /**
152
243
  * execute search (requires search index to be loaded)
153
244
  */
154
- query : function(query) {
155
- var i;
156
-
157
- // stem the searchterms and add them to the correct list
158
- var stemmer = new Stemmer();
159
- var searchterms = [];
160
- var excluded = [];
161
- var hlterms = [];
162
- var tmp = splitQuery(query);
163
- var objectterms = [];
164
- for (i = 0; i < tmp.length; i++) {
165
- if (tmp[i] !== "") {
166
- objectterms.push(tmp[i].toLowerCase());
167
- }
245
+ query: (query) => {
246
+ const filenames = Search._index.filenames;
247
+ const docNames = Search._index.docnames;
248
+ const titles = Search._index.titles;
249
+ const allTitles = Search._index.alltitles;
250
+ const indexEntries = Search._index.indexentries;
251
+
252
+ // stem the search terms and add them to the correct list
253
+ const stemmer = new Stemmer();
254
+ const searchTerms = new Set();
255
+ const excludedTerms = new Set();
256
+ const highlightTerms = new Set();
257
+ const objectTerms = new Set(splitQuery(query.toLowerCase().trim()));
258
+ splitQuery(query.trim()).forEach((queryTerm) => {
259
+ const queryTermLower = queryTerm.toLowerCase();
260
+
261
+ // maybe skip this "word"
262
+ // stopwords array is from language_data.js
263
+ if (
264
+ stopwords.indexOf(queryTermLower) !== -1 ||
265
+ queryTerm.match(/^\d+$/)
266
+ )
267
+ return;
168
268
 
169
- if ($u.indexOf(stopwords, tmp[i].toLowerCase()) != -1 || tmp[i] === "") {
170
- // skip this "word"
171
- continue;
172
- }
173
269
  // stem the word
174
- var word = stemmer.stemWord(tmp[i].toLowerCase());
175
- // prevent stemmer from cutting word smaller than two chars
176
- if(word.length < 3 && tmp[i].length >= 3) {
177
- word = tmp[i];
178
- }
179
- var toAppend;
270
+ let word = stemmer.stemWord(queryTermLower);
180
271
  // select the correct list
181
- if (word[0] == '-') {
182
- toAppend = excluded;
183
- word = word.substr(1);
184
- }
272
+ if (word[0] === "-") excludedTerms.add(word.substr(1));
185
273
  else {
186
- toAppend = searchterms;
187
- hlterms.push(tmp[i].toLowerCase());
274
+ searchTerms.add(word);
275
+ highlightTerms.add(queryTermLower);
188
276
  }
189
- // only add if not already in the list
190
- if (!$u.contains(toAppend, word))
191
- toAppend.push(word);
192
- }
193
- var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
277
+ });
194
278
 
195
- // console.debug('SEARCH: searching for:');
196
- // console.info('required: ', searchterms);
197
- // console.info('excluded: ', excluded);
279
+ if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js
280
+ localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" "))
281
+ }
198
282
 
199
- // prepare search
200
- var terms = this._index.terms;
201
- var titleterms = this._index.titleterms;
283
+ // console.debug("SEARCH: searching for:");
284
+ // console.info("required: ", [...searchTerms]);
285
+ // console.info("excluded: ", [...excludedTerms]);
286
+
287
+ // array of [docname, title, anchor, descr, score, filename]
288
+ let results = [];
289
+ _removeChildren(document.getElementById("search-progress"));
290
+
291
+ const queryLower = query.toLowerCase();
292
+ for (const [title, foundTitles] of Object.entries(allTitles)) {
293
+ if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {
294
+ for (const [file, id] of foundTitles) {
295
+ let score = Math.round(100 * queryLower.length / title.length)
296
+ results.push([
297
+ docNames[file],
298
+ titles[file] !== title ? `${titles[file]} > ${title}` : title,
299
+ id !== null ? "#" + id : "",
300
+ null,
301
+ score,
302
+ filenames[file],
303
+ ]);
304
+ }
305
+ }
306
+ }
202
307
 
203
- // array of [filename, title, anchor, descr, score]
204
- var results = [];
205
- $('#search-progress').empty();
308
+ // search for explicit entries in index directives
309
+ for (const [entry, foundEntries] of Object.entries(indexEntries)) {
310
+ if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
311
+ for (const [file, id] of foundEntries) {
312
+ let score = Math.round(100 * queryLower.length / entry.length)
313
+ results.push([
314
+ docNames[file],
315
+ titles[file],
316
+ id ? "#" + id : "",
317
+ null,
318
+ score,
319
+ filenames[file],
320
+ ]);
321
+ }
322
+ }
323
+ }
206
324
 
207
325
  // lookup as object
208
- for (i = 0; i < objectterms.length; i++) {
209
- var others = [].concat(objectterms.slice(0, i),
210
- objectterms.slice(i+1, objectterms.length));
211
- results = results.concat(this.performObjectSearch(objectterms[i], others));
212
- }
326
+ objectTerms.forEach((term) =>
327
+ results.push(...Search.performObjectSearch(term, objectTerms))
328
+ );
213
329
 
214
330
  // lookup as search terms in fulltext
215
- results = results.concat(this.performTermsSearch(searchterms, excluded, terms, titleterms));
331
+ results.push(...Search.performTermsSearch(searchTerms, excludedTerms));
216
332
 
217
333
  // let the scorer override scores with a custom scoring function
218
- if (Scorer.score) {
219
- for (i = 0; i < results.length; i++)
220
- results[i][4] = Scorer.score(results[i]);
221
- }
334
+ if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item)));
222
335
 
223
336
  // now sort the results by score (in opposite order of appearance, since the
224
337
  // display function below uses pop() to retrieve items) and then
225
338
  // alphabetically
226
- results.sort(function(a, b) {
227
- var left = a[4];
228
- var right = b[4];
229
- if (left > right) {
230
- return 1;
231
- } else if (left < right) {
232
- return -1;
233
- } else {
339
+ results.sort((a, b) => {
340
+ const leftScore = a[4];
341
+ const rightScore = b[4];
342
+ if (leftScore === rightScore) {
234
343
  // same score: sort alphabetically
235
- left = a[1].toLowerCase();
236
- right = b[1].toLowerCase();
237
- return (left > right) ? -1 : ((left < right) ? 1 : 0);
344
+ const leftTitle = a[1].toLowerCase();
345
+ const rightTitle = b[1].toLowerCase();
346
+ if (leftTitle === rightTitle) return 0;
347
+ return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
238
348
  }
349
+ return leftScore > rightScore ? 1 : -1;
239
350
  });
240
351
 
352
+ // remove duplicate search results
353
+ // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
354
+ let seen = new Set();
355
+ results = results.reverse().reduce((acc, result) => {
356
+ let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(',');
357
+ if (!seen.has(resultStr)) {
358
+ acc.push(result);
359
+ seen.add(resultStr);
360
+ }
361
+ return acc;
362
+ }, []);
363
+
364
+ results = results.reverse();
365
+
241
366
  // for debugging
242
367
  //Search.lastresults = results.slice(); // a copy
243
- //console.info('search results:', Search.lastresults);
368
+ // console.info("search results:", Search.lastresults);
244
369
 
245
370
  // print the results
246
- var resultCount = results.length;
247
- function displayNextItem() {
248
- // results left, load the summary and display it
249
- if (results.length) {
250
- var item = results.pop();
251
- var listItem = $('<li></li>');
252
- var requestUrl = "";
253
- var linkUrl = "";
254
- if (DOCUMENTATION_OPTIONS.BUILDER === 'dirhtml') {
255
- // dirhtml builder
256
- var dirname = item[0] + '/';
257
- if (dirname.match(/\/index\/$/)) {
258
- dirname = dirname.substring(0, dirname.length-6);
259
- } else if (dirname == 'index/') {
260
- dirname = '';
261
- }
262
- requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + dirname;
263
- linkUrl = requestUrl;
264
-
265
- } else {
266
- // normal html builders
267
- requestUrl = DOCUMENTATION_OPTIONS.URL_ROOT + item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX;
268
- linkUrl = item[0] + DOCUMENTATION_OPTIONS.LINK_SUFFIX;
269
- }
270
- listItem.append($('<a/>').attr('href',
271
- linkUrl +
272
- highlightstring + item[2]).html(item[1]));
273
- if (item[3]) {
274
- listItem.append($('<span> (' + item[3] + ')</span>'));
275
- Search.output.append(listItem);
276
- setTimeout(function() {
277
- displayNextItem();
278
- }, 5);
279
- } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
280
- $.ajax({url: requestUrl,
281
- dataType: "text",
282
- complete: function(jqxhr, textstatus) {
283
- var data = jqxhr.responseText;
284
- if (data !== '' && data !== undefined) {
285
- var summary = Search.makeSearchSummary(data, searchterms, hlterms);
286
- if (summary) {
287
- listItem.append(summary);
288
- }
289
- }
290
- Search.output.append(listItem);
291
- setTimeout(function() {
292
- displayNextItem();
293
- }, 5);
294
- }});
295
- } else {
296
- // no source available, just display title
297
- Search.output.append(listItem);
298
- setTimeout(function() {
299
- displayNextItem();
300
- }, 5);
301
- }
302
- }
303
- // search finished, update title and status message
304
- else {
305
- Search.stopPulse();
306
- Search.title.text(_('Search Results'));
307
- if (!resultCount)
308
- Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
309
- else
310
- Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
311
- Search.status.fadeIn(500);
312
- }
313
- }
314
- displayNextItem();
371
+ _displayNextItem(results, results.length, searchTerms, highlightTerms);
315
372
  },
316
373
 
317
374
  /**
318
375
  * search for object names
319
376
  */
320
- performObjectSearch : function(object, otherterms) {
321
- var filenames = this._index.filenames;
322
- var docnames = this._index.docnames;
323
- var objects = this._index.objects;
324
- var objnames = this._index.objnames;
325
- var titles = this._index.titles;
326
-
327
- var i;
328
- var results = [];
329
-
330
- for (var prefix in objects) {
331
- for (var iMatch = 0; iMatch != objects[prefix].length; ++iMatch) {
332
- var match = objects[prefix][iMatch];
333
- var name = match[4];
334
- var fullname = (prefix ? prefix + '.' : '') + name;
335
- var fullnameLower = fullname.toLowerCase()
336
- if (fullnameLower.indexOf(object) > -1) {
337
- var score = 0;
338
- var parts = fullnameLower.split('.');
339
- // check for different match types: exact matches of full name or
340
- // "last name" (i.e. last dotted part)
341
- if (fullnameLower == object || parts[parts.length - 1] == object) {
342
- score += Scorer.objNameMatch;
343
- // matches in last name
344
- } else if (parts[parts.length - 1].indexOf(object) > -1) {
345
- score += Scorer.objPartialMatch;
346
- }
347
- var objname = objnames[match[1]][2];
348
- var title = titles[match[0]];
349
- // If more than one term searched for, we require other words to be
350
- // found in the name/title/description
351
- if (otherterms.length > 0) {
352
- var haystack = (prefix + ' ' + name + ' ' +
353
- objname + ' ' + title).toLowerCase();
354
- var allfound = true;
355
- for (i = 0; i < otherterms.length; i++) {
356
- if (haystack.indexOf(otherterms[i]) == -1) {
357
- allfound = false;
358
- break;
359
- }
360
- }
361
- if (!allfound) {
362
- continue;
363
- }
364
- }
365
- var descr = objname + _(', in ') + title;
366
-
367
- var anchor = match[3];
368
- if (anchor === '')
369
- anchor = fullname;
370
- else if (anchor == '-')
371
- anchor = objnames[match[1]][1] + '-' + fullname;
372
- // add custom score for some objects according to scorer
373
- if (Scorer.objPrio.hasOwnProperty(match[2])) {
374
- score += Scorer.objPrio[match[2]];
375
- } else {
376
- score += Scorer.objPrioDefault;
377
- }
378
- results.push([docnames[match[0]], fullname, '#'+anchor, descr, score, filenames[match[0]]]);
379
- }
377
+ performObjectSearch: (object, objectTerms) => {
378
+ const filenames = Search._index.filenames;
379
+ const docNames = Search._index.docnames;
380
+ const objects = Search._index.objects;
381
+ const objNames = Search._index.objnames;
382
+ const titles = Search._index.titles;
383
+
384
+ const results = [];
385
+
386
+ const objectSearchCallback = (prefix, match) => {
387
+ const name = match[4]
388
+ const fullname = (prefix ? prefix + "." : "") + name;
389
+ const fullnameLower = fullname.toLowerCase();
390
+ if (fullnameLower.indexOf(object) < 0) return;
391
+
392
+ let score = 0;
393
+ const parts = fullnameLower.split(".");
394
+
395
+ // check for different match types: exact matches of full name or
396
+ // "last name" (i.e. last dotted part)
397
+ if (fullnameLower === object || parts.slice(-1)[0] === object)
398
+ score += Scorer.objNameMatch;
399
+ else if (parts.slice(-1)[0].indexOf(object) > -1)
400
+ score += Scorer.objPartialMatch; // matches in last name
401
+
402
+ const objName = objNames[match[1]][2];
403
+ const title = titles[match[0]];
404
+
405
+ // If more than one term searched for, we require other words to be
406
+ // found in the name/title/description
407
+ const otherTerms = new Set(objectTerms);
408
+ otherTerms.delete(object);
409
+ if (otherTerms.size > 0) {
410
+ const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase();
411
+ if (
412
+ [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0)
413
+ )
414
+ return;
380
415
  }
381
- }
382
416
 
417
+ let anchor = match[3];
418
+ if (anchor === "") anchor = fullname;
419
+ else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname;
420
+
421
+ const descr = objName + _(", in ") + title;
422
+
423
+ // add custom score for some objects according to scorer
424
+ if (Scorer.objPrio.hasOwnProperty(match[2]))
425
+ score += Scorer.objPrio[match[2]];
426
+ else score += Scorer.objPrioDefault;
427
+
428
+ results.push([
429
+ docNames[match[0]],
430
+ fullname,
431
+ "#" + anchor,
432
+ descr,
433
+ score,
434
+ filenames[match[0]],
435
+ ]);
436
+ };
437
+ Object.keys(objects).forEach((prefix) =>
438
+ objects[prefix].forEach((array) =>
439
+ objectSearchCallback(prefix, array)
440
+ )
441
+ );
383
442
  return results;
384
443
  },
385
444
 
386
- /**
387
- * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
388
- */
389
- escapeRegExp : function(string) {
390
- return string.replace(/[.*+\-?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
391
- },
392
-
393
445
  /**
394
446
  * search for full-text terms in the index
395
447
  */
396
- performTermsSearch : function(searchterms, excluded, terms, titleterms) {
397
- var docnames = this._index.docnames;
398
- var filenames = this._index.filenames;
399
- var titles = this._index.titles;
448
+ performTermsSearch: (searchTerms, excludedTerms) => {
449
+ // prepare search
450
+ const terms = Search._index.terms;
451
+ const titleTerms = Search._index.titleterms;
452
+ const filenames = Search._index.filenames;
453
+ const docNames = Search._index.docnames;
454
+ const titles = Search._index.titles;
400
455
 
401
- var i, j, file;
402
- var fileMap = {};
403
- var scoreMap = {};
404
- var results = [];
456
+ const scoreMap = new Map();
457
+ const fileMap = new Map();
405
458
 
406
459
  // perform the search on the required terms
407
- for (i = 0; i < searchterms.length; i++) {
408
- var word = searchterms[i];
409
- var files = [];
410
- var _o = [
411
- {files: terms[word], score: Scorer.term},
412
- {files: titleterms[word], score: Scorer.title}
460
+ searchTerms.forEach((word) => {
461
+ const files = [];
462
+ const arr = [
463
+ { files: terms[word], score: Scorer.term },
464
+ { files: titleTerms[word], score: Scorer.title },
413
465
  ];
414
466
  // add support for partial matches
415
467
  if (word.length > 2) {
416
- var word_regex = this.escapeRegExp(word);
417
- for (var w in terms) {
418
- if (w.match(word_regex) && !terms[word]) {
419
- _o.push({files: terms[w], score: Scorer.partialTerm})
420
- }
421
- }
422
- for (var w in titleterms) {
423
- if (w.match(word_regex) && !titleterms[word]) {
424
- _o.push({files: titleterms[w], score: Scorer.partialTitle})
425
- }
426
- }
468
+ const escapedWord = _escapeRegExp(word);
469
+ Object.keys(terms).forEach((term) => {
470
+ if (term.match(escapedWord) && !terms[word])
471
+ arr.push({ files: terms[term], score: Scorer.partialTerm });
472
+ });
473
+ Object.keys(titleTerms).forEach((term) => {
474
+ if (term.match(escapedWord) && !titleTerms[word])
475
+ arr.push({ files: titleTerms[word], score: Scorer.partialTitle });
476
+ });
427
477
  }
428
478
 
429
479
  // no match but word was a required one
430
- if ($u.every(_o, function(o){return o.files === undefined;})) {
431
- break;
432
- }
480
+ if (arr.every((record) => record.files === undefined)) return;
481
+
433
482
  // found search word in contents
434
- $u.each(_o, function(o) {
435
- var _files = o.files;
436
- if (_files === undefined)
437
- return
438
-
439
- if (_files.length === undefined)
440
- _files = [_files];
441
- files = files.concat(_files);
442
-
443
- // set score for the word in each file to Scorer.term
444
- for (j = 0; j < _files.length; j++) {
445
- file = _files[j];
446
- if (!(file in scoreMap))
447
- scoreMap[file] = {};
448
- scoreMap[file][word] = o.score;
449
- }
483
+ arr.forEach((record) => {
484
+ if (record.files === undefined) return;
485
+
486
+ let recordFiles = record.files;
487
+ if (recordFiles.length === undefined) recordFiles = [recordFiles];
488
+ files.push(...recordFiles);
489
+
490
+ // set score for the word in each file
491
+ recordFiles.forEach((file) => {
492
+ if (!scoreMap.has(file)) scoreMap.set(file, {});
493
+ scoreMap.get(file)[word] = record.score;
494
+ });
450
495
  });
451
496
 
452
497
  // create the mapping
453
- for (j = 0; j < files.length; j++) {
454
- file = files[j];
455
- if (file in fileMap && fileMap[file].indexOf(word) === -1)
456
- fileMap[file].push(word);
457
- else
458
- fileMap[file] = [word];
459
- }
460
- }
498
+ files.forEach((file) => {
499
+ if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1)
500
+ fileMap.get(file).push(word);
501
+ else fileMap.set(file, [word]);
502
+ });
503
+ });
461
504
 
462
505
  // now check if the files don't contain excluded terms
463
- for (file in fileMap) {
464
- var valid = true;
465
-
506
+ const results = [];
507
+ for (const [file, wordList] of fileMap) {
466
508
  // check if all requirements are matched
467
- var filteredTermCount = // as search terms with length < 3 are discarded: ignore
468
- searchterms.filter(function(term){return term.length > 2}).length
509
+
510
+ // as search terms with length < 3 are discarded
511
+ const filteredTermCount = [...searchTerms].filter(
512
+ (term) => term.length > 2
513
+ ).length;
469
514
  if (
470
- fileMap[file].length != searchterms.length &&
471
- fileMap[file].length != filteredTermCount
472
- ) continue;
515
+ wordList.length !== searchTerms.size &&
516
+ wordList.length !== filteredTermCount
517
+ )
518
+ continue;
473
519
 
474
520
  // ensure that none of the excluded terms is in the search result
475
- for (i = 0; i < excluded.length; i++) {
476
- if (terms[excluded[i]] == file ||
477
- titleterms[excluded[i]] == file ||
478
- $u.contains(terms[excluded[i]] || [], file) ||
479
- $u.contains(titleterms[excluded[i]] || [], file)) {
480
- valid = false;
481
- break;
482
- }
483
- }
521
+ if (
522
+ [...excludedTerms].some(
523
+ (term) =>
524
+ terms[term] === file ||
525
+ titleTerms[term] === file ||
526
+ (terms[term] || []).includes(file) ||
527
+ (titleTerms[term] || []).includes(file)
528
+ )
529
+ )
530
+ break;
484
531
 
485
- // if we have still a valid result we can add it to the result list
486
- if (valid) {
487
- // select one (max) score for the file.
488
- // for better ranking, we should calculate ranking by using words statistics like basic tf-idf...
489
- var score = $u.max($u.map(fileMap[file], function(w){return scoreMap[file][w]}));
490
- results.push([docnames[file], titles[file], '', null, score, filenames[file]]);
491
- }
532
+ // select one (max) score for the file.
533
+ const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w]));
534
+ // add result to the result list
535
+ results.push([
536
+ docNames[file],
537
+ titles[file],
538
+ "",
539
+ null,
540
+ score,
541
+ filenames[file],
542
+ ]);
492
543
  }
493
544
  return results;
494
545
  },
@@ -496,34 +547,28 @@ var Search = {
496
547
  /**
497
548
  * helper function to return a node containing the
498
549
  * search summary for a given text. keywords is a list
499
- * of stemmed words, hlwords is the list of normal, unstemmed
500
- * words. the first one is used to find the occurrence, the
501
- * latter for highlighting it.
550
+ * of stemmed words.
502
551
  */
503
- makeSearchSummary : function(htmlText, keywords, hlwords) {
504
- var text = Search.htmlToText(htmlText);
505
- if (text == "") {
506
- return null;
507
- }
508
- var textLower = text.toLowerCase();
509
- var start = 0;
510
- $.each(keywords, function() {
511
- var i = textLower.indexOf(this.toLowerCase());
512
- if (i > -1)
513
- start = i;
514
- });
515
- start = Math.max(start - 120, 0);
516
- var excerpt = ((start > 0) ? '...' : '') +
517
- $.trim(text.substr(start, 240)) +
518
- ((start + 240 - text.length) ? '...' : '');
519
- var rv = $('<p class="context"></p>').text(excerpt);
520
- $.each(hlwords, function() {
521
- rv = rv.highlightText(this, 'highlighted');
522
- });
523
- return rv;
524
- }
552
+ makeSearchSummary: (htmlText, keywords) => {
553
+ const text = Search.htmlToText(htmlText);
554
+ if (text === "") return null;
555
+
556
+ const textLower = text.toLowerCase();
557
+ const actualStartPosition = [...keywords]
558
+ .map((k) => textLower.indexOf(k.toLowerCase()))
559
+ .filter((i) => i > -1)
560
+ .slice(-1)[0];
561
+ const startWithContext = Math.max(actualStartPosition - 120, 0);
562
+
563
+ const top = startWithContext === 0 ? "" : "...";
564
+ const tail = startWithContext + 240 < text.length ? "..." : "";
565
+
566
+ let summary = document.createElement("p");
567
+ summary.classList.add("context");
568
+ summary.textContent = top + text.substr(startWithContext, 240).trim() + tail;
569
+
570
+ return summary;
571
+ },
525
572
  };
526
573
 
527
- $(document).ready(function() {
528
- Search.init();
529
- });
574
+ _ready(Search.init);