primary-api-models 0.1.0__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 (1580) hide show
  1. primary_api_models/__init__.py +53 -0
  2. primary_api_models/account_data.py +62 -0
  3. primary_api_models/commons.py +49 -0
  4. primary_api_models/detailed_instruments.py +11 -0
  5. primary_api_models/detailed_position.py +53 -0
  6. primary_api_models/enhanced_models.py +27 -0
  7. primary_api_models/enums.py +184 -0
  8. primary_api_models/instrument_details.py +48 -0
  9. primary_api_models/listed_instruments.py +14 -0
  10. primary_api_models/market_data.py +25 -0
  11. primary_api_models/order_report.py +34 -0
  12. primary_api_models/order_status.py +11 -0
  13. primary_api_models/positions.py +27 -0
  14. primary_api_models-0.1.0.dist-info/METADATA +7 -0
  15. primary_api_models-0.1.0.dist-info/RECORD +1580 -0
  16. primary_api_models-0.1.0.dist-info/WHEEL +5 -0
  17. primary_api_models-0.1.0.dist-info/top_level.txt +3 -0
  18. tests/conftest.py +6 -0
  19. tests/test_models.py +61 -0
  20. venv/Lib/site-packages/_pytest/__init__.py +13 -0
  21. venv/Lib/site-packages/_pytest/_argcomplete.py +117 -0
  22. venv/Lib/site-packages/_pytest/_code/__init__.py +26 -0
  23. venv/Lib/site-packages/_pytest/_code/code.py +1571 -0
  24. venv/Lib/site-packages/_pytest/_code/source.py +225 -0
  25. venv/Lib/site-packages/_pytest/_io/__init__.py +10 -0
  26. venv/Lib/site-packages/_pytest/_io/pprint.py +673 -0
  27. venv/Lib/site-packages/_pytest/_io/saferepr.py +130 -0
  28. venv/Lib/site-packages/_pytest/_io/terminalwriter.py +258 -0
  29. venv/Lib/site-packages/_pytest/_io/wcwidth.py +57 -0
  30. venv/Lib/site-packages/_pytest/_py/__init__.py +0 -0
  31. venv/Lib/site-packages/_pytest/_py/error.py +119 -0
  32. venv/Lib/site-packages/_pytest/_py/path.py +1475 -0
  33. venv/Lib/site-packages/_pytest/_version.py +24 -0
  34. venv/Lib/site-packages/_pytest/assertion/__init__.py +208 -0
  35. venv/Lib/site-packages/_pytest/assertion/rewrite.py +1202 -0
  36. venv/Lib/site-packages/_pytest/assertion/truncate.py +137 -0
  37. venv/Lib/site-packages/_pytest/assertion/util.py +615 -0
  38. venv/Lib/site-packages/_pytest/cacheprovider.py +646 -0
  39. venv/Lib/site-packages/_pytest/capture.py +1144 -0
  40. venv/Lib/site-packages/_pytest/compat.py +314 -0
  41. venv/Lib/site-packages/_pytest/config/__init__.py +2203 -0
  42. venv/Lib/site-packages/_pytest/config/argparsing.py +578 -0
  43. venv/Lib/site-packages/_pytest/config/compat.py +85 -0
  44. venv/Lib/site-packages/_pytest/config/exceptions.py +15 -0
  45. venv/Lib/site-packages/_pytest/config/findpaths.py +350 -0
  46. venv/Lib/site-packages/_pytest/debugging.py +407 -0
  47. venv/Lib/site-packages/_pytest/deprecated.py +99 -0
  48. venv/Lib/site-packages/_pytest/doctest.py +736 -0
  49. venv/Lib/site-packages/_pytest/faulthandler.py +119 -0
  50. venv/Lib/site-packages/_pytest/fixtures.py +2047 -0
  51. venv/Lib/site-packages/_pytest/freeze_support.py +45 -0
  52. venv/Lib/site-packages/_pytest/helpconfig.py +293 -0
  53. venv/Lib/site-packages/_pytest/hookspec.py +1342 -0
  54. venv/Lib/site-packages/_pytest/junitxml.py +695 -0
  55. venv/Lib/site-packages/_pytest/legacypath.py +468 -0
  56. venv/Lib/site-packages/_pytest/logging.py +960 -0
  57. venv/Lib/site-packages/_pytest/main.py +1203 -0
  58. venv/Lib/site-packages/_pytest/mark/__init__.py +301 -0
  59. venv/Lib/site-packages/_pytest/mark/expression.py +353 -0
  60. venv/Lib/site-packages/_pytest/mark/structures.py +664 -0
  61. venv/Lib/site-packages/_pytest/monkeypatch.py +435 -0
  62. venv/Lib/site-packages/_pytest/nodes.py +772 -0
  63. venv/Lib/site-packages/_pytest/outcomes.py +308 -0
  64. venv/Lib/site-packages/_pytest/pastebin.py +117 -0
  65. venv/Lib/site-packages/_pytest/pathlib.py +1063 -0
  66. venv/Lib/site-packages/_pytest/py.typed +0 -0
  67. venv/Lib/site-packages/_pytest/pytester.py +1791 -0
  68. venv/Lib/site-packages/_pytest/pytester_assertions.py +74 -0
  69. venv/Lib/site-packages/_pytest/python.py +1772 -0
  70. venv/Lib/site-packages/_pytest/python_api.py +819 -0
  71. venv/Lib/site-packages/_pytest/raises.py +1517 -0
  72. venv/Lib/site-packages/_pytest/recwarn.py +367 -0
  73. venv/Lib/site-packages/_pytest/reports.py +694 -0
  74. venv/Lib/site-packages/_pytest/runner.py +580 -0
  75. venv/Lib/site-packages/_pytest/scope.py +91 -0
  76. venv/Lib/site-packages/_pytest/setuponly.py +98 -0
  77. venv/Lib/site-packages/_pytest/setupplan.py +39 -0
  78. venv/Lib/site-packages/_pytest/skipping.py +321 -0
  79. venv/Lib/site-packages/_pytest/stash.py +116 -0
  80. venv/Lib/site-packages/_pytest/stepwise.py +209 -0
  81. venv/Lib/site-packages/_pytest/subtests.py +411 -0
  82. venv/Lib/site-packages/_pytest/terminal.py +1763 -0
  83. venv/Lib/site-packages/_pytest/terminalprogress.py +30 -0
  84. venv/Lib/site-packages/_pytest/threadexception.py +152 -0
  85. venv/Lib/site-packages/_pytest/timing.py +95 -0
  86. venv/Lib/site-packages/_pytest/tmpdir.py +337 -0
  87. venv/Lib/site-packages/_pytest/tracemalloc.py +24 -0
  88. venv/Lib/site-packages/_pytest/unittest.py +632 -0
  89. venv/Lib/site-packages/_pytest/unraisableexception.py +163 -0
  90. venv/Lib/site-packages/_pytest/warning_types.py +172 -0
  91. venv/Lib/site-packages/_pytest/warnings.py +151 -0
  92. venv/Lib/site-packages/annotated_types/__init__.py +432 -0
  93. venv/Lib/site-packages/annotated_types/py.typed +0 -0
  94. venv/Lib/site-packages/annotated_types/test_cases.py +151 -0
  95. venv/Lib/site-packages/build/__init__.py +47 -0
  96. venv/Lib/site-packages/build/__main__.py +654 -0
  97. venv/Lib/site-packages/build/_builder.py +393 -0
  98. venv/Lib/site-packages/build/_compat/__init__.py +0 -0
  99. venv/Lib/site-packages/build/_compat/importlib.py +22 -0
  100. venv/Lib/site-packages/build/_compat/tarfile.py +31 -0
  101. venv/Lib/site-packages/build/_compat/tomllib.py +19 -0
  102. venv/Lib/site-packages/build/_ctx.py +105 -0
  103. venv/Lib/site-packages/build/_exceptions.py +69 -0
  104. venv/Lib/site-packages/build/_types.py +22 -0
  105. venv/Lib/site-packages/build/_util.py +68 -0
  106. venv/Lib/site-packages/build/env.py +507 -0
  107. venv/Lib/site-packages/build/py.typed +0 -0
  108. venv/Lib/site-packages/build/util.py +70 -0
  109. venv/Lib/site-packages/certifi/__init__.py +4 -0
  110. venv/Lib/site-packages/certifi/__main__.py +12 -0
  111. venv/Lib/site-packages/certifi/core.py +83 -0
  112. venv/Lib/site-packages/certifi/py.typed +0 -0
  113. venv/Lib/site-packages/charset_normalizer/__init__.py +48 -0
  114. venv/Lib/site-packages/charset_normalizer/__main__.py +6 -0
  115. venv/Lib/site-packages/charset_normalizer/api.py +988 -0
  116. venv/Lib/site-packages/charset_normalizer/cd.py +454 -0
  117. venv/Lib/site-packages/charset_normalizer/cli/__init__.py +8 -0
  118. venv/Lib/site-packages/charset_normalizer/cli/__main__.py +362 -0
  119. venv/Lib/site-packages/charset_normalizer/constant.py +2050 -0
  120. venv/Lib/site-packages/charset_normalizer/legacy.py +79 -0
  121. venv/Lib/site-packages/charset_normalizer/md.py +936 -0
  122. venv/Lib/site-packages/charset_normalizer/models.py +369 -0
  123. venv/Lib/site-packages/charset_normalizer/py.typed +0 -0
  124. venv/Lib/site-packages/charset_normalizer/utils.py +422 -0
  125. venv/Lib/site-packages/charset_normalizer/version.py +8 -0
  126. venv/Lib/site-packages/colorama/__init__.py +7 -0
  127. venv/Lib/site-packages/colorama/ansi.py +102 -0
  128. venv/Lib/site-packages/colorama/ansitowin32.py +277 -0
  129. venv/Lib/site-packages/colorama/initialise.py +121 -0
  130. venv/Lib/site-packages/colorama/tests/__init__.py +1 -0
  131. venv/Lib/site-packages/colorama/tests/ansi_test.py +76 -0
  132. venv/Lib/site-packages/colorama/tests/ansitowin32_test.py +294 -0
  133. venv/Lib/site-packages/colorama/tests/initialise_test.py +189 -0
  134. venv/Lib/site-packages/colorama/tests/isatty_test.py +57 -0
  135. venv/Lib/site-packages/colorama/tests/utils.py +49 -0
  136. venv/Lib/site-packages/colorama/tests/winterm_test.py +131 -0
  137. venv/Lib/site-packages/colorama/win32.py +180 -0
  138. venv/Lib/site-packages/colorama/winterm.py +195 -0
  139. venv/Lib/site-packages/docutils/__init__.py +341 -0
  140. venv/Lib/site-packages/docutils/__main__.py +103 -0
  141. venv/Lib/site-packages/docutils/core.py +855 -0
  142. venv/Lib/site-packages/docutils/examples.py +123 -0
  143. venv/Lib/site-packages/docutils/frontend.py +1178 -0
  144. venv/Lib/site-packages/docutils/io.py +716 -0
  145. venv/Lib/site-packages/docutils/languages/__init__.py +117 -0
  146. venv/Lib/site-packages/docutils/languages/af.py +58 -0
  147. venv/Lib/site-packages/docutils/languages/ar.py +60 -0
  148. venv/Lib/site-packages/docutils/languages/ca.py +65 -0
  149. venv/Lib/site-packages/docutils/languages/cs.py +60 -0
  150. venv/Lib/site-packages/docutils/languages/da.py +61 -0
  151. venv/Lib/site-packages/docutils/languages/de.py +58 -0
  152. venv/Lib/site-packages/docutils/languages/en.py +60 -0
  153. venv/Lib/site-packages/docutils/languages/eo.py +61 -0
  154. venv/Lib/site-packages/docutils/languages/es.py +58 -0
  155. venv/Lib/site-packages/docutils/languages/fa.py +60 -0
  156. venv/Lib/site-packages/docutils/languages/fi.py +60 -0
  157. venv/Lib/site-packages/docutils/languages/fr.py +58 -0
  158. venv/Lib/site-packages/docutils/languages/gl.py +62 -0
  159. venv/Lib/site-packages/docutils/languages/he.py +62 -0
  160. venv/Lib/site-packages/docutils/languages/it.py +58 -0
  161. venv/Lib/site-packages/docutils/languages/ja.py +60 -0
  162. venv/Lib/site-packages/docutils/languages/ka.py +58 -0
  163. venv/Lib/site-packages/docutils/languages/ko.py +60 -0
  164. venv/Lib/site-packages/docutils/languages/lt.py +60 -0
  165. venv/Lib/site-packages/docutils/languages/lv.py +59 -0
  166. venv/Lib/site-packages/docutils/languages/nl.py +60 -0
  167. venv/Lib/site-packages/docutils/languages/pl.py +60 -0
  168. venv/Lib/site-packages/docutils/languages/pt_br.py +60 -0
  169. venv/Lib/site-packages/docutils/languages/ru.py +58 -0
  170. venv/Lib/site-packages/docutils/languages/sk.py +58 -0
  171. venv/Lib/site-packages/docutils/languages/sv.py +59 -0
  172. venv/Lib/site-packages/docutils/languages/uk.py +58 -0
  173. venv/Lib/site-packages/docutils/languages/zh_cn.py +62 -0
  174. venv/Lib/site-packages/docutils/languages/zh_tw.py +61 -0
  175. venv/Lib/site-packages/docutils/nodes.py +3341 -0
  176. venv/Lib/site-packages/docutils/parsers/__init__.py +115 -0
  177. venv/Lib/site-packages/docutils/parsers/commonmark_wrapper.py +56 -0
  178. venv/Lib/site-packages/docutils/parsers/docutils_xml.py +194 -0
  179. venv/Lib/site-packages/docutils/parsers/null.py +24 -0
  180. venv/Lib/site-packages/docutils/parsers/recommonmark_wrapper.py +174 -0
  181. venv/Lib/site-packages/docutils/parsers/rst/__init__.py +414 -0
  182. venv/Lib/site-packages/docutils/parsers/rst/directives/__init__.py +480 -0
  183. venv/Lib/site-packages/docutils/parsers/rst/directives/admonitions.py +101 -0
  184. venv/Lib/site-packages/docutils/parsers/rst/directives/body.py +329 -0
  185. venv/Lib/site-packages/docutils/parsers/rst/directives/html.py +21 -0
  186. venv/Lib/site-packages/docutils/parsers/rst/directives/images.py +186 -0
  187. venv/Lib/site-packages/docutils/parsers/rst/directives/misc.py +690 -0
  188. venv/Lib/site-packages/docutils/parsers/rst/directives/parts.py +129 -0
  189. venv/Lib/site-packages/docutils/parsers/rst/directives/references.py +28 -0
  190. venv/Lib/site-packages/docutils/parsers/rst/directives/tables.py +523 -0
  191. venv/Lib/site-packages/docutils/parsers/rst/languages/__init__.py +63 -0
  192. venv/Lib/site-packages/docutils/parsers/rst/languages/af.py +107 -0
  193. venv/Lib/site-packages/docutils/parsers/rst/languages/ar.py +99 -0
  194. venv/Lib/site-packages/docutils/parsers/rst/languages/ca.py +130 -0
  195. venv/Lib/site-packages/docutils/parsers/rst/languages/cs.py +110 -0
  196. venv/Lib/site-packages/docutils/parsers/rst/languages/da.py +113 -0
  197. venv/Lib/site-packages/docutils/parsers/rst/languages/de.py +106 -0
  198. venv/Lib/site-packages/docutils/parsers/rst/languages/en.py +115 -0
  199. venv/Lib/site-packages/docutils/parsers/rst/languages/eo.py +118 -0
  200. venv/Lib/site-packages/docutils/parsers/rst/languages/es.py +121 -0
  201. venv/Lib/site-packages/docutils/parsers/rst/languages/fa.py +102 -0
  202. venv/Lib/site-packages/docutils/parsers/rst/languages/fi.py +98 -0
  203. venv/Lib/site-packages/docutils/parsers/rst/languages/fr.py +107 -0
  204. venv/Lib/site-packages/docutils/parsers/rst/languages/gl.py +106 -0
  205. venv/Lib/site-packages/docutils/parsers/rst/languages/he.py +110 -0
  206. venv/Lib/site-packages/docutils/parsers/rst/languages/it.py +98 -0
  207. venv/Lib/site-packages/docutils/parsers/rst/languages/ja.py +119 -0
  208. venv/Lib/site-packages/docutils/parsers/rst/languages/ka.py +89 -0
  209. venv/Lib/site-packages/docutils/parsers/rst/languages/ko.py +111 -0
  210. venv/Lib/site-packages/docutils/parsers/rst/languages/lt.py +109 -0
  211. venv/Lib/site-packages/docutils/parsers/rst/languages/lv.py +108 -0
  212. venv/Lib/site-packages/docutils/parsers/rst/languages/nl.py +113 -0
  213. venv/Lib/site-packages/docutils/parsers/rst/languages/pl.py +100 -0
  214. venv/Lib/site-packages/docutils/parsers/rst/languages/pt_br.py +109 -0
  215. venv/Lib/site-packages/docutils/parsers/rst/languages/ru.py +90 -0
  216. venv/Lib/site-packages/docutils/parsers/rst/languages/sk.py +96 -0
  217. venv/Lib/site-packages/docutils/parsers/rst/languages/sv.py +96 -0
  218. venv/Lib/site-packages/docutils/parsers/rst/languages/uk.py +91 -0
  219. venv/Lib/site-packages/docutils/parsers/rst/languages/zh_cn.py +104 -0
  220. venv/Lib/site-packages/docutils/parsers/rst/languages/zh_tw.py +109 -0
  221. venv/Lib/site-packages/docutils/parsers/rst/roles.py +450 -0
  222. venv/Lib/site-packages/docutils/parsers/rst/states.py +3266 -0
  223. venv/Lib/site-packages/docutils/parsers/rst/tableparser.py +543 -0
  224. venv/Lib/site-packages/docutils/readers/__init__.py +135 -0
  225. venv/Lib/site-packages/docutils/readers/doctree.py +50 -0
  226. venv/Lib/site-packages/docutils/readers/pep.py +55 -0
  227. venv/Lib/site-packages/docutils/readers/standalone.py +65 -0
  228. venv/Lib/site-packages/docutils/statemachine.py +1534 -0
  229. venv/Lib/site-packages/docutils/transforms/__init__.py +196 -0
  230. venv/Lib/site-packages/docutils/transforms/components.py +56 -0
  231. venv/Lib/site-packages/docutils/transforms/frontmatter.py +548 -0
  232. venv/Lib/site-packages/docutils/transforms/misc.py +143 -0
  233. venv/Lib/site-packages/docutils/transforms/parts.py +175 -0
  234. venv/Lib/site-packages/docutils/transforms/peps.py +315 -0
  235. venv/Lib/site-packages/docutils/transforms/references.py +990 -0
  236. venv/Lib/site-packages/docutils/transforms/universal.py +364 -0
  237. venv/Lib/site-packages/docutils/transforms/writer_aux.py +57 -0
  238. venv/Lib/site-packages/docutils/utils/__init__.py +850 -0
  239. venv/Lib/site-packages/docutils/utils/_roman_numerals.py +264 -0
  240. venv/Lib/site-packages/docutils/utils/_typing.py +39 -0
  241. venv/Lib/site-packages/docutils/utils/code_analyzer.py +140 -0
  242. venv/Lib/site-packages/docutils/utils/math/__init__.py +77 -0
  243. venv/Lib/site-packages/docutils/utils/math/latex2mathml.py +1252 -0
  244. venv/Lib/site-packages/docutils/utils/math/math2html.py +3166 -0
  245. venv/Lib/site-packages/docutils/utils/math/mathalphabet2unichar.py +892 -0
  246. venv/Lib/site-packages/docutils/utils/math/mathml_elements.py +482 -0
  247. venv/Lib/site-packages/docutils/utils/math/tex2mathml_extern.py +263 -0
  248. venv/Lib/site-packages/docutils/utils/math/tex2unichar.py +730 -0
  249. venv/Lib/site-packages/docutils/utils/math/unichar2tex.py +808 -0
  250. venv/Lib/site-packages/docutils/utils/punctuation_chars.py +123 -0
  251. venv/Lib/site-packages/docutils/utils/smartquotes.py +1006 -0
  252. venv/Lib/site-packages/docutils/utils/urischemes.py +138 -0
  253. venv/Lib/site-packages/docutils/writers/__init__.py +277 -0
  254. venv/Lib/site-packages/docutils/writers/_html_base.py +1895 -0
  255. venv/Lib/site-packages/docutils/writers/docutils_xml.py +191 -0
  256. venv/Lib/site-packages/docutils/writers/html4css1/__init__.py +964 -0
  257. venv/Lib/site-packages/docutils/writers/html5_polyglot/__init__.py +398 -0
  258. venv/Lib/site-packages/docutils/writers/latex2e/__init__.py +3417 -0
  259. venv/Lib/site-packages/docutils/writers/manpage.py +1353 -0
  260. venv/Lib/site-packages/docutils/writers/null.py +28 -0
  261. venv/Lib/site-packages/docutils/writers/odf_odt/__init__.py +3461 -0
  262. venv/Lib/site-packages/docutils/writers/odf_odt/prepstyles.py +80 -0
  263. venv/Lib/site-packages/docutils/writers/odf_odt/pygmentsformatter.py +106 -0
  264. venv/Lib/site-packages/docutils/writers/pep_html/__init__.py +102 -0
  265. venv/Lib/site-packages/docutils/writers/pseudoxml.py +41 -0
  266. venv/Lib/site-packages/docutils/writers/s5_html/__init__.py +354 -0
  267. venv/Lib/site-packages/docutils/writers/xetex/__init__.py +168 -0
  268. venv/Lib/site-packages/id/__init__.py +114 -0
  269. venv/Lib/site-packages/id/__main__.py +88 -0
  270. venv/Lib/site-packages/id/_internal/oidc/__init__.py +13 -0
  271. venv/Lib/site-packages/id/_internal/oidc/ambient.py +363 -0
  272. venv/Lib/site-packages/id/py.typed +4 -0
  273. venv/Lib/site-packages/idna/__init__.py +45 -0
  274. venv/Lib/site-packages/idna/codec.py +122 -0
  275. venv/Lib/site-packages/idna/compat.py +15 -0
  276. venv/Lib/site-packages/idna/core.py +440 -0
  277. venv/Lib/site-packages/idna/idnadata.py +4367 -0
  278. venv/Lib/site-packages/idna/intranges.py +57 -0
  279. venv/Lib/site-packages/idna/package_data.py +1 -0
  280. venv/Lib/site-packages/idna/py.typed +0 -0
  281. venv/Lib/site-packages/idna/uts46data.py +8384 -0
  282. venv/Lib/site-packages/iniconfig/__init__.py +249 -0
  283. venv/Lib/site-packages/iniconfig/_parse.py +163 -0
  284. venv/Lib/site-packages/iniconfig/_version.py +34 -0
  285. venv/Lib/site-packages/iniconfig/exceptions.py +16 -0
  286. venv/Lib/site-packages/iniconfig/py.typed +0 -0
  287. venv/Lib/site-packages/jaraco/classes/__init__.py +0 -0
  288. venv/Lib/site-packages/jaraco/classes/ancestry.py +76 -0
  289. venv/Lib/site-packages/jaraco/classes/meta.py +85 -0
  290. venv/Lib/site-packages/jaraco/classes/properties.py +241 -0
  291. venv/Lib/site-packages/jaraco/classes/py.typed +0 -0
  292. venv/Lib/site-packages/jaraco/context/__init__.py +422 -0
  293. venv/Lib/site-packages/jaraco/context/py.typed +0 -0
  294. venv/Lib/site-packages/jaraco/functools/__init__.py +722 -0
  295. venv/Lib/site-packages/jaraco/functools/__init__.pyi +123 -0
  296. venv/Lib/site-packages/jaraco/functools/py.typed +0 -0
  297. venv/Lib/site-packages/keyring/__init__.py +17 -0
  298. venv/Lib/site-packages/keyring/__main__.py +4 -0
  299. venv/Lib/site-packages/keyring/backend.py +300 -0
  300. venv/Lib/site-packages/keyring/backends/SecretService.py +120 -0
  301. venv/Lib/site-packages/keyring/backends/Windows.py +168 -0
  302. venv/Lib/site-packages/keyring/backends/__init__.py +0 -0
  303. venv/Lib/site-packages/keyring/backends/chainer.py +71 -0
  304. venv/Lib/site-packages/keyring/backends/fail.py +30 -0
  305. venv/Lib/site-packages/keyring/backends/kwallet.py +164 -0
  306. venv/Lib/site-packages/keyring/backends/libsecret.py +155 -0
  307. venv/Lib/site-packages/keyring/backends/macOS/__init__.py +85 -0
  308. venv/Lib/site-packages/keyring/backends/macOS/api.py +184 -0
  309. venv/Lib/site-packages/keyring/backends/null.py +20 -0
  310. venv/Lib/site-packages/keyring/cli.py +220 -0
  311. venv/Lib/site-packages/keyring/compat/__init__.py +7 -0
  312. venv/Lib/site-packages/keyring/compat/properties.py +169 -0
  313. venv/Lib/site-packages/keyring/compat/py312.py +9 -0
  314. venv/Lib/site-packages/keyring/completion.py +55 -0
  315. venv/Lib/site-packages/keyring/core.py +202 -0
  316. venv/Lib/site-packages/keyring/credentials.py +85 -0
  317. venv/Lib/site-packages/keyring/devpi_client.py +29 -0
  318. venv/Lib/site-packages/keyring/errors.py +67 -0
  319. venv/Lib/site-packages/keyring/http.py +39 -0
  320. venv/Lib/site-packages/keyring/py.typed +0 -0
  321. venv/Lib/site-packages/keyring/testing/__init__.py +0 -0
  322. venv/Lib/site-packages/keyring/testing/backend.py +200 -0
  323. venv/Lib/site-packages/keyring/testing/util.py +68 -0
  324. venv/Lib/site-packages/keyring/util/__init__.py +11 -0
  325. venv/Lib/site-packages/keyring/util/platform_.py +40 -0
  326. venv/Lib/site-packages/markdown_it/__init__.py +6 -0
  327. venv/Lib/site-packages/markdown_it/_compat.py +1 -0
  328. venv/Lib/site-packages/markdown_it/_punycode.py +67 -0
  329. venv/Lib/site-packages/markdown_it/cli/__init__.py +0 -0
  330. venv/Lib/site-packages/markdown_it/cli/parse.py +127 -0
  331. venv/Lib/site-packages/markdown_it/common/__init__.py +0 -0
  332. venv/Lib/site-packages/markdown_it/common/entities.py +5 -0
  333. venv/Lib/site-packages/markdown_it/common/html_blocks.py +69 -0
  334. venv/Lib/site-packages/markdown_it/common/html_re.py +39 -0
  335. venv/Lib/site-packages/markdown_it/common/normalize_url.py +81 -0
  336. venv/Lib/site-packages/markdown_it/common/utils.py +313 -0
  337. venv/Lib/site-packages/markdown_it/helpers/__init__.py +6 -0
  338. venv/Lib/site-packages/markdown_it/helpers/parse_link_destination.py +83 -0
  339. venv/Lib/site-packages/markdown_it/helpers/parse_link_label.py +44 -0
  340. venv/Lib/site-packages/markdown_it/helpers/parse_link_title.py +75 -0
  341. venv/Lib/site-packages/markdown_it/main.py +351 -0
  342. venv/Lib/site-packages/markdown_it/parser_block.py +113 -0
  343. venv/Lib/site-packages/markdown_it/parser_core.py +46 -0
  344. venv/Lib/site-packages/markdown_it/parser_inline.py +215 -0
  345. venv/Lib/site-packages/markdown_it/presets/__init__.py +48 -0
  346. venv/Lib/site-packages/markdown_it/presets/commonmark.py +75 -0
  347. venv/Lib/site-packages/markdown_it/presets/default.py +36 -0
  348. venv/Lib/site-packages/markdown_it/presets/zero.py +44 -0
  349. venv/Lib/site-packages/markdown_it/py.typed +1 -0
  350. venv/Lib/site-packages/markdown_it/renderer.py +356 -0
  351. venv/Lib/site-packages/markdown_it/ruler.py +275 -0
  352. venv/Lib/site-packages/markdown_it/rules_block/__init__.py +28 -0
  353. venv/Lib/site-packages/markdown_it/rules_block/blockquote.py +368 -0
  354. venv/Lib/site-packages/markdown_it/rules_block/code.py +36 -0
  355. venv/Lib/site-packages/markdown_it/rules_block/fence.py +146 -0
  356. venv/Lib/site-packages/markdown_it/rules_block/heading.py +69 -0
  357. venv/Lib/site-packages/markdown_it/rules_block/hr.py +56 -0
  358. venv/Lib/site-packages/markdown_it/rules_block/html_block.py +90 -0
  359. venv/Lib/site-packages/markdown_it/rules_block/lheading.py +86 -0
  360. venv/Lib/site-packages/markdown_it/rules_block/list.py +408 -0
  361. venv/Lib/site-packages/markdown_it/rules_block/paragraph.py +66 -0
  362. venv/Lib/site-packages/markdown_it/rules_block/reference.py +235 -0
  363. venv/Lib/site-packages/markdown_it/rules_block/state_block.py +261 -0
  364. venv/Lib/site-packages/markdown_it/rules_block/table.py +250 -0
  365. venv/Lib/site-packages/markdown_it/rules_core/__init__.py +19 -0
  366. venv/Lib/site-packages/markdown_it/rules_core/block.py +13 -0
  367. venv/Lib/site-packages/markdown_it/rules_core/inline.py +10 -0
  368. venv/Lib/site-packages/markdown_it/rules_core/linkify.py +149 -0
  369. venv/Lib/site-packages/markdown_it/rules_core/normalize.py +19 -0
  370. venv/Lib/site-packages/markdown_it/rules_core/replacements.py +127 -0
  371. venv/Lib/site-packages/markdown_it/rules_core/smartquotes.py +202 -0
  372. venv/Lib/site-packages/markdown_it/rules_core/state_core.py +25 -0
  373. venv/Lib/site-packages/markdown_it/rules_core/text_join.py +53 -0
  374. venv/Lib/site-packages/markdown_it/rules_inline/__init__.py +31 -0
  375. venv/Lib/site-packages/markdown_it/rules_inline/autolink.py +77 -0
  376. venv/Lib/site-packages/markdown_it/rules_inline/backticks.py +72 -0
  377. venv/Lib/site-packages/markdown_it/rules_inline/balance_pairs.py +138 -0
  378. venv/Lib/site-packages/markdown_it/rules_inline/emphasis.py +102 -0
  379. venv/Lib/site-packages/markdown_it/rules_inline/entity.py +53 -0
  380. venv/Lib/site-packages/markdown_it/rules_inline/escape.py +93 -0
  381. venv/Lib/site-packages/markdown_it/rules_inline/fragments_join.py +54 -0
  382. venv/Lib/site-packages/markdown_it/rules_inline/html_inline.py +43 -0
  383. venv/Lib/site-packages/markdown_it/rules_inline/image.py +148 -0
  384. venv/Lib/site-packages/markdown_it/rules_inline/link.py +149 -0
  385. venv/Lib/site-packages/markdown_it/rules_inline/linkify.py +62 -0
  386. venv/Lib/site-packages/markdown_it/rules_inline/newline.py +44 -0
  387. venv/Lib/site-packages/markdown_it/rules_inline/state_inline.py +167 -0
  388. venv/Lib/site-packages/markdown_it/rules_inline/strikethrough.py +173 -0
  389. venv/Lib/site-packages/markdown_it/rules_inline/text.py +23 -0
  390. venv/Lib/site-packages/markdown_it/token.py +178 -0
  391. venv/Lib/site-packages/markdown_it/tree.py +333 -0
  392. venv/Lib/site-packages/markdown_it/utils.py +194 -0
  393. venv/Lib/site-packages/mdurl/__init__.py +18 -0
  394. venv/Lib/site-packages/mdurl/_decode.py +104 -0
  395. venv/Lib/site-packages/mdurl/_encode.py +85 -0
  396. venv/Lib/site-packages/mdurl/_format.py +27 -0
  397. venv/Lib/site-packages/mdurl/_parse.py +304 -0
  398. venv/Lib/site-packages/mdurl/_url.py +14 -0
  399. venv/Lib/site-packages/mdurl/py.typed +1 -0
  400. venv/Lib/site-packages/more_itertools/__init__.py +6 -0
  401. venv/Lib/site-packages/more_itertools/__init__.pyi +2 -0
  402. venv/Lib/site-packages/more_itertools/more.py +5457 -0
  403. venv/Lib/site-packages/more_itertools/more.pyi +963 -0
  404. venv/Lib/site-packages/more_itertools/py.typed +0 -0
  405. venv/Lib/site-packages/more_itertools/recipes.py +1599 -0
  406. venv/Lib/site-packages/more_itertools/recipes.pyi +234 -0
  407. venv/Lib/site-packages/nh3/__init__.py +5 -0
  408. venv/Lib/site-packages/nh3/__init__.pyi +42 -0
  409. venv/Lib/site-packages/nh3/py.typed +0 -0
  410. venv/Lib/site-packages/packaging/__init__.py +15 -0
  411. venv/Lib/site-packages/packaging/_elffile.py +108 -0
  412. venv/Lib/site-packages/packaging/_manylinux.py +262 -0
  413. venv/Lib/site-packages/packaging/_musllinux.py +85 -0
  414. venv/Lib/site-packages/packaging/_parser.py +393 -0
  415. venv/Lib/site-packages/packaging/_structures.py +33 -0
  416. venv/Lib/site-packages/packaging/_tokenizer.py +193 -0
  417. venv/Lib/site-packages/packaging/dependency_groups.py +302 -0
  418. venv/Lib/site-packages/packaging/direct_url.py +325 -0
  419. venv/Lib/site-packages/packaging/errors.py +94 -0
  420. venv/Lib/site-packages/packaging/licenses/__init__.py +186 -0
  421. venv/Lib/site-packages/packaging/licenses/_spdx.py +799 -0
  422. venv/Lib/site-packages/packaging/markers.py +492 -0
  423. venv/Lib/site-packages/packaging/metadata.py +964 -0
  424. venv/Lib/site-packages/packaging/py.typed +0 -0
  425. venv/Lib/site-packages/packaging/pylock.py +905 -0
  426. venv/Lib/site-packages/packaging/requirements.py +129 -0
  427. venv/Lib/site-packages/packaging/specifiers.py +1943 -0
  428. venv/Lib/site-packages/packaging/tags.py +932 -0
  429. venv/Lib/site-packages/packaging/utils.py +296 -0
  430. venv/Lib/site-packages/packaging/version.py +1231 -0
  431. venv/Lib/site-packages/pip/__init__.py +13 -0
  432. venv/Lib/site-packages/pip/__main__.py +24 -0
  433. venv/Lib/site-packages/pip/__pip-runner__.py +50 -0
  434. venv/Lib/site-packages/pip/_internal/__init__.py +18 -0
  435. venv/Lib/site-packages/pip/_internal/build_env.py +606 -0
  436. venv/Lib/site-packages/pip/_internal/cache.py +291 -0
  437. venv/Lib/site-packages/pip/_internal/cli/__init__.py +3 -0
  438. venv/Lib/site-packages/pip/_internal/cli/autocompletion.py +184 -0
  439. venv/Lib/site-packages/pip/_internal/cli/base_command.py +255 -0
  440. venv/Lib/site-packages/pip/_internal/cli/cmdoptions.py +1267 -0
  441. venv/Lib/site-packages/pip/_internal/cli/command_context.py +28 -0
  442. venv/Lib/site-packages/pip/_internal/cli/index_command.py +195 -0
  443. venv/Lib/site-packages/pip/_internal/cli/main.py +85 -0
  444. venv/Lib/site-packages/pip/_internal/cli/main_parser.py +136 -0
  445. venv/Lib/site-packages/pip/_internal/cli/parser.py +358 -0
  446. venv/Lib/site-packages/pip/_internal/cli/progress_bars.py +153 -0
  447. venv/Lib/site-packages/pip/_internal/cli/req_command.py +447 -0
  448. venv/Lib/site-packages/pip/_internal/cli/spinners.py +235 -0
  449. venv/Lib/site-packages/pip/_internal/cli/status_codes.py +6 -0
  450. venv/Lib/site-packages/pip/_internal/commands/__init__.py +139 -0
  451. venv/Lib/site-packages/pip/_internal/commands/cache.py +255 -0
  452. venv/Lib/site-packages/pip/_internal/commands/check.py +66 -0
  453. venv/Lib/site-packages/pip/_internal/commands/completion.py +136 -0
  454. venv/Lib/site-packages/pip/_internal/commands/configuration.py +288 -0
  455. venv/Lib/site-packages/pip/_internal/commands/debug.py +203 -0
  456. venv/Lib/site-packages/pip/_internal/commands/download.py +146 -0
  457. venv/Lib/site-packages/pip/_internal/commands/freeze.py +107 -0
  458. venv/Lib/site-packages/pip/_internal/commands/hash.py +58 -0
  459. venv/Lib/site-packages/pip/_internal/commands/help.py +40 -0
  460. venv/Lib/site-packages/pip/_internal/commands/index.py +166 -0
  461. venv/Lib/site-packages/pip/_internal/commands/inspect.py +92 -0
  462. venv/Lib/site-packages/pip/_internal/commands/install.py +810 -0
  463. venv/Lib/site-packages/pip/_internal/commands/list.py +398 -0
  464. venv/Lib/site-packages/pip/_internal/commands/lock.py +175 -0
  465. venv/Lib/site-packages/pip/_internal/commands/search.py +178 -0
  466. venv/Lib/site-packages/pip/_internal/commands/show.py +231 -0
  467. venv/Lib/site-packages/pip/_internal/commands/uninstall.py +113 -0
  468. venv/Lib/site-packages/pip/_internal/commands/wheel.py +171 -0
  469. venv/Lib/site-packages/pip/_internal/configuration.py +396 -0
  470. venv/Lib/site-packages/pip/_internal/distributions/__init__.py +21 -0
  471. venv/Lib/site-packages/pip/_internal/distributions/base.py +55 -0
  472. venv/Lib/site-packages/pip/_internal/distributions/installed.py +33 -0
  473. venv/Lib/site-packages/pip/_internal/distributions/sdist.py +164 -0
  474. venv/Lib/site-packages/pip/_internal/distributions/wheel.py +44 -0
  475. venv/Lib/site-packages/pip/_internal/exceptions.py +971 -0
  476. venv/Lib/site-packages/pip/_internal/index/__init__.py +1 -0
  477. venv/Lib/site-packages/pip/_internal/index/collector.py +488 -0
  478. venv/Lib/site-packages/pip/_internal/index/package_finder.py +1125 -0
  479. venv/Lib/site-packages/pip/_internal/index/sources.py +287 -0
  480. venv/Lib/site-packages/pip/_internal/locations/__init__.py +440 -0
  481. venv/Lib/site-packages/pip/_internal/locations/_distutils.py +173 -0
  482. venv/Lib/site-packages/pip/_internal/locations/_sysconfig.py +218 -0
  483. venv/Lib/site-packages/pip/_internal/locations/base.py +82 -0
  484. venv/Lib/site-packages/pip/_internal/main.py +12 -0
  485. venv/Lib/site-packages/pip/_internal/metadata/__init__.py +169 -0
  486. venv/Lib/site-packages/pip/_internal/metadata/_json.py +87 -0
  487. venv/Lib/site-packages/pip/_internal/metadata/base.py +685 -0
  488. venv/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py +6 -0
  489. venv/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py +87 -0
  490. venv/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py +229 -0
  491. venv/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py +143 -0
  492. venv/Lib/site-packages/pip/_internal/metadata/pkg_resources.py +298 -0
  493. venv/Lib/site-packages/pip/_internal/models/__init__.py +1 -0
  494. venv/Lib/site-packages/pip/_internal/models/candidate.py +25 -0
  495. venv/Lib/site-packages/pip/_internal/models/direct_url.py +227 -0
  496. venv/Lib/site-packages/pip/_internal/models/format_control.py +78 -0
  497. venv/Lib/site-packages/pip/_internal/models/index.py +28 -0
  498. venv/Lib/site-packages/pip/_internal/models/installation_report.py +57 -0
  499. venv/Lib/site-packages/pip/_internal/models/link.py +617 -0
  500. venv/Lib/site-packages/pip/_internal/models/release_control.py +92 -0
  501. venv/Lib/site-packages/pip/_internal/models/scheme.py +25 -0
  502. venv/Lib/site-packages/pip/_internal/models/search_scope.py +126 -0
  503. venv/Lib/site-packages/pip/_internal/models/selection_prefs.py +56 -0
  504. venv/Lib/site-packages/pip/_internal/models/target_python.py +122 -0
  505. venv/Lib/site-packages/pip/_internal/models/wheel.py +80 -0
  506. venv/Lib/site-packages/pip/_internal/network/__init__.py +1 -0
  507. venv/Lib/site-packages/pip/_internal/network/auth.py +568 -0
  508. venv/Lib/site-packages/pip/_internal/network/cache.py +128 -0
  509. venv/Lib/site-packages/pip/_internal/network/download.py +341 -0
  510. venv/Lib/site-packages/pip/_internal/network/lazy_wheel.py +215 -0
  511. venv/Lib/site-packages/pip/_internal/network/session.py +532 -0
  512. venv/Lib/site-packages/pip/_internal/network/utils.py +98 -0
  513. venv/Lib/site-packages/pip/_internal/network/xmlrpc.py +61 -0
  514. venv/Lib/site-packages/pip/_internal/operations/__init__.py +0 -0
  515. venv/Lib/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  516. venv/Lib/site-packages/pip/_internal/operations/build/build_tracker.py +140 -0
  517. venv/Lib/site-packages/pip/_internal/operations/build/metadata.py +38 -0
  518. venv/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py +41 -0
  519. venv/Lib/site-packages/pip/_internal/operations/build/wheel.py +38 -0
  520. venv/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py +47 -0
  521. venv/Lib/site-packages/pip/_internal/operations/check.py +175 -0
  522. venv/Lib/site-packages/pip/_internal/operations/freeze.py +259 -0
  523. venv/Lib/site-packages/pip/_internal/operations/install/__init__.py +1 -0
  524. venv/Lib/site-packages/pip/_internal/operations/install/wheel.py +745 -0
  525. venv/Lib/site-packages/pip/_internal/operations/prepare.py +747 -0
  526. venv/Lib/site-packages/pip/_internal/pyproject.py +123 -0
  527. venv/Lib/site-packages/pip/_internal/req/__init__.py +103 -0
  528. venv/Lib/site-packages/pip/_internal/req/constructors.py +568 -0
  529. venv/Lib/site-packages/pip/_internal/req/pep723.py +41 -0
  530. venv/Lib/site-packages/pip/_internal/req/req_dependency_group.py +75 -0
  531. venv/Lib/site-packages/pip/_internal/req/req_file.py +631 -0
  532. venv/Lib/site-packages/pip/_internal/req/req_install.py +828 -0
  533. venv/Lib/site-packages/pip/_internal/req/req_set.py +81 -0
  534. venv/Lib/site-packages/pip/_internal/req/req_uninstall.py +639 -0
  535. venv/Lib/site-packages/pip/_internal/resolution/__init__.py +0 -0
  536. venv/Lib/site-packages/pip/_internal/resolution/base.py +20 -0
  537. venv/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  538. venv/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py +598 -0
  539. venv/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  540. venv/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py +142 -0
  541. venv/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py +591 -0
  542. venv/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py +856 -0
  543. venv/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +166 -0
  544. venv/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py +285 -0
  545. venv/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py +98 -0
  546. venv/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py +251 -0
  547. venv/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py +332 -0
  548. venv/Lib/site-packages/pip/_internal/self_outdated_check.py +255 -0
  549. venv/Lib/site-packages/pip/_internal/utils/__init__.py +0 -0
  550. venv/Lib/site-packages/pip/_internal/utils/_jaraco_text.py +109 -0
  551. venv/Lib/site-packages/pip/_internal/utils/_log.py +38 -0
  552. venv/Lib/site-packages/pip/_internal/utils/appdirs.py +52 -0
  553. venv/Lib/site-packages/pip/_internal/utils/compat.py +85 -0
  554. venv/Lib/site-packages/pip/_internal/utils/compatibility_tags.py +201 -0
  555. venv/Lib/site-packages/pip/_internal/utils/datetime.py +28 -0
  556. venv/Lib/site-packages/pip/_internal/utils/deprecation.py +126 -0
  557. venv/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py +87 -0
  558. venv/Lib/site-packages/pip/_internal/utils/egg_link.py +81 -0
  559. venv/Lib/site-packages/pip/_internal/utils/entrypoints.py +88 -0
  560. venv/Lib/site-packages/pip/_internal/utils/filesystem.py +203 -0
  561. venv/Lib/site-packages/pip/_internal/utils/filetypes.py +24 -0
  562. venv/Lib/site-packages/pip/_internal/utils/glibc.py +102 -0
  563. venv/Lib/site-packages/pip/_internal/utils/hashes.py +150 -0
  564. venv/Lib/site-packages/pip/_internal/utils/logging.py +396 -0
  565. venv/Lib/site-packages/pip/_internal/utils/misc.py +771 -0
  566. venv/Lib/site-packages/pip/_internal/utils/packaging.py +44 -0
  567. venv/Lib/site-packages/pip/_internal/utils/pylock.py +116 -0
  568. venv/Lib/site-packages/pip/_internal/utils/retry.py +45 -0
  569. venv/Lib/site-packages/pip/_internal/utils/subprocess.py +248 -0
  570. venv/Lib/site-packages/pip/_internal/utils/temp_dir.py +294 -0
  571. venv/Lib/site-packages/pip/_internal/utils/unpacking.py +362 -0
  572. venv/Lib/site-packages/pip/_internal/utils/urls.py +55 -0
  573. venv/Lib/site-packages/pip/_internal/utils/virtualenv.py +105 -0
  574. venv/Lib/site-packages/pip/_internal/utils/wheel.py +132 -0
  575. venv/Lib/site-packages/pip/_internal/vcs/__init__.py +15 -0
  576. venv/Lib/site-packages/pip/_internal/vcs/bazaar.py +130 -0
  577. venv/Lib/site-packages/pip/_internal/vcs/git.py +571 -0
  578. venv/Lib/site-packages/pip/_internal/vcs/mercurial.py +186 -0
  579. venv/Lib/site-packages/pip/_internal/vcs/subversion.py +335 -0
  580. venv/Lib/site-packages/pip/_internal/vcs/versioncontrol.py +695 -0
  581. venv/Lib/site-packages/pip/_internal/wheel_builder.py +261 -0
  582. venv/Lib/site-packages/pip/_vendor/__init__.py +117 -0
  583. venv/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py +32 -0
  584. venv/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py +70 -0
  585. venv/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py +167 -0
  586. venv/Lib/site-packages/pip/_vendor/cachecontrol/cache.py +75 -0
  587. venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +8 -0
  588. venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +145 -0
  589. venv/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +48 -0
  590. venv/Lib/site-packages/pip/_vendor/cachecontrol/controller.py +511 -0
  591. venv/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py +121 -0
  592. venv/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py +157 -0
  593. venv/Lib/site-packages/pip/_vendor/cachecontrol/py.typed +0 -0
  594. venv/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py +146 -0
  595. venv/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py +43 -0
  596. venv/Lib/site-packages/pip/_vendor/certifi/__init__.py +4 -0
  597. venv/Lib/site-packages/pip/_vendor/certifi/__main__.py +12 -0
  598. venv/Lib/site-packages/pip/_vendor/certifi/core.py +83 -0
  599. venv/Lib/site-packages/pip/_vendor/certifi/py.typed +0 -0
  600. venv/Lib/site-packages/pip/_vendor/dependency_groups/__init__.py +13 -0
  601. venv/Lib/site-packages/pip/_vendor/dependency_groups/__main__.py +65 -0
  602. venv/Lib/site-packages/pip/_vendor/dependency_groups/_implementation.py +209 -0
  603. venv/Lib/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +59 -0
  604. venv/Lib/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +62 -0
  605. venv/Lib/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +9 -0
  606. venv/Lib/site-packages/pip/_vendor/dependency_groups/py.typed +0 -0
  607. venv/Lib/site-packages/pip/_vendor/distlib/__init__.py +33 -0
  608. venv/Lib/site-packages/pip/_vendor/distlib/compat.py +1137 -0
  609. venv/Lib/site-packages/pip/_vendor/distlib/resources.py +358 -0
  610. venv/Lib/site-packages/pip/_vendor/distlib/scripts.py +447 -0
  611. venv/Lib/site-packages/pip/_vendor/distlib/util.py +1984 -0
  612. venv/Lib/site-packages/pip/_vendor/distro/__init__.py +54 -0
  613. venv/Lib/site-packages/pip/_vendor/distro/__main__.py +4 -0
  614. venv/Lib/site-packages/pip/_vendor/distro/distro.py +1403 -0
  615. venv/Lib/site-packages/pip/_vendor/distro/py.typed +0 -0
  616. venv/Lib/site-packages/pip/_vendor/idna/__init__.py +45 -0
  617. venv/Lib/site-packages/pip/_vendor/idna/codec.py +122 -0
  618. venv/Lib/site-packages/pip/_vendor/idna/compat.py +15 -0
  619. venv/Lib/site-packages/pip/_vendor/idna/core.py +437 -0
  620. venv/Lib/site-packages/pip/_vendor/idna/idnadata.py +4309 -0
  621. venv/Lib/site-packages/pip/_vendor/idna/intranges.py +57 -0
  622. venv/Lib/site-packages/pip/_vendor/idna/package_data.py +1 -0
  623. venv/Lib/site-packages/pip/_vendor/idna/py.typed +0 -0
  624. venv/Lib/site-packages/pip/_vendor/idna/uts46data.py +8841 -0
  625. venv/Lib/site-packages/pip/_vendor/msgpack/__init__.py +55 -0
  626. venv/Lib/site-packages/pip/_vendor/msgpack/exceptions.py +48 -0
  627. venv/Lib/site-packages/pip/_vendor/msgpack/ext.py +170 -0
  628. venv/Lib/site-packages/pip/_vendor/msgpack/fallback.py +929 -0
  629. venv/Lib/site-packages/pip/_vendor/packaging/__init__.py +15 -0
  630. venv/Lib/site-packages/pip/_vendor/packaging/_elffile.py +108 -0
  631. venv/Lib/site-packages/pip/_vendor/packaging/_manylinux.py +262 -0
  632. venv/Lib/site-packages/pip/_vendor/packaging/_musllinux.py +85 -0
  633. venv/Lib/site-packages/pip/_vendor/packaging/_parser.py +365 -0
  634. venv/Lib/site-packages/pip/_vendor/packaging/_structures.py +69 -0
  635. venv/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py +193 -0
  636. venv/Lib/site-packages/pip/_vendor/packaging/licenses/__init__.py +147 -0
  637. venv/Lib/site-packages/pip/_vendor/packaging/licenses/_spdx.py +799 -0
  638. venv/Lib/site-packages/pip/_vendor/packaging/markers.py +388 -0
  639. venv/Lib/site-packages/pip/_vendor/packaging/metadata.py +978 -0
  640. venv/Lib/site-packages/pip/_vendor/packaging/py.typed +0 -0
  641. venv/Lib/site-packages/pip/_vendor/packaging/pylock.py +635 -0
  642. venv/Lib/site-packages/pip/_vendor/packaging/requirements.py +86 -0
  643. venv/Lib/site-packages/pip/_vendor/packaging/specifiers.py +1068 -0
  644. venv/Lib/site-packages/pip/_vendor/packaging/tags.py +651 -0
  645. venv/Lib/site-packages/pip/_vendor/packaging/utils.py +158 -0
  646. venv/Lib/site-packages/pip/_vendor/packaging/version.py +792 -0
  647. venv/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py +3676 -0
  648. venv/Lib/site-packages/pip/_vendor/platformdirs/__init__.py +631 -0
  649. venv/Lib/site-packages/pip/_vendor/platformdirs/__main__.py +55 -0
  650. venv/Lib/site-packages/pip/_vendor/platformdirs/android.py +249 -0
  651. venv/Lib/site-packages/pip/_vendor/platformdirs/api.py +299 -0
  652. venv/Lib/site-packages/pip/_vendor/platformdirs/macos.py +146 -0
  653. venv/Lib/site-packages/pip/_vendor/platformdirs/py.typed +0 -0
  654. venv/Lib/site-packages/pip/_vendor/platformdirs/unix.py +272 -0
  655. venv/Lib/site-packages/pip/_vendor/platformdirs/version.py +34 -0
  656. venv/Lib/site-packages/pip/_vendor/platformdirs/windows.py +278 -0
  657. venv/Lib/site-packages/pip/_vendor/pygments/__init__.py +82 -0
  658. venv/Lib/site-packages/pip/_vendor/pygments/__main__.py +17 -0
  659. venv/Lib/site-packages/pip/_vendor/pygments/console.py +70 -0
  660. venv/Lib/site-packages/pip/_vendor/pygments/filter.py +70 -0
  661. venv/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py +940 -0
  662. venv/Lib/site-packages/pip/_vendor/pygments/formatter.py +129 -0
  663. venv/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py +157 -0
  664. venv/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py +23 -0
  665. venv/Lib/site-packages/pip/_vendor/pygments/lexer.py +963 -0
  666. venv/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py +362 -0
  667. venv/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py +602 -0
  668. venv/Lib/site-packages/pip/_vendor/pygments/lexers/python.py +1201 -0
  669. venv/Lib/site-packages/pip/_vendor/pygments/modeline.py +43 -0
  670. venv/Lib/site-packages/pip/_vendor/pygments/plugin.py +72 -0
  671. venv/Lib/site-packages/pip/_vendor/pygments/regexopt.py +91 -0
  672. venv/Lib/site-packages/pip/_vendor/pygments/scanner.py +104 -0
  673. venv/Lib/site-packages/pip/_vendor/pygments/sphinxext.py +247 -0
  674. venv/Lib/site-packages/pip/_vendor/pygments/style.py +203 -0
  675. venv/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py +61 -0
  676. venv/Lib/site-packages/pip/_vendor/pygments/styles/_mapping.py +54 -0
  677. venv/Lib/site-packages/pip/_vendor/pygments/token.py +214 -0
  678. venv/Lib/site-packages/pip/_vendor/pygments/unistring.py +153 -0
  679. venv/Lib/site-packages/pip/_vendor/pygments/util.py +324 -0
  680. venv/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py +31 -0
  681. venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py +410 -0
  682. venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +21 -0
  683. venv/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +389 -0
  684. venv/Lib/site-packages/pip/_vendor/pyproject_hooks/py.typed +0 -0
  685. venv/Lib/site-packages/pip/_vendor/requests/__init__.py +179 -0
  686. venv/Lib/site-packages/pip/_vendor/requests/__version__.py +14 -0
  687. venv/Lib/site-packages/pip/_vendor/requests/_internal_utils.py +50 -0
  688. venv/Lib/site-packages/pip/_vendor/requests/adapters.py +696 -0
  689. venv/Lib/site-packages/pip/_vendor/requests/api.py +157 -0
  690. venv/Lib/site-packages/pip/_vendor/requests/auth.py +314 -0
  691. venv/Lib/site-packages/pip/_vendor/requests/certs.py +17 -0
  692. venv/Lib/site-packages/pip/_vendor/requests/compat.py +90 -0
  693. venv/Lib/site-packages/pip/_vendor/requests/cookies.py +561 -0
  694. venv/Lib/site-packages/pip/_vendor/requests/exceptions.py +151 -0
  695. venv/Lib/site-packages/pip/_vendor/requests/help.py +127 -0
  696. venv/Lib/site-packages/pip/_vendor/requests/hooks.py +33 -0
  697. venv/Lib/site-packages/pip/_vendor/requests/models.py +1039 -0
  698. venv/Lib/site-packages/pip/_vendor/requests/packages.py +25 -0
  699. venv/Lib/site-packages/pip/_vendor/requests/sessions.py +831 -0
  700. venv/Lib/site-packages/pip/_vendor/requests/status_codes.py +128 -0
  701. venv/Lib/site-packages/pip/_vendor/requests/structures.py +99 -0
  702. venv/Lib/site-packages/pip/_vendor/requests/utils.py +1086 -0
  703. venv/Lib/site-packages/pip/_vendor/resolvelib/__init__.py +27 -0
  704. venv/Lib/site-packages/pip/_vendor/resolvelib/providers.py +196 -0
  705. venv/Lib/site-packages/pip/_vendor/resolvelib/py.typed +0 -0
  706. venv/Lib/site-packages/pip/_vendor/resolvelib/reporters.py +55 -0
  707. venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +27 -0
  708. venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +47 -0
  709. venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +48 -0
  710. venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +57 -0
  711. venv/Lib/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +627 -0
  712. venv/Lib/site-packages/pip/_vendor/resolvelib/structs.py +209 -0
  713. venv/Lib/site-packages/pip/_vendor/rich/__init__.py +177 -0
  714. venv/Lib/site-packages/pip/_vendor/rich/__main__.py +245 -0
  715. venv/Lib/site-packages/pip/_vendor/rich/_cell_widths.py +454 -0
  716. venv/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py +3610 -0
  717. venv/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py +32 -0
  718. venv/Lib/site-packages/pip/_vendor/rich/_export_format.py +76 -0
  719. venv/Lib/site-packages/pip/_vendor/rich/_extension.py +10 -0
  720. venv/Lib/site-packages/pip/_vendor/rich/_fileno.py +24 -0
  721. venv/Lib/site-packages/pip/_vendor/rich/_inspect.py +268 -0
  722. venv/Lib/site-packages/pip/_vendor/rich/_log_render.py +94 -0
  723. venv/Lib/site-packages/pip/_vendor/rich/_loop.py +43 -0
  724. venv/Lib/site-packages/pip/_vendor/rich/_null_file.py +69 -0
  725. venv/Lib/site-packages/pip/_vendor/rich/_palettes.py +309 -0
  726. venv/Lib/site-packages/pip/_vendor/rich/_pick.py +17 -0
  727. venv/Lib/site-packages/pip/_vendor/rich/_ratio.py +153 -0
  728. venv/Lib/site-packages/pip/_vendor/rich/_spinners.py +482 -0
  729. venv/Lib/site-packages/pip/_vendor/rich/_stack.py +16 -0
  730. venv/Lib/site-packages/pip/_vendor/rich/_timer.py +19 -0
  731. venv/Lib/site-packages/pip/_vendor/rich/_win32_console.py +661 -0
  732. venv/Lib/site-packages/pip/_vendor/rich/_windows.py +71 -0
  733. venv/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py +56 -0
  734. venv/Lib/site-packages/pip/_vendor/rich/_wrap.py +93 -0
  735. venv/Lib/site-packages/pip/_vendor/rich/abc.py +33 -0
  736. venv/Lib/site-packages/pip/_vendor/rich/align.py +306 -0
  737. venv/Lib/site-packages/pip/_vendor/rich/ansi.py +241 -0
  738. venv/Lib/site-packages/pip/_vendor/rich/bar.py +93 -0
  739. venv/Lib/site-packages/pip/_vendor/rich/box.py +474 -0
  740. venv/Lib/site-packages/pip/_vendor/rich/cells.py +174 -0
  741. venv/Lib/site-packages/pip/_vendor/rich/color.py +621 -0
  742. venv/Lib/site-packages/pip/_vendor/rich/color_triplet.py +38 -0
  743. venv/Lib/site-packages/pip/_vendor/rich/columns.py +187 -0
  744. venv/Lib/site-packages/pip/_vendor/rich/console.py +2680 -0
  745. venv/Lib/site-packages/pip/_vendor/rich/constrain.py +37 -0
  746. venv/Lib/site-packages/pip/_vendor/rich/containers.py +167 -0
  747. venv/Lib/site-packages/pip/_vendor/rich/control.py +219 -0
  748. venv/Lib/site-packages/pip/_vendor/rich/default_styles.py +193 -0
  749. venv/Lib/site-packages/pip/_vendor/rich/diagnose.py +39 -0
  750. venv/Lib/site-packages/pip/_vendor/rich/emoji.py +91 -0
  751. venv/Lib/site-packages/pip/_vendor/rich/errors.py +34 -0
  752. venv/Lib/site-packages/pip/_vendor/rich/file_proxy.py +57 -0
  753. venv/Lib/site-packages/pip/_vendor/rich/filesize.py +88 -0
  754. venv/Lib/site-packages/pip/_vendor/rich/highlighter.py +232 -0
  755. venv/Lib/site-packages/pip/_vendor/rich/json.py +139 -0
  756. venv/Lib/site-packages/pip/_vendor/rich/jupyter.py +101 -0
  757. venv/Lib/site-packages/pip/_vendor/rich/layout.py +442 -0
  758. venv/Lib/site-packages/pip/_vendor/rich/live.py +400 -0
  759. venv/Lib/site-packages/pip/_vendor/rich/live_render.py +106 -0
  760. venv/Lib/site-packages/pip/_vendor/rich/logging.py +297 -0
  761. venv/Lib/site-packages/pip/_vendor/rich/markup.py +251 -0
  762. venv/Lib/site-packages/pip/_vendor/rich/measure.py +151 -0
  763. venv/Lib/site-packages/pip/_vendor/rich/padding.py +141 -0
  764. venv/Lib/site-packages/pip/_vendor/rich/pager.py +34 -0
  765. venv/Lib/site-packages/pip/_vendor/rich/palette.py +100 -0
  766. venv/Lib/site-packages/pip/_vendor/rich/panel.py +317 -0
  767. venv/Lib/site-packages/pip/_vendor/rich/pretty.py +1016 -0
  768. venv/Lib/site-packages/pip/_vendor/rich/progress.py +1715 -0
  769. venv/Lib/site-packages/pip/_vendor/rich/progress_bar.py +223 -0
  770. venv/Lib/site-packages/pip/_vendor/rich/prompt.py +400 -0
  771. venv/Lib/site-packages/pip/_vendor/rich/protocol.py +42 -0
  772. venv/Lib/site-packages/pip/_vendor/rich/py.typed +0 -0
  773. venv/Lib/site-packages/pip/_vendor/rich/region.py +10 -0
  774. venv/Lib/site-packages/pip/_vendor/rich/repr.py +149 -0
  775. venv/Lib/site-packages/pip/_vendor/rich/rule.py +130 -0
  776. venv/Lib/site-packages/pip/_vendor/rich/scope.py +86 -0
  777. venv/Lib/site-packages/pip/_vendor/rich/screen.py +54 -0
  778. venv/Lib/site-packages/pip/_vendor/rich/segment.py +752 -0
  779. venv/Lib/site-packages/pip/_vendor/rich/spinner.py +132 -0
  780. venv/Lib/site-packages/pip/_vendor/rich/status.py +131 -0
  781. venv/Lib/site-packages/pip/_vendor/rich/style.py +792 -0
  782. venv/Lib/site-packages/pip/_vendor/rich/styled.py +42 -0
  783. venv/Lib/site-packages/pip/_vendor/rich/syntax.py +985 -0
  784. venv/Lib/site-packages/pip/_vendor/rich/table.py +1006 -0
  785. venv/Lib/site-packages/pip/_vendor/rich/terminal_theme.py +153 -0
  786. venv/Lib/site-packages/pip/_vendor/rich/text.py +1361 -0
  787. venv/Lib/site-packages/pip/_vendor/rich/theme.py +115 -0
  788. venv/Lib/site-packages/pip/_vendor/rich/themes.py +5 -0
  789. venv/Lib/site-packages/pip/_vendor/rich/traceback.py +899 -0
  790. venv/Lib/site-packages/pip/_vendor/rich/tree.py +257 -0
  791. venv/Lib/site-packages/pip/_vendor/tomli/__init__.py +8 -0
  792. venv/Lib/site-packages/pip/_vendor/tomli/_parser.py +777 -0
  793. venv/Lib/site-packages/pip/_vendor/tomli/_re.py +115 -0
  794. venv/Lib/site-packages/pip/_vendor/tomli/_types.py +10 -0
  795. venv/Lib/site-packages/pip/_vendor/tomli/py.typed +1 -0
  796. venv/Lib/site-packages/pip/_vendor/tomli_w/__init__.py +4 -0
  797. venv/Lib/site-packages/pip/_vendor/tomli_w/_writer.py +229 -0
  798. venv/Lib/site-packages/pip/_vendor/tomli_w/py.typed +1 -0
  799. venv/Lib/site-packages/pip/_vendor/truststore/__init__.py +36 -0
  800. venv/Lib/site-packages/pip/_vendor/truststore/_api.py +341 -0
  801. venv/Lib/site-packages/pip/_vendor/truststore/_macos.py +571 -0
  802. venv/Lib/site-packages/pip/_vendor/truststore/_openssl.py +68 -0
  803. venv/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py +31 -0
  804. venv/Lib/site-packages/pip/_vendor/truststore/_windows.py +567 -0
  805. venv/Lib/site-packages/pip/_vendor/truststore/py.typed +0 -0
  806. venv/Lib/site-packages/pip/_vendor/urllib3/__init__.py +102 -0
  807. venv/Lib/site-packages/pip/_vendor/urllib3/_collections.py +355 -0
  808. venv/Lib/site-packages/pip/_vendor/urllib3/_version.py +2 -0
  809. venv/Lib/site-packages/pip/_vendor/urllib3/connection.py +572 -0
  810. venv/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py +1140 -0
  811. venv/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  812. venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +36 -0
  813. venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  814. venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +519 -0
  815. venv/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +397 -0
  816. venv/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py +314 -0
  817. venv/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +130 -0
  818. venv/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +518 -0
  819. venv/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +920 -0
  820. venv/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py +216 -0
  821. venv/Lib/site-packages/pip/_vendor/urllib3/exceptions.py +323 -0
  822. venv/Lib/site-packages/pip/_vendor/urllib3/fields.py +274 -0
  823. venv/Lib/site-packages/pip/_vendor/urllib3/filepost.py +98 -0
  824. venv/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
  825. venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  826. venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +51 -0
  827. venv/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +155 -0
  828. venv/Lib/site-packages/pip/_vendor/urllib3/packages/six.py +1076 -0
  829. venv/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py +540 -0
  830. venv/Lib/site-packages/pip/_vendor/urllib3/request.py +191 -0
  831. venv/Lib/site-packages/pip/_vendor/urllib3/response.py +879 -0
  832. venv/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py +49 -0
  833. venv/Lib/site-packages/pip/_vendor/urllib3/util/connection.py +149 -0
  834. venv/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py +57 -0
  835. venv/Lib/site-packages/pip/_vendor/urllib3/util/queue.py +22 -0
  836. venv/Lib/site-packages/pip/_vendor/urllib3/util/request.py +137 -0
  837. venv/Lib/site-packages/pip/_vendor/urllib3/util/response.py +107 -0
  838. venv/Lib/site-packages/pip/_vendor/urllib3/util/retry.py +622 -0
  839. venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py +504 -0
  840. venv/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +159 -0
  841. venv/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py +221 -0
  842. venv/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py +271 -0
  843. venv/Lib/site-packages/pip/_vendor/urllib3/util/url.py +435 -0
  844. venv/Lib/site-packages/pip/_vendor/urllib3/util/wait.py +152 -0
  845. venv/Lib/site-packages/pip/py.typed +4 -0
  846. venv/Lib/site-packages/pluggy/__init__.py +30 -0
  847. venv/Lib/site-packages/pluggy/_callers.py +169 -0
  848. venv/Lib/site-packages/pluggy/_hooks.py +714 -0
  849. venv/Lib/site-packages/pluggy/_manager.py +523 -0
  850. venv/Lib/site-packages/pluggy/_result.py +107 -0
  851. venv/Lib/site-packages/pluggy/_tracing.py +72 -0
  852. venv/Lib/site-packages/pluggy/_version.py +21 -0
  853. venv/Lib/site-packages/pluggy/_warnings.py +27 -0
  854. venv/Lib/site-packages/pluggy/py.typed +0 -0
  855. venv/Lib/site-packages/py.py +15 -0
  856. venv/Lib/site-packages/pydantic/__init__.py +456 -0
  857. venv/Lib/site-packages/pydantic/_internal/__init__.py +0 -0
  858. venv/Lib/site-packages/pydantic/_internal/_config.py +386 -0
  859. venv/Lib/site-packages/pydantic/_internal/_core_metadata.py +97 -0
  860. venv/Lib/site-packages/pydantic/_internal/_core_utils.py +174 -0
  861. venv/Lib/site-packages/pydantic/_internal/_dataclasses.py +315 -0
  862. venv/Lib/site-packages/pydantic/_internal/_decorators.py +873 -0
  863. venv/Lib/site-packages/pydantic/_internal/_decorators_v1.py +174 -0
  864. venv/Lib/site-packages/pydantic/_internal/_discriminated_union.py +494 -0
  865. venv/Lib/site-packages/pydantic/_internal/_docs_extraction.py +113 -0
  866. venv/Lib/site-packages/pydantic/_internal/_fields.py +729 -0
  867. venv/Lib/site-packages/pydantic/_internal/_forward_ref.py +23 -0
  868. venv/Lib/site-packages/pydantic/_internal/_generate_schema.py +2934 -0
  869. venv/Lib/site-packages/pydantic/_internal/_generics.py +530 -0
  870. venv/Lib/site-packages/pydantic/_internal/_git.py +27 -0
  871. venv/Lib/site-packages/pydantic/_internal/_import_utils.py +20 -0
  872. venv/Lib/site-packages/pydantic/_internal/_internal_dataclass.py +7 -0
  873. venv/Lib/site-packages/pydantic/_internal/_known_annotated_metadata.py +403 -0
  874. venv/Lib/site-packages/pydantic/_internal/_mock_val_ser.py +228 -0
  875. venv/Lib/site-packages/pydantic/_internal/_model_construction.py +868 -0
  876. venv/Lib/site-packages/pydantic/_internal/_namespace_utils.py +293 -0
  877. venv/Lib/site-packages/pydantic/_internal/_repr.py +124 -0
  878. venv/Lib/site-packages/pydantic/_internal/_schema_gather.py +212 -0
  879. venv/Lib/site-packages/pydantic/_internal/_schema_generation_shared.py +125 -0
  880. venv/Lib/site-packages/pydantic/_internal/_serializers.py +53 -0
  881. venv/Lib/site-packages/pydantic/_internal/_signature.py +189 -0
  882. venv/Lib/site-packages/pydantic/_internal/_typing_extra.py +785 -0
  883. venv/Lib/site-packages/pydantic/_internal/_utils.py +446 -0
  884. venv/Lib/site-packages/pydantic/_internal/_validate_call.py +141 -0
  885. venv/Lib/site-packages/pydantic/_internal/_validators.py +534 -0
  886. venv/Lib/site-packages/pydantic/_migration.py +316 -0
  887. venv/Lib/site-packages/pydantic/alias_generators.py +62 -0
  888. venv/Lib/site-packages/pydantic/aliases.py +135 -0
  889. venv/Lib/site-packages/pydantic/annotated_handlers.py +122 -0
  890. venv/Lib/site-packages/pydantic/class_validators.py +5 -0
  891. venv/Lib/site-packages/pydantic/color.py +604 -0
  892. venv/Lib/site-packages/pydantic/config.py +1296 -0
  893. venv/Lib/site-packages/pydantic/dataclasses.py +413 -0
  894. venv/Lib/site-packages/pydantic/datetime_parse.py +5 -0
  895. venv/Lib/site-packages/pydantic/decorator.py +5 -0
  896. venv/Lib/site-packages/pydantic/deprecated/__init__.py +0 -0
  897. venv/Lib/site-packages/pydantic/deprecated/class_validators.py +256 -0
  898. venv/Lib/site-packages/pydantic/deprecated/config.py +72 -0
  899. venv/Lib/site-packages/pydantic/deprecated/copy_internals.py +224 -0
  900. venv/Lib/site-packages/pydantic/deprecated/decorator.py +284 -0
  901. venv/Lib/site-packages/pydantic/deprecated/json.py +141 -0
  902. venv/Lib/site-packages/pydantic/deprecated/parse.py +80 -0
  903. venv/Lib/site-packages/pydantic/deprecated/tools.py +103 -0
  904. venv/Lib/site-packages/pydantic/env_settings.py +5 -0
  905. venv/Lib/site-packages/pydantic/error_wrappers.py +5 -0
  906. venv/Lib/site-packages/pydantic/errors.py +189 -0
  907. venv/Lib/site-packages/pydantic/experimental/__init__.py +1 -0
  908. venv/Lib/site-packages/pydantic/experimental/arguments_schema.py +44 -0
  909. venv/Lib/site-packages/pydantic/experimental/missing_sentinel.py +5 -0
  910. venv/Lib/site-packages/pydantic/experimental/pipeline.py +663 -0
  911. venv/Lib/site-packages/pydantic/fields.py +1892 -0
  912. venv/Lib/site-packages/pydantic/functional_serializers.py +470 -0
  913. venv/Lib/site-packages/pydantic/functional_validators.py +889 -0
  914. venv/Lib/site-packages/pydantic/generics.py +5 -0
  915. venv/Lib/site-packages/pydantic/json.py +5 -0
  916. venv/Lib/site-packages/pydantic/json_schema.py +2911 -0
  917. venv/Lib/site-packages/pydantic/main.py +1838 -0
  918. venv/Lib/site-packages/pydantic/mypy.py +1412 -0
  919. venv/Lib/site-packages/pydantic/networks.py +1332 -0
  920. venv/Lib/site-packages/pydantic/parse.py +5 -0
  921. venv/Lib/site-packages/pydantic/plugin/__init__.py +193 -0
  922. venv/Lib/site-packages/pydantic/plugin/_loader.py +58 -0
  923. venv/Lib/site-packages/pydantic/plugin/_schema_validator.py +143 -0
  924. venv/Lib/site-packages/pydantic/py.typed +0 -0
  925. venv/Lib/site-packages/pydantic/root_model.py +157 -0
  926. venv/Lib/site-packages/pydantic/schema.py +5 -0
  927. venv/Lib/site-packages/pydantic/tools.py +5 -0
  928. venv/Lib/site-packages/pydantic/type_adapter.py +801 -0
  929. venv/Lib/site-packages/pydantic/types.py +3310 -0
  930. venv/Lib/site-packages/pydantic/typing.py +5 -0
  931. venv/Lib/site-packages/pydantic/utils.py +5 -0
  932. venv/Lib/site-packages/pydantic/v1/__init__.py +131 -0
  933. venv/Lib/site-packages/pydantic/v1/_hypothesis_plugin.py +391 -0
  934. venv/Lib/site-packages/pydantic/v1/annotated_types.py +72 -0
  935. venv/Lib/site-packages/pydantic/v1/class_validators.py +361 -0
  936. venv/Lib/site-packages/pydantic/v1/color.py +494 -0
  937. venv/Lib/site-packages/pydantic/v1/config.py +191 -0
  938. venv/Lib/site-packages/pydantic/v1/dataclasses.py +500 -0
  939. venv/Lib/site-packages/pydantic/v1/datetime_parse.py +248 -0
  940. venv/Lib/site-packages/pydantic/v1/decorator.py +264 -0
  941. venv/Lib/site-packages/pydantic/v1/env_settings.py +350 -0
  942. venv/Lib/site-packages/pydantic/v1/error_wrappers.py +161 -0
  943. venv/Lib/site-packages/pydantic/v1/errors.py +646 -0
  944. venv/Lib/site-packages/pydantic/v1/fields.py +1253 -0
  945. venv/Lib/site-packages/pydantic/v1/generics.py +400 -0
  946. venv/Lib/site-packages/pydantic/v1/json.py +112 -0
  947. venv/Lib/site-packages/pydantic/v1/main.py +1130 -0
  948. venv/Lib/site-packages/pydantic/v1/mypy.py +949 -0
  949. venv/Lib/site-packages/pydantic/v1/networks.py +747 -0
  950. venv/Lib/site-packages/pydantic/v1/parse.py +66 -0
  951. venv/Lib/site-packages/pydantic/v1/py.typed +0 -0
  952. venv/Lib/site-packages/pydantic/v1/schema.py +1163 -0
  953. venv/Lib/site-packages/pydantic/v1/tools.py +92 -0
  954. venv/Lib/site-packages/pydantic/v1/types.py +1205 -0
  955. venv/Lib/site-packages/pydantic/v1/typing.py +627 -0
  956. venv/Lib/site-packages/pydantic/v1/utils.py +807 -0
  957. venv/Lib/site-packages/pydantic/v1/validators.py +768 -0
  958. venv/Lib/site-packages/pydantic/v1/version.py +38 -0
  959. venv/Lib/site-packages/pydantic/validate_call_decorator.py +116 -0
  960. venv/Lib/site-packages/pydantic/validators.py +5 -0
  961. venv/Lib/site-packages/pydantic/version.py +113 -0
  962. venv/Lib/site-packages/pydantic/warnings.py +122 -0
  963. venv/Lib/site-packages/pydantic_core/__init__.py +171 -0
  964. venv/Lib/site-packages/pydantic_core/_pydantic_core.pyi +1056 -0
  965. venv/Lib/site-packages/pydantic_core/core_schema.py +4461 -0
  966. venv/Lib/site-packages/pydantic_core/py.typed +0 -0
  967. venv/Lib/site-packages/pygments/__init__.py +82 -0
  968. venv/Lib/site-packages/pygments/__main__.py +17 -0
  969. venv/Lib/site-packages/pygments/cmdline.py +668 -0
  970. venv/Lib/site-packages/pygments/console.py +70 -0
  971. venv/Lib/site-packages/pygments/filter.py +70 -0
  972. venv/Lib/site-packages/pygments/filters/__init__.py +942 -0
  973. venv/Lib/site-packages/pygments/formatter.py +129 -0
  974. venv/Lib/site-packages/pygments/formatters/__init__.py +157 -0
  975. venv/Lib/site-packages/pygments/formatters/_mapping.py +23 -0
  976. venv/Lib/site-packages/pygments/formatters/bbcode.py +108 -0
  977. venv/Lib/site-packages/pygments/formatters/groff.py +170 -0
  978. venv/Lib/site-packages/pygments/formatters/html.py +997 -0
  979. venv/Lib/site-packages/pygments/formatters/img.py +686 -0
  980. venv/Lib/site-packages/pygments/formatters/irc.py +153 -0
  981. venv/Lib/site-packages/pygments/formatters/latex.py +518 -0
  982. venv/Lib/site-packages/pygments/formatters/other.py +160 -0
  983. venv/Lib/site-packages/pygments/formatters/pangomarkup.py +83 -0
  984. venv/Lib/site-packages/pygments/formatters/rtf.py +349 -0
  985. venv/Lib/site-packages/pygments/formatters/svg.py +185 -0
  986. venv/Lib/site-packages/pygments/formatters/terminal.py +127 -0
  987. venv/Lib/site-packages/pygments/formatters/terminal256.py +338 -0
  988. venv/Lib/site-packages/pygments/lexer.py +963 -0
  989. venv/Lib/site-packages/pygments/lexers/__init__.py +362 -0
  990. venv/Lib/site-packages/pygments/lexers/_ada_builtins.py +103 -0
  991. venv/Lib/site-packages/pygments/lexers/_asy_builtins.py +1644 -0
  992. venv/Lib/site-packages/pygments/lexers/_cl_builtins.py +231 -0
  993. venv/Lib/site-packages/pygments/lexers/_cocoa_builtins.py +75 -0
  994. venv/Lib/site-packages/pygments/lexers/_csound_builtins.py +1780 -0
  995. venv/Lib/site-packages/pygments/lexers/_css_builtins.py +558 -0
  996. venv/Lib/site-packages/pygments/lexers/_googlesql_builtins.py +918 -0
  997. venv/Lib/site-packages/pygments/lexers/_julia_builtins.py +411 -0
  998. venv/Lib/site-packages/pygments/lexers/_lasso_builtins.py +5326 -0
  999. venv/Lib/site-packages/pygments/lexers/_lilypond_builtins.py +5184 -0
  1000. venv/Lib/site-packages/pygments/lexers/_lua_builtins.py +285 -0
  1001. venv/Lib/site-packages/pygments/lexers/_luau_builtins.py +62 -0
  1002. venv/Lib/site-packages/pygments/lexers/_mapping.py +603 -0
  1003. venv/Lib/site-packages/pygments/lexers/_mql_builtins.py +1171 -0
  1004. venv/Lib/site-packages/pygments/lexers/_mysql_builtins.py +1384 -0
  1005. venv/Lib/site-packages/pygments/lexers/_openedge_builtins.py +2600 -0
  1006. venv/Lib/site-packages/pygments/lexers/_php_builtins.py +3328 -0
  1007. venv/Lib/site-packages/pygments/lexers/_postgres_builtins.py +739 -0
  1008. venv/Lib/site-packages/pygments/lexers/_qlik_builtins.py +666 -0
  1009. venv/Lib/site-packages/pygments/lexers/_scheme_builtins.py +1609 -0
  1010. venv/Lib/site-packages/pygments/lexers/_scilab_builtins.py +3093 -0
  1011. venv/Lib/site-packages/pygments/lexers/_sourcemod_builtins.py +1151 -0
  1012. venv/Lib/site-packages/pygments/lexers/_sql_builtins.py +106 -0
  1013. venv/Lib/site-packages/pygments/lexers/_stan_builtins.py +761 -0
  1014. venv/Lib/site-packages/pygments/lexers/_stata_builtins.py +457 -0
  1015. venv/Lib/site-packages/pygments/lexers/_tsql_builtins.py +1003 -0
  1016. venv/Lib/site-packages/pygments/lexers/_usd_builtins.py +112 -0
  1017. venv/Lib/site-packages/pygments/lexers/_vbscript_builtins.py +279 -0
  1018. venv/Lib/site-packages/pygments/lexers/_vim_builtins.py +1938 -0
  1019. venv/Lib/site-packages/pygments/lexers/actionscript.py +243 -0
  1020. venv/Lib/site-packages/pygments/lexers/ada.py +144 -0
  1021. venv/Lib/site-packages/pygments/lexers/agile.py +25 -0
  1022. venv/Lib/site-packages/pygments/lexers/algebra.py +300 -0
  1023. venv/Lib/site-packages/pygments/lexers/ambient.py +75 -0
  1024. venv/Lib/site-packages/pygments/lexers/amdgpu.py +54 -0
  1025. venv/Lib/site-packages/pygments/lexers/ampl.py +87 -0
  1026. venv/Lib/site-packages/pygments/lexers/apdlexer.py +593 -0
  1027. venv/Lib/site-packages/pygments/lexers/apl.py +103 -0
  1028. venv/Lib/site-packages/pygments/lexers/archetype.py +315 -0
  1029. venv/Lib/site-packages/pygments/lexers/arrow.py +116 -0
  1030. venv/Lib/site-packages/pygments/lexers/arturo.py +249 -0
  1031. venv/Lib/site-packages/pygments/lexers/asc.py +55 -0
  1032. venv/Lib/site-packages/pygments/lexers/asm.py +1058 -0
  1033. venv/Lib/site-packages/pygments/lexers/asn1.py +178 -0
  1034. venv/Lib/site-packages/pygments/lexers/automation.py +379 -0
  1035. venv/Lib/site-packages/pygments/lexers/bare.py +101 -0
  1036. venv/Lib/site-packages/pygments/lexers/basic.py +656 -0
  1037. venv/Lib/site-packages/pygments/lexers/bdd.py +57 -0
  1038. venv/Lib/site-packages/pygments/lexers/berry.py +99 -0
  1039. venv/Lib/site-packages/pygments/lexers/bibtex.py +159 -0
  1040. venv/Lib/site-packages/pygments/lexers/blueprint.py +173 -0
  1041. venv/Lib/site-packages/pygments/lexers/boa.py +97 -0
  1042. venv/Lib/site-packages/pygments/lexers/bqn.py +112 -0
  1043. venv/Lib/site-packages/pygments/lexers/business.py +625 -0
  1044. venv/Lib/site-packages/pygments/lexers/c_cpp.py +415 -0
  1045. venv/Lib/site-packages/pygments/lexers/c_like.py +738 -0
  1046. venv/Lib/site-packages/pygments/lexers/capnproto.py +74 -0
  1047. venv/Lib/site-packages/pygments/lexers/carbon.py +95 -0
  1048. venv/Lib/site-packages/pygments/lexers/cddl.py +172 -0
  1049. venv/Lib/site-packages/pygments/lexers/chapel.py +139 -0
  1050. venv/Lib/site-packages/pygments/lexers/clean.py +180 -0
  1051. venv/Lib/site-packages/pygments/lexers/codeql.py +80 -0
  1052. venv/Lib/site-packages/pygments/lexers/comal.py +81 -0
  1053. venv/Lib/site-packages/pygments/lexers/compiled.py +35 -0
  1054. venv/Lib/site-packages/pygments/lexers/configs.py +1433 -0
  1055. venv/Lib/site-packages/pygments/lexers/console.py +114 -0
  1056. venv/Lib/site-packages/pygments/lexers/cplint.py +43 -0
  1057. venv/Lib/site-packages/pygments/lexers/crystal.py +364 -0
  1058. venv/Lib/site-packages/pygments/lexers/csound.py +466 -0
  1059. venv/Lib/site-packages/pygments/lexers/css.py +632 -0
  1060. venv/Lib/site-packages/pygments/lexers/d.py +259 -0
  1061. venv/Lib/site-packages/pygments/lexers/dalvik.py +126 -0
  1062. venv/Lib/site-packages/pygments/lexers/data.py +763 -0
  1063. venv/Lib/site-packages/pygments/lexers/dax.py +135 -0
  1064. venv/Lib/site-packages/pygments/lexers/devicetree.py +120 -0
  1065. venv/Lib/site-packages/pygments/lexers/diff.py +169 -0
  1066. venv/Lib/site-packages/pygments/lexers/dns.py +109 -0
  1067. venv/Lib/site-packages/pygments/lexers/dotnet.py +873 -0
  1068. venv/Lib/site-packages/pygments/lexers/dsls.py +970 -0
  1069. venv/Lib/site-packages/pygments/lexers/dylan.py +279 -0
  1070. venv/Lib/site-packages/pygments/lexers/ecl.py +144 -0
  1071. venv/Lib/site-packages/pygments/lexers/eiffel.py +68 -0
  1072. venv/Lib/site-packages/pygments/lexers/elm.py +123 -0
  1073. venv/Lib/site-packages/pygments/lexers/elpi.py +201 -0
  1074. venv/Lib/site-packages/pygments/lexers/email.py +132 -0
  1075. venv/Lib/site-packages/pygments/lexers/erlang.py +526 -0
  1076. venv/Lib/site-packages/pygments/lexers/esoteric.py +300 -0
  1077. venv/Lib/site-packages/pygments/lexers/ezhil.py +76 -0
  1078. venv/Lib/site-packages/pygments/lexers/factor.py +363 -0
  1079. venv/Lib/site-packages/pygments/lexers/fantom.py +251 -0
  1080. venv/Lib/site-packages/pygments/lexers/felix.py +275 -0
  1081. venv/Lib/site-packages/pygments/lexers/fift.py +68 -0
  1082. venv/Lib/site-packages/pygments/lexers/floscript.py +81 -0
  1083. venv/Lib/site-packages/pygments/lexers/forth.py +178 -0
  1084. venv/Lib/site-packages/pygments/lexers/fortran.py +212 -0
  1085. venv/Lib/site-packages/pygments/lexers/foxpro.py +427 -0
  1086. venv/Lib/site-packages/pygments/lexers/freefem.py +893 -0
  1087. venv/Lib/site-packages/pygments/lexers/func.py +110 -0
  1088. venv/Lib/site-packages/pygments/lexers/functional.py +21 -0
  1089. venv/Lib/site-packages/pygments/lexers/futhark.py +105 -0
  1090. venv/Lib/site-packages/pygments/lexers/gcodelexer.py +35 -0
  1091. venv/Lib/site-packages/pygments/lexers/gdscript.py +189 -0
  1092. venv/Lib/site-packages/pygments/lexers/gleam.py +74 -0
  1093. venv/Lib/site-packages/pygments/lexers/go.py +97 -0
  1094. venv/Lib/site-packages/pygments/lexers/grammar_notation.py +262 -0
  1095. venv/Lib/site-packages/pygments/lexers/graph.py +108 -0
  1096. venv/Lib/site-packages/pygments/lexers/graphics.py +794 -0
  1097. venv/Lib/site-packages/pygments/lexers/graphql.py +176 -0
  1098. venv/Lib/site-packages/pygments/lexers/graphviz.py +58 -0
  1099. venv/Lib/site-packages/pygments/lexers/gsql.py +103 -0
  1100. venv/Lib/site-packages/pygments/lexers/hare.py +73 -0
  1101. venv/Lib/site-packages/pygments/lexers/haskell.py +867 -0
  1102. venv/Lib/site-packages/pygments/lexers/haxe.py +941 -0
  1103. venv/Lib/site-packages/pygments/lexers/hdl.py +466 -0
  1104. venv/Lib/site-packages/pygments/lexers/hexdump.py +102 -0
  1105. venv/Lib/site-packages/pygments/lexers/html.py +670 -0
  1106. venv/Lib/site-packages/pygments/lexers/idl.py +284 -0
  1107. venv/Lib/site-packages/pygments/lexers/igor.py +435 -0
  1108. venv/Lib/site-packages/pygments/lexers/inferno.py +95 -0
  1109. venv/Lib/site-packages/pygments/lexers/installers.py +352 -0
  1110. venv/Lib/site-packages/pygments/lexers/int_fiction.py +1370 -0
  1111. venv/Lib/site-packages/pygments/lexers/iolang.py +61 -0
  1112. venv/Lib/site-packages/pygments/lexers/j.py +151 -0
  1113. venv/Lib/site-packages/pygments/lexers/javascript.py +1591 -0
  1114. venv/Lib/site-packages/pygments/lexers/jmespath.py +69 -0
  1115. venv/Lib/site-packages/pygments/lexers/jslt.py +94 -0
  1116. venv/Lib/site-packages/pygments/lexers/json5.py +83 -0
  1117. venv/Lib/site-packages/pygments/lexers/jsonnet.py +169 -0
  1118. venv/Lib/site-packages/pygments/lexers/jsx.py +100 -0
  1119. venv/Lib/site-packages/pygments/lexers/julia.py +294 -0
  1120. venv/Lib/site-packages/pygments/lexers/jvm.py +1807 -0
  1121. venv/Lib/site-packages/pygments/lexers/kuin.py +332 -0
  1122. venv/Lib/site-packages/pygments/lexers/kusto.py +93 -0
  1123. venv/Lib/site-packages/pygments/lexers/ldap.py +155 -0
  1124. venv/Lib/site-packages/pygments/lexers/lean.py +241 -0
  1125. venv/Lib/site-packages/pygments/lexers/lilypond.py +225 -0
  1126. venv/Lib/site-packages/pygments/lexers/lisp.py +3152 -0
  1127. venv/Lib/site-packages/pygments/lexers/macaulay2.py +1847 -0
  1128. venv/Lib/site-packages/pygments/lexers/make.py +212 -0
  1129. venv/Lib/site-packages/pygments/lexers/maple.py +291 -0
  1130. venv/Lib/site-packages/pygments/lexers/markup.py +1659 -0
  1131. venv/Lib/site-packages/pygments/lexers/math.py +21 -0
  1132. venv/Lib/site-packages/pygments/lexers/matlab.py +3307 -0
  1133. venv/Lib/site-packages/pygments/lexers/maxima.py +84 -0
  1134. venv/Lib/site-packages/pygments/lexers/meson.py +139 -0
  1135. venv/Lib/site-packages/pygments/lexers/mime.py +210 -0
  1136. venv/Lib/site-packages/pygments/lexers/minecraft.py +392 -0
  1137. venv/Lib/site-packages/pygments/lexers/mips.py +130 -0
  1138. venv/Lib/site-packages/pygments/lexers/ml.py +958 -0
  1139. venv/Lib/site-packages/pygments/lexers/modeling.py +368 -0
  1140. venv/Lib/site-packages/pygments/lexers/modula2.py +1579 -0
  1141. venv/Lib/site-packages/pygments/lexers/mojo.py +707 -0
  1142. venv/Lib/site-packages/pygments/lexers/monte.py +203 -0
  1143. venv/Lib/site-packages/pygments/lexers/mosel.py +447 -0
  1144. venv/Lib/site-packages/pygments/lexers/ncl.py +894 -0
  1145. venv/Lib/site-packages/pygments/lexers/nimrod.py +199 -0
  1146. venv/Lib/site-packages/pygments/lexers/nit.py +63 -0
  1147. venv/Lib/site-packages/pygments/lexers/nix.py +144 -0
  1148. venv/Lib/site-packages/pygments/lexers/numbair.py +63 -0
  1149. venv/Lib/site-packages/pygments/lexers/oberon.py +120 -0
  1150. venv/Lib/site-packages/pygments/lexers/objective.py +513 -0
  1151. venv/Lib/site-packages/pygments/lexers/ooc.py +84 -0
  1152. venv/Lib/site-packages/pygments/lexers/openscad.py +96 -0
  1153. venv/Lib/site-packages/pygments/lexers/other.py +41 -0
  1154. venv/Lib/site-packages/pygments/lexers/parasail.py +78 -0
  1155. venv/Lib/site-packages/pygments/lexers/parsers.py +798 -0
  1156. venv/Lib/site-packages/pygments/lexers/pascal.py +644 -0
  1157. venv/Lib/site-packages/pygments/lexers/pawn.py +202 -0
  1158. venv/Lib/site-packages/pygments/lexers/pddl.py +82 -0
  1159. venv/Lib/site-packages/pygments/lexers/perl.py +733 -0
  1160. venv/Lib/site-packages/pygments/lexers/phix.py +363 -0
  1161. venv/Lib/site-packages/pygments/lexers/php.py +335 -0
  1162. venv/Lib/site-packages/pygments/lexers/pointless.py +70 -0
  1163. venv/Lib/site-packages/pygments/lexers/pony.py +93 -0
  1164. venv/Lib/site-packages/pygments/lexers/praat.py +303 -0
  1165. venv/Lib/site-packages/pygments/lexers/procfile.py +41 -0
  1166. venv/Lib/site-packages/pygments/lexers/prolog.py +318 -0
  1167. venv/Lib/site-packages/pygments/lexers/promql.py +176 -0
  1168. venv/Lib/site-packages/pygments/lexers/prql.py +251 -0
  1169. venv/Lib/site-packages/pygments/lexers/ptx.py +119 -0
  1170. venv/Lib/site-packages/pygments/lexers/python.py +1204 -0
  1171. venv/Lib/site-packages/pygments/lexers/q.py +187 -0
  1172. venv/Lib/site-packages/pygments/lexers/qlik.py +117 -0
  1173. venv/Lib/site-packages/pygments/lexers/qvt.py +153 -0
  1174. venv/Lib/site-packages/pygments/lexers/r.py +196 -0
  1175. venv/Lib/site-packages/pygments/lexers/rdf.py +468 -0
  1176. venv/Lib/site-packages/pygments/lexers/rebol.py +419 -0
  1177. venv/Lib/site-packages/pygments/lexers/rego.py +57 -0
  1178. venv/Lib/site-packages/pygments/lexers/rell.py +68 -0
  1179. venv/Lib/site-packages/pygments/lexers/resource.py +83 -0
  1180. venv/Lib/site-packages/pygments/lexers/ride.py +138 -0
  1181. venv/Lib/site-packages/pygments/lexers/rita.py +42 -0
  1182. venv/Lib/site-packages/pygments/lexers/rnc.py +66 -0
  1183. venv/Lib/site-packages/pygments/lexers/roboconf.py +81 -0
  1184. venv/Lib/site-packages/pygments/lexers/robotframework.py +551 -0
  1185. venv/Lib/site-packages/pygments/lexers/ruby.py +518 -0
  1186. venv/Lib/site-packages/pygments/lexers/rust.py +222 -0
  1187. venv/Lib/site-packages/pygments/lexers/sas.py +227 -0
  1188. venv/Lib/site-packages/pygments/lexers/savi.py +171 -0
  1189. venv/Lib/site-packages/pygments/lexers/scdoc.py +85 -0
  1190. venv/Lib/site-packages/pygments/lexers/scripting.py +1638 -0
  1191. venv/Lib/site-packages/pygments/lexers/sgf.py +59 -0
  1192. venv/Lib/site-packages/pygments/lexers/shell.py +902 -0
  1193. venv/Lib/site-packages/pygments/lexers/sieve.py +78 -0
  1194. venv/Lib/site-packages/pygments/lexers/slash.py +183 -0
  1195. venv/Lib/site-packages/pygments/lexers/smalltalk.py +194 -0
  1196. venv/Lib/site-packages/pygments/lexers/smithy.py +77 -0
  1197. venv/Lib/site-packages/pygments/lexers/smv.py +78 -0
  1198. venv/Lib/site-packages/pygments/lexers/snobol.py +82 -0
  1199. venv/Lib/site-packages/pygments/lexers/solidity.py +87 -0
  1200. venv/Lib/site-packages/pygments/lexers/soong.py +78 -0
  1201. venv/Lib/site-packages/pygments/lexers/sophia.py +102 -0
  1202. venv/Lib/site-packages/pygments/lexers/special.py +122 -0
  1203. venv/Lib/site-packages/pygments/lexers/spice.py +70 -0
  1204. venv/Lib/site-packages/pygments/lexers/sql.py +1111 -0
  1205. venv/Lib/site-packages/pygments/lexers/srcinfo.py +62 -0
  1206. venv/Lib/site-packages/pygments/lexers/stata.py +170 -0
  1207. venv/Lib/site-packages/pygments/lexers/supercollider.py +94 -0
  1208. venv/Lib/site-packages/pygments/lexers/tablegen.py +177 -0
  1209. venv/Lib/site-packages/pygments/lexers/tact.py +303 -0
  1210. venv/Lib/site-packages/pygments/lexers/tal.py +77 -0
  1211. venv/Lib/site-packages/pygments/lexers/tcl.py +148 -0
  1212. venv/Lib/site-packages/pygments/lexers/teal.py +88 -0
  1213. venv/Lib/site-packages/pygments/lexers/templates.py +2355 -0
  1214. venv/Lib/site-packages/pygments/lexers/teraterm.py +335 -0
  1215. venv/Lib/site-packages/pygments/lexers/testing.py +209 -0
  1216. venv/Lib/site-packages/pygments/lexers/text.py +27 -0
  1217. venv/Lib/site-packages/pygments/lexers/textedit.py +205 -0
  1218. venv/Lib/site-packages/pygments/lexers/textfmts.py +436 -0
  1219. venv/Lib/site-packages/pygments/lexers/theorem.py +410 -0
  1220. venv/Lib/site-packages/pygments/lexers/thingsdb.py +143 -0
  1221. venv/Lib/site-packages/pygments/lexers/tlb.py +59 -0
  1222. venv/Lib/site-packages/pygments/lexers/tls.py +54 -0
  1223. venv/Lib/site-packages/pygments/lexers/tnt.py +270 -0
  1224. venv/Lib/site-packages/pygments/lexers/trafficscript.py +51 -0
  1225. venv/Lib/site-packages/pygments/lexers/typoscript.py +216 -0
  1226. venv/Lib/site-packages/pygments/lexers/typst.py +160 -0
  1227. venv/Lib/site-packages/pygments/lexers/ul4.py +309 -0
  1228. venv/Lib/site-packages/pygments/lexers/unicon.py +413 -0
  1229. venv/Lib/site-packages/pygments/lexers/urbi.py +145 -0
  1230. venv/Lib/site-packages/pygments/lexers/usd.py +85 -0
  1231. venv/Lib/site-packages/pygments/lexers/varnish.py +189 -0
  1232. venv/Lib/site-packages/pygments/lexers/verification.py +113 -0
  1233. venv/Lib/site-packages/pygments/lexers/verifpal.py +65 -0
  1234. venv/Lib/site-packages/pygments/lexers/vip.py +150 -0
  1235. venv/Lib/site-packages/pygments/lexers/vyper.py +140 -0
  1236. venv/Lib/site-packages/pygments/lexers/web.py +24 -0
  1237. venv/Lib/site-packages/pygments/lexers/webassembly.py +119 -0
  1238. venv/Lib/site-packages/pygments/lexers/webidl.py +298 -0
  1239. venv/Lib/site-packages/pygments/lexers/webmisc.py +1006 -0
  1240. venv/Lib/site-packages/pygments/lexers/wgsl.py +406 -0
  1241. venv/Lib/site-packages/pygments/lexers/whiley.py +115 -0
  1242. venv/Lib/site-packages/pygments/lexers/wowtoc.py +120 -0
  1243. venv/Lib/site-packages/pygments/lexers/wren.py +98 -0
  1244. venv/Lib/site-packages/pygments/lexers/x10.py +66 -0
  1245. venv/Lib/site-packages/pygments/lexers/xorg.py +38 -0
  1246. venv/Lib/site-packages/pygments/lexers/yang.py +103 -0
  1247. venv/Lib/site-packages/pygments/lexers/yara.py +69 -0
  1248. venv/Lib/site-packages/pygments/lexers/zig.py +125 -0
  1249. venv/Lib/site-packages/pygments/modeline.py +43 -0
  1250. venv/Lib/site-packages/pygments/plugin.py +74 -0
  1251. venv/Lib/site-packages/pygments/regexopt.py +102 -0
  1252. venv/Lib/site-packages/pygments/scanner.py +104 -0
  1253. venv/Lib/site-packages/pygments/sphinxext.py +247 -0
  1254. venv/Lib/site-packages/pygments/style.py +203 -0
  1255. venv/Lib/site-packages/pygments/styles/__init__.py +61 -0
  1256. venv/Lib/site-packages/pygments/styles/_mapping.py +54 -0
  1257. venv/Lib/site-packages/pygments/styles/abap.py +32 -0
  1258. venv/Lib/site-packages/pygments/styles/algol.py +65 -0
  1259. venv/Lib/site-packages/pygments/styles/algol_nu.py +65 -0
  1260. venv/Lib/site-packages/pygments/styles/arduino.py +100 -0
  1261. venv/Lib/site-packages/pygments/styles/autumn.py +67 -0
  1262. venv/Lib/site-packages/pygments/styles/borland.py +53 -0
  1263. venv/Lib/site-packages/pygments/styles/bw.py +52 -0
  1264. venv/Lib/site-packages/pygments/styles/coffee.py +80 -0
  1265. venv/Lib/site-packages/pygments/styles/colorful.py +83 -0
  1266. venv/Lib/site-packages/pygments/styles/default.py +76 -0
  1267. venv/Lib/site-packages/pygments/styles/dracula.py +90 -0
  1268. venv/Lib/site-packages/pygments/styles/emacs.py +75 -0
  1269. venv/Lib/site-packages/pygments/styles/friendly.py +76 -0
  1270. venv/Lib/site-packages/pygments/styles/friendly_grayscale.py +80 -0
  1271. venv/Lib/site-packages/pygments/styles/fruity.py +47 -0
  1272. venv/Lib/site-packages/pygments/styles/gh_dark.py +113 -0
  1273. venv/Lib/site-packages/pygments/styles/gruvbox.py +118 -0
  1274. venv/Lib/site-packages/pygments/styles/igor.py +32 -0
  1275. venv/Lib/site-packages/pygments/styles/inkpot.py +72 -0
  1276. venv/Lib/site-packages/pygments/styles/lightbulb.py +110 -0
  1277. venv/Lib/site-packages/pygments/styles/lilypond.py +62 -0
  1278. venv/Lib/site-packages/pygments/styles/lovelace.py +100 -0
  1279. venv/Lib/site-packages/pygments/styles/manni.py +79 -0
  1280. venv/Lib/site-packages/pygments/styles/material.py +124 -0
  1281. venv/Lib/site-packages/pygments/styles/monokai.py +112 -0
  1282. venv/Lib/site-packages/pygments/styles/murphy.py +82 -0
  1283. venv/Lib/site-packages/pygments/styles/native.py +70 -0
  1284. venv/Lib/site-packages/pygments/styles/nord.py +156 -0
  1285. venv/Lib/site-packages/pygments/styles/onedark.py +73 -0
  1286. venv/Lib/site-packages/pygments/styles/paraiso_dark.py +124 -0
  1287. venv/Lib/site-packages/pygments/styles/paraiso_light.py +124 -0
  1288. venv/Lib/site-packages/pygments/styles/pastie.py +78 -0
  1289. venv/Lib/site-packages/pygments/styles/perldoc.py +73 -0
  1290. venv/Lib/site-packages/pygments/styles/rainbow_dash.py +95 -0
  1291. venv/Lib/site-packages/pygments/styles/rrt.py +54 -0
  1292. venv/Lib/site-packages/pygments/styles/sas.py +46 -0
  1293. venv/Lib/site-packages/pygments/styles/solarized.py +144 -0
  1294. venv/Lib/site-packages/pygments/styles/staroffice.py +31 -0
  1295. venv/Lib/site-packages/pygments/styles/stata_dark.py +42 -0
  1296. venv/Lib/site-packages/pygments/styles/stata_light.py +42 -0
  1297. venv/Lib/site-packages/pygments/styles/tango.py +143 -0
  1298. venv/Lib/site-packages/pygments/styles/trac.py +66 -0
  1299. venv/Lib/site-packages/pygments/styles/vim.py +67 -0
  1300. venv/Lib/site-packages/pygments/styles/vs.py +41 -0
  1301. venv/Lib/site-packages/pygments/styles/xcode.py +53 -0
  1302. venv/Lib/site-packages/pygments/styles/zenburn.py +83 -0
  1303. venv/Lib/site-packages/pygments/token.py +214 -0
  1304. venv/Lib/site-packages/pygments/unistring.py +153 -0
  1305. venv/Lib/site-packages/pygments/util.py +324 -0
  1306. venv/Lib/site-packages/pyproject_hooks/__init__.py +31 -0
  1307. venv/Lib/site-packages/pyproject_hooks/_impl.py +410 -0
  1308. venv/Lib/site-packages/pyproject_hooks/_in_process/__init__.py +21 -0
  1309. venv/Lib/site-packages/pyproject_hooks/_in_process/_in_process.py +389 -0
  1310. venv/Lib/site-packages/pyproject_hooks/py.typed +0 -0
  1311. venv/Lib/site-packages/pytest/__init__.py +186 -0
  1312. venv/Lib/site-packages/pytest/__main__.py +9 -0
  1313. venv/Lib/site-packages/pytest/py.typed +0 -0
  1314. venv/Lib/site-packages/readme_renderer/__init__.py +13 -0
  1315. venv/Lib/site-packages/readme_renderer/__main__.py +66 -0
  1316. venv/Lib/site-packages/readme_renderer/clean.py +89 -0
  1317. venv/Lib/site-packages/readme_renderer/markdown.py +123 -0
  1318. venv/Lib/site-packages/readme_renderer/py.typed +0 -0
  1319. venv/Lib/site-packages/readme_renderer/rst.py +135 -0
  1320. venv/Lib/site-packages/readme_renderer/txt.py +24 -0
  1321. venv/Lib/site-packages/requests/__init__.py +183 -0
  1322. venv/Lib/site-packages/requests/__version__.py +14 -0
  1323. venv/Lib/site-packages/requests/_internal_utils.py +51 -0
  1324. venv/Lib/site-packages/requests/adapters.py +697 -0
  1325. venv/Lib/site-packages/requests/api.py +157 -0
  1326. venv/Lib/site-packages/requests/auth.py +314 -0
  1327. venv/Lib/site-packages/requests/certs.py +18 -0
  1328. venv/Lib/site-packages/requests/compat.py +106 -0
  1329. venv/Lib/site-packages/requests/cookies.py +561 -0
  1330. venv/Lib/site-packages/requests/exceptions.py +152 -0
  1331. venv/Lib/site-packages/requests/help.py +131 -0
  1332. venv/Lib/site-packages/requests/hooks.py +34 -0
  1333. venv/Lib/site-packages/requests/models.py +1041 -0
  1334. venv/Lib/site-packages/requests/packages.py +23 -0
  1335. venv/Lib/site-packages/requests/sessions.py +834 -0
  1336. venv/Lib/site-packages/requests/status_codes.py +128 -0
  1337. venv/Lib/site-packages/requests/structures.py +99 -0
  1338. venv/Lib/site-packages/requests/utils.py +1083 -0
  1339. venv/Lib/site-packages/requests_toolbelt/__init__.py +34 -0
  1340. venv/Lib/site-packages/requests_toolbelt/_compat.py +302 -0
  1341. venv/Lib/site-packages/requests_toolbelt/adapters/__init__.py +15 -0
  1342. venv/Lib/site-packages/requests_toolbelt/adapters/appengine.py +206 -0
  1343. venv/Lib/site-packages/requests_toolbelt/adapters/fingerprint.py +48 -0
  1344. venv/Lib/site-packages/requests_toolbelt/adapters/host_header_ssl.py +43 -0
  1345. venv/Lib/site-packages/requests_toolbelt/adapters/socket_options.py +129 -0
  1346. venv/Lib/site-packages/requests_toolbelt/adapters/source.py +67 -0
  1347. venv/Lib/site-packages/requests_toolbelt/adapters/ssl.py +66 -0
  1348. venv/Lib/site-packages/requests_toolbelt/adapters/x509.py +196 -0
  1349. venv/Lib/site-packages/requests_toolbelt/auth/__init__.py +0 -0
  1350. venv/Lib/site-packages/requests_toolbelt/auth/_digest_auth_compat.py +29 -0
  1351. venv/Lib/site-packages/requests_toolbelt/auth/guess.py +146 -0
  1352. venv/Lib/site-packages/requests_toolbelt/auth/handler.py +142 -0
  1353. venv/Lib/site-packages/requests_toolbelt/auth/http_proxy_digest.py +103 -0
  1354. venv/Lib/site-packages/requests_toolbelt/cookies/__init__.py +0 -0
  1355. venv/Lib/site-packages/requests_toolbelt/cookies/forgetful.py +7 -0
  1356. venv/Lib/site-packages/requests_toolbelt/downloadutils/__init__.py +0 -0
  1357. venv/Lib/site-packages/requests_toolbelt/downloadutils/stream.py +176 -0
  1358. venv/Lib/site-packages/requests_toolbelt/downloadutils/tee.py +123 -0
  1359. venv/Lib/site-packages/requests_toolbelt/exceptions.py +25 -0
  1360. venv/Lib/site-packages/requests_toolbelt/multipart/__init__.py +31 -0
  1361. venv/Lib/site-packages/requests_toolbelt/multipart/decoder.py +156 -0
  1362. venv/Lib/site-packages/requests_toolbelt/multipart/encoder.py +655 -0
  1363. venv/Lib/site-packages/requests_toolbelt/sessions.py +89 -0
  1364. venv/Lib/site-packages/requests_toolbelt/streaming_iterator.py +116 -0
  1365. venv/Lib/site-packages/requests_toolbelt/threaded/__init__.py +97 -0
  1366. venv/Lib/site-packages/requests_toolbelt/threaded/pool.py +211 -0
  1367. venv/Lib/site-packages/requests_toolbelt/threaded/thread.py +53 -0
  1368. venv/Lib/site-packages/requests_toolbelt/utils/__init__.py +0 -0
  1369. venv/Lib/site-packages/requests_toolbelt/utils/deprecated.py +91 -0
  1370. venv/Lib/site-packages/requests_toolbelt/utils/dump.py +198 -0
  1371. venv/Lib/site-packages/requests_toolbelt/utils/formdata.py +108 -0
  1372. venv/Lib/site-packages/requests_toolbelt/utils/user_agent.py +143 -0
  1373. venv/Lib/site-packages/rfc3986/__init__.py +53 -0
  1374. venv/Lib/site-packages/rfc3986/_mixin.py +373 -0
  1375. venv/Lib/site-packages/rfc3986/abnf_regexp.py +275 -0
  1376. venv/Lib/site-packages/rfc3986/api.py +104 -0
  1377. venv/Lib/site-packages/rfc3986/builder.py +388 -0
  1378. venv/Lib/site-packages/rfc3986/compat.py +59 -0
  1379. venv/Lib/site-packages/rfc3986/exceptions.py +120 -0
  1380. venv/Lib/site-packages/rfc3986/iri.py +161 -0
  1381. venv/Lib/site-packages/rfc3986/misc.py +131 -0
  1382. venv/Lib/site-packages/rfc3986/normalizers.py +171 -0
  1383. venv/Lib/site-packages/rfc3986/parseresult.py +474 -0
  1384. venv/Lib/site-packages/rfc3986/uri.py +160 -0
  1385. venv/Lib/site-packages/rfc3986/validators.py +440 -0
  1386. venv/Lib/site-packages/rich/__init__.py +177 -0
  1387. venv/Lib/site-packages/rich/__main__.py +245 -0
  1388. venv/Lib/site-packages/rich/_emoji_codes.py +3610 -0
  1389. venv/Lib/site-packages/rich/_emoji_replace.py +31 -0
  1390. venv/Lib/site-packages/rich/_export_format.py +76 -0
  1391. venv/Lib/site-packages/rich/_extension.py +10 -0
  1392. venv/Lib/site-packages/rich/_fileno.py +24 -0
  1393. venv/Lib/site-packages/rich/_inspect.py +272 -0
  1394. venv/Lib/site-packages/rich/_log_render.py +94 -0
  1395. venv/Lib/site-packages/rich/_loop.py +43 -0
  1396. venv/Lib/site-packages/rich/_null_file.py +69 -0
  1397. venv/Lib/site-packages/rich/_palettes.py +309 -0
  1398. venv/Lib/site-packages/rich/_pick.py +17 -0
  1399. venv/Lib/site-packages/rich/_ratio.py +153 -0
  1400. venv/Lib/site-packages/rich/_spinners.py +482 -0
  1401. venv/Lib/site-packages/rich/_stack.py +16 -0
  1402. venv/Lib/site-packages/rich/_timer.py +19 -0
  1403. venv/Lib/site-packages/rich/_unicode_data/__init__.py +93 -0
  1404. venv/Lib/site-packages/rich/_unicode_data/_versions.py +23 -0
  1405. venv/Lib/site-packages/rich/_unicode_data/unicode10-0-0.py +611 -0
  1406. venv/Lib/site-packages/rich/_unicode_data/unicode11-0-0.py +625 -0
  1407. venv/Lib/site-packages/rich/_unicode_data/unicode12-0-0.py +637 -0
  1408. venv/Lib/site-packages/rich/_unicode_data/unicode12-1-0.py +636 -0
  1409. venv/Lib/site-packages/rich/_unicode_data/unicode13-0-0.py +648 -0
  1410. venv/Lib/site-packages/rich/_unicode_data/unicode14-0-0.py +661 -0
  1411. venv/Lib/site-packages/rich/_unicode_data/unicode15-0-0.py +671 -0
  1412. venv/Lib/site-packages/rich/_unicode_data/unicode15-1-0.py +670 -0
  1413. venv/Lib/site-packages/rich/_unicode_data/unicode16-0-0.py +683 -0
  1414. venv/Lib/site-packages/rich/_unicode_data/unicode17-0-0.py +691 -0
  1415. venv/Lib/site-packages/rich/_unicode_data/unicode4-1-0.py +425 -0
  1416. venv/Lib/site-packages/rich/_unicode_data/unicode5-0-0.py +430 -0
  1417. venv/Lib/site-packages/rich/_unicode_data/unicode5-1-0.py +433 -0
  1418. venv/Lib/site-packages/rich/_unicode_data/unicode5-2-0.py +461 -0
  1419. venv/Lib/site-packages/rich/_unicode_data/unicode6-0-0.py +469 -0
  1420. venv/Lib/site-packages/rich/_unicode_data/unicode6-1-0.py +480 -0
  1421. venv/Lib/site-packages/rich/_unicode_data/unicode6-2-0.py +480 -0
  1422. venv/Lib/site-packages/rich/_unicode_data/unicode6-3-0.py +481 -0
  1423. venv/Lib/site-packages/rich/_unicode_data/unicode7-0-0.py +507 -0
  1424. venv/Lib/site-packages/rich/_unicode_data/unicode8-0-0.py +515 -0
  1425. venv/Lib/site-packages/rich/_unicode_data/unicode9-0-0.py +598 -0
  1426. venv/Lib/site-packages/rich/_win32_console.py +661 -0
  1427. venv/Lib/site-packages/rich/_windows.py +71 -0
  1428. venv/Lib/site-packages/rich/_windows_renderer.py +56 -0
  1429. venv/Lib/site-packages/rich/_wrap.py +93 -0
  1430. venv/Lib/site-packages/rich/abc.py +33 -0
  1431. venv/Lib/site-packages/rich/align.py +320 -0
  1432. venv/Lib/site-packages/rich/ansi.py +241 -0
  1433. venv/Lib/site-packages/rich/bar.py +93 -0
  1434. venv/Lib/site-packages/rich/box.py +474 -0
  1435. venv/Lib/site-packages/rich/cells.py +352 -0
  1436. venv/Lib/site-packages/rich/color.py +621 -0
  1437. venv/Lib/site-packages/rich/color_triplet.py +38 -0
  1438. venv/Lib/site-packages/rich/columns.py +187 -0
  1439. venv/Lib/site-packages/rich/console.py +2698 -0
  1440. venv/Lib/site-packages/rich/constrain.py +37 -0
  1441. venv/Lib/site-packages/rich/containers.py +167 -0
  1442. venv/Lib/site-packages/rich/control.py +219 -0
  1443. venv/Lib/site-packages/rich/default_styles.py +196 -0
  1444. venv/Lib/site-packages/rich/diagnose.py +39 -0
  1445. venv/Lib/site-packages/rich/emoji.py +93 -0
  1446. venv/Lib/site-packages/rich/errors.py +34 -0
  1447. venv/Lib/site-packages/rich/file_proxy.py +60 -0
  1448. venv/Lib/site-packages/rich/filesize.py +88 -0
  1449. venv/Lib/site-packages/rich/highlighter.py +232 -0
  1450. venv/Lib/site-packages/rich/json.py +139 -0
  1451. venv/Lib/site-packages/rich/jupyter.py +101 -0
  1452. venv/Lib/site-packages/rich/layout.py +442 -0
  1453. venv/Lib/site-packages/rich/live.py +404 -0
  1454. venv/Lib/site-packages/rich/live_render.py +116 -0
  1455. venv/Lib/site-packages/rich/logging.py +305 -0
  1456. venv/Lib/site-packages/rich/markdown.py +802 -0
  1457. venv/Lib/site-packages/rich/markup.py +251 -0
  1458. venv/Lib/site-packages/rich/measure.py +151 -0
  1459. venv/Lib/site-packages/rich/padding.py +141 -0
  1460. venv/Lib/site-packages/rich/pager.py +34 -0
  1461. venv/Lib/site-packages/rich/palette.py +100 -0
  1462. venv/Lib/site-packages/rich/panel.py +317 -0
  1463. venv/Lib/site-packages/rich/pretty.py +1016 -0
  1464. venv/Lib/site-packages/rich/progress.py +1716 -0
  1465. venv/Lib/site-packages/rich/progress_bar.py +223 -0
  1466. venv/Lib/site-packages/rich/prompt.py +400 -0
  1467. venv/Lib/site-packages/rich/protocol.py +41 -0
  1468. venv/Lib/site-packages/rich/py.typed +0 -0
  1469. venv/Lib/site-packages/rich/region.py +10 -0
  1470. venv/Lib/site-packages/rich/repr.py +150 -0
  1471. venv/Lib/site-packages/rich/rule.py +130 -0
  1472. venv/Lib/site-packages/rich/scope.py +92 -0
  1473. venv/Lib/site-packages/rich/screen.py +54 -0
  1474. venv/Lib/site-packages/rich/segment.py +780 -0
  1475. venv/Lib/site-packages/rich/spinner.py +132 -0
  1476. venv/Lib/site-packages/rich/status.py +131 -0
  1477. venv/Lib/site-packages/rich/style.py +796 -0
  1478. venv/Lib/site-packages/rich/styled.py +42 -0
  1479. venv/Lib/site-packages/rich/syntax.py +988 -0
  1480. venv/Lib/site-packages/rich/table.py +1015 -0
  1481. venv/Lib/site-packages/rich/terminal_theme.py +153 -0
  1482. venv/Lib/site-packages/rich/text.py +1363 -0
  1483. venv/Lib/site-packages/rich/theme.py +116 -0
  1484. venv/Lib/site-packages/rich/themes.py +5 -0
  1485. venv/Lib/site-packages/rich/traceback.py +924 -0
  1486. venv/Lib/site-packages/rich/tree.py +257 -0
  1487. venv/Lib/site-packages/twine/__init__.py +54 -0
  1488. venv/Lib/site-packages/twine/__main__.py +54 -0
  1489. venv/Lib/site-packages/twine/auth.py +307 -0
  1490. venv/Lib/site-packages/twine/cli.py +139 -0
  1491. venv/Lib/site-packages/twine/commands/__init__.py +93 -0
  1492. venv/Lib/site-packages/twine/commands/check.py +195 -0
  1493. venv/Lib/site-packages/twine/commands/register.py +87 -0
  1494. venv/Lib/site-packages/twine/commands/upload.py +253 -0
  1495. venv/Lib/site-packages/twine/distribution.py +8 -0
  1496. venv/Lib/site-packages/twine/exceptions.py +175 -0
  1497. venv/Lib/site-packages/twine/package.py +403 -0
  1498. venv/Lib/site-packages/twine/py.typed +0 -0
  1499. venv/Lib/site-packages/twine/repository.py +246 -0
  1500. venv/Lib/site-packages/twine/sdist.py +83 -0
  1501. venv/Lib/site-packages/twine/settings.py +360 -0
  1502. venv/Lib/site-packages/twine/utils.py +387 -0
  1503. venv/Lib/site-packages/twine/wheel.py +81 -0
  1504. venv/Lib/site-packages/typing_extensions.py +4317 -0
  1505. venv/Lib/site-packages/typing_inspection/__init__.py +0 -0
  1506. venv/Lib/site-packages/typing_inspection/introspection.py +587 -0
  1507. venv/Lib/site-packages/typing_inspection/py.typed +0 -0
  1508. venv/Lib/site-packages/typing_inspection/typing_objects.py +607 -0
  1509. venv/Lib/site-packages/typing_inspection/typing_objects.pyi +417 -0
  1510. venv/Lib/site-packages/urllib3/__init__.py +211 -0
  1511. venv/Lib/site-packages/urllib3/_base_connection.py +167 -0
  1512. venv/Lib/site-packages/urllib3/_collections.py +486 -0
  1513. venv/Lib/site-packages/urllib3/_request_methods.py +278 -0
  1514. venv/Lib/site-packages/urllib3/_version.py +24 -0
  1515. venv/Lib/site-packages/urllib3/connection.py +1099 -0
  1516. venv/Lib/site-packages/urllib3/connectionpool.py +1191 -0
  1517. venv/Lib/site-packages/urllib3/contrib/__init__.py +0 -0
  1518. venv/Lib/site-packages/urllib3/contrib/emscripten/__init__.py +17 -0
  1519. venv/Lib/site-packages/urllib3/contrib/emscripten/connection.py +260 -0
  1520. venv/Lib/site-packages/urllib3/contrib/emscripten/fetch.py +726 -0
  1521. venv/Lib/site-packages/urllib3/contrib/emscripten/request.py +22 -0
  1522. venv/Lib/site-packages/urllib3/contrib/emscripten/response.py +281 -0
  1523. venv/Lib/site-packages/urllib3/contrib/pyopenssl.py +563 -0
  1524. venv/Lib/site-packages/urllib3/contrib/socks.py +228 -0
  1525. venv/Lib/site-packages/urllib3/exceptions.py +335 -0
  1526. venv/Lib/site-packages/urllib3/fields.py +341 -0
  1527. venv/Lib/site-packages/urllib3/filepost.py +89 -0
  1528. venv/Lib/site-packages/urllib3/http2/__init__.py +53 -0
  1529. venv/Lib/site-packages/urllib3/http2/connection.py +356 -0
  1530. venv/Lib/site-packages/urllib3/http2/probe.py +87 -0
  1531. venv/Lib/site-packages/urllib3/poolmanager.py +653 -0
  1532. venv/Lib/site-packages/urllib3/py.typed +2 -0
  1533. venv/Lib/site-packages/urllib3/response.py +1493 -0
  1534. venv/Lib/site-packages/urllib3/util/__init__.py +42 -0
  1535. venv/Lib/site-packages/urllib3/util/connection.py +137 -0
  1536. venv/Lib/site-packages/urllib3/util/proxy.py +43 -0
  1537. venv/Lib/site-packages/urllib3/util/request.py +263 -0
  1538. venv/Lib/site-packages/urllib3/util/response.py +101 -0
  1539. venv/Lib/site-packages/urllib3/util/retry.py +557 -0
  1540. venv/Lib/site-packages/urllib3/util/ssl_.py +477 -0
  1541. venv/Lib/site-packages/urllib3/util/ssl_match_hostname.py +153 -0
  1542. venv/Lib/site-packages/urllib3/util/ssltransport.py +271 -0
  1543. venv/Lib/site-packages/urllib3/util/timeout.py +275 -0
  1544. venv/Lib/site-packages/urllib3/util/url.py +469 -0
  1545. venv/Lib/site-packages/urllib3/util/util.py +42 -0
  1546. venv/Lib/site-packages/urllib3/util/wait.py +124 -0
  1547. venv/Lib/site-packages/win32ctypes/__init__.py +8 -0
  1548. venv/Lib/site-packages/win32ctypes/core/__init__.py +60 -0
  1549. venv/Lib/site-packages/win32ctypes/core/_winerrors.py +9 -0
  1550. venv/Lib/site-packages/win32ctypes/core/cffi/__init__.py +11 -0
  1551. venv/Lib/site-packages/win32ctypes/core/cffi/_authentication.py +172 -0
  1552. venv/Lib/site-packages/win32ctypes/core/cffi/_common.py +29 -0
  1553. venv/Lib/site-packages/win32ctypes/core/cffi/_dll.py +30 -0
  1554. venv/Lib/site-packages/win32ctypes/core/cffi/_nl_support.py +18 -0
  1555. venv/Lib/site-packages/win32ctypes/core/cffi/_resource.py +132 -0
  1556. venv/Lib/site-packages/win32ctypes/core/cffi/_system_information.py +32 -0
  1557. venv/Lib/site-packages/win32ctypes/core/cffi/_time.py +18 -0
  1558. venv/Lib/site-packages/win32ctypes/core/cffi/_util.py +105 -0
  1559. venv/Lib/site-packages/win32ctypes/core/compat.py +10 -0
  1560. venv/Lib/site-packages/win32ctypes/core/ctypes/__init__.py +11 -0
  1561. venv/Lib/site-packages/win32ctypes/core/ctypes/_authentication.py +122 -0
  1562. venv/Lib/site-packages/win32ctypes/core/ctypes/_common.py +53 -0
  1563. venv/Lib/site-packages/win32ctypes/core/ctypes/_dll.py +21 -0
  1564. venv/Lib/site-packages/win32ctypes/core/ctypes/_nl_support.py +12 -0
  1565. venv/Lib/site-packages/win32ctypes/core/ctypes/_resource.py +148 -0
  1566. venv/Lib/site-packages/win32ctypes/core/ctypes/_system_information.py +36 -0
  1567. venv/Lib/site-packages/win32ctypes/core/ctypes/_time.py +15 -0
  1568. venv/Lib/site-packages/win32ctypes/core/ctypes/_util.py +78 -0
  1569. venv/Lib/site-packages/win32ctypes/pywin32/__init__.py +12 -0
  1570. venv/Lib/site-packages/win32ctypes/pywin32/pywintypes.py +67 -0
  1571. venv/Lib/site-packages/win32ctypes/pywin32/win32api.py +294 -0
  1572. venv/Lib/site-packages/win32ctypes/pywin32/win32cred.py +145 -0
  1573. venv/Lib/site-packages/win32ctypes/pywintypes.py +13 -0
  1574. venv/Lib/site-packages/win32ctypes/tests/__init__.py +21 -0
  1575. venv/Lib/site-packages/win32ctypes/tests/test_backends.py +36 -0
  1576. venv/Lib/site-packages/win32ctypes/tests/test_win32api.py +304 -0
  1577. venv/Lib/site-packages/win32ctypes/tests/test_win32cred.py +230 -0
  1578. venv/Lib/site-packages/win32ctypes/version.py +1 -0
  1579. venv/Lib/site-packages/win32ctypes/win32api.py +13 -0
  1580. venv/Lib/site-packages/win32ctypes/win32cred.py +13 -0
@@ -0,0 +1,1571 @@
1
+ # mypy: allow-untyped-defs
2
+ from __future__ import annotations
3
+
4
+ import ast
5
+ from collections.abc import Callable
6
+ from collections.abc import Iterable
7
+ from collections.abc import Mapping
8
+ from collections.abc import Sequence
9
+ import dataclasses
10
+ import inspect
11
+ from inspect import CO_VARARGS
12
+ from inspect import CO_VARKEYWORDS
13
+ from io import StringIO
14
+ import os
15
+ from pathlib import Path
16
+ import re
17
+ import sys
18
+ from traceback import extract_tb
19
+ from traceback import format_exception
20
+ from traceback import format_exception_only
21
+ from traceback import FrameSummary
22
+ from types import CodeType
23
+ from types import FrameType
24
+ from types import TracebackType
25
+ from typing import Any
26
+ from typing import ClassVar
27
+ from typing import Final
28
+ from typing import final
29
+ from typing import Generic
30
+ from typing import Literal
31
+ from typing import overload
32
+ from typing import SupportsIndex
33
+ from typing import TypeAlias
34
+ from typing import TypeVar
35
+
36
+ import pluggy
37
+
38
+ import _pytest
39
+ from _pytest._code.source import findsource
40
+ from _pytest._code.source import getrawcode
41
+ from _pytest._code.source import getstatementrange_ast
42
+ from _pytest._code.source import Source
43
+ from _pytest._io import TerminalWriter
44
+ from _pytest._io.saferepr import safeformat
45
+ from _pytest._io.saferepr import saferepr
46
+ from _pytest.compat import get_real_func
47
+ from _pytest.deprecated import check_ispytest
48
+ from _pytest.pathlib import absolutepath
49
+ from _pytest.pathlib import bestrelpath
50
+
51
+
52
+ if sys.version_info < (3, 11):
53
+ from exceptiongroup import BaseExceptionGroup
54
+
55
+ TracebackStyle = Literal["long", "short", "line", "no", "native", "value", "auto"]
56
+
57
+ EXCEPTION_OR_MORE = type[BaseException] | tuple[type[BaseException], ...]
58
+
59
+
60
+ class Code:
61
+ """Wrapper around Python code objects."""
62
+
63
+ __slots__ = ("raw",)
64
+
65
+ def __init__(self, obj: CodeType) -> None:
66
+ self.raw = obj
67
+
68
+ @classmethod
69
+ def from_function(cls, obj: object) -> Code:
70
+ return cls(getrawcode(obj))
71
+
72
+ def __eq__(self, other):
73
+ return self.raw == other.raw
74
+
75
+ # Ignore type because of https://github.com/python/mypy/issues/4266.
76
+ __hash__ = None # type: ignore
77
+
78
+ @property
79
+ def firstlineno(self) -> int:
80
+ return self.raw.co_firstlineno - 1
81
+
82
+ @property
83
+ def name(self) -> str:
84
+ return self.raw.co_name
85
+
86
+ @property
87
+ def path(self) -> Path | str:
88
+ """Return a path object pointing to source code, or an ``str`` in
89
+ case of ``OSError`` / non-existing file."""
90
+ if not self.raw.co_filename:
91
+ return ""
92
+ try:
93
+ p = absolutepath(self.raw.co_filename)
94
+ # maybe don't try this checking
95
+ if not p.exists():
96
+ raise OSError("path check failed.")
97
+ return p
98
+ except OSError:
99
+ # XXX maybe try harder like the weird logic
100
+ # in the standard lib [linecache.updatecache] does?
101
+ return self.raw.co_filename
102
+
103
+ @property
104
+ def fullsource(self) -> Source | None:
105
+ """Return a _pytest._code.Source object for the full source file of the code."""
106
+ full, _ = findsource(self.raw)
107
+ return full
108
+
109
+ def source(self) -> Source:
110
+ """Return a _pytest._code.Source object for the code object's source only."""
111
+ # return source only for that part of code
112
+ return Source(self.raw)
113
+
114
+ def getargs(self, var: bool = False) -> tuple[str, ...]:
115
+ """Return a tuple with the argument names for the code object.
116
+
117
+ If 'var' is set True also return the names of the variable and
118
+ keyword arguments when present.
119
+ """
120
+ # Handy shortcut for getting args.
121
+ raw = self.raw
122
+ argcount = raw.co_argcount
123
+ if var:
124
+ argcount += raw.co_flags & CO_VARARGS
125
+ argcount += raw.co_flags & CO_VARKEYWORDS
126
+ return raw.co_varnames[:argcount]
127
+
128
+
129
+ class Frame:
130
+ """Wrapper around a Python frame holding f_locals and f_globals
131
+ in which expressions can be evaluated."""
132
+
133
+ __slots__ = ("raw",)
134
+
135
+ def __init__(self, frame: FrameType) -> None:
136
+ self.raw = frame
137
+
138
+ @property
139
+ def lineno(self) -> int:
140
+ return self.raw.f_lineno - 1
141
+
142
+ @property
143
+ def f_globals(self) -> dict[str, Any]:
144
+ return self.raw.f_globals
145
+
146
+ @property
147
+ def f_locals(self) -> dict[str, Any]:
148
+ return self.raw.f_locals
149
+
150
+ @property
151
+ def code(self) -> Code:
152
+ return Code(self.raw.f_code)
153
+
154
+ @property
155
+ def statement(self) -> Source:
156
+ """Statement this frame is at."""
157
+ if self.code.fullsource is None:
158
+ return Source("")
159
+ return self.code.fullsource.getstatement(self.lineno)
160
+
161
+ def eval(self, code, **vars):
162
+ """Evaluate 'code' in the frame.
163
+
164
+ 'vars' are optional additional local variables.
165
+
166
+ Returns the result of the evaluation.
167
+ """
168
+ f_locals = self.f_locals.copy()
169
+ f_locals.update(vars)
170
+ return eval(code, self.f_globals, f_locals)
171
+
172
+ def repr(self, object: object) -> str:
173
+ """Return a 'safe' (non-recursive, one-line) string repr for 'object'."""
174
+ return saferepr(object)
175
+
176
+ def getargs(self, var: bool = False):
177
+ """Return a list of tuples (name, value) for all arguments.
178
+
179
+ If 'var' is set True, also include the variable and keyword arguments
180
+ when present.
181
+ """
182
+ retval = []
183
+ for arg in self.code.getargs(var):
184
+ try:
185
+ retval.append((arg, self.f_locals[arg]))
186
+ except KeyError:
187
+ pass # this can occur when using Psyco
188
+ return retval
189
+
190
+
191
+ class TracebackEntry:
192
+ """A single entry in a Traceback."""
193
+
194
+ __slots__ = ("_rawentry", "_repr_style")
195
+
196
+ def __init__(
197
+ self,
198
+ rawentry: TracebackType,
199
+ repr_style: Literal["short", "long"] | None = None,
200
+ ) -> None:
201
+ self._rawentry: Final = rawentry
202
+ self._repr_style: Final = repr_style
203
+
204
+ def with_repr_style(
205
+ self, repr_style: Literal["short", "long"] | None
206
+ ) -> TracebackEntry:
207
+ return TracebackEntry(self._rawentry, repr_style)
208
+
209
+ @property
210
+ def lineno(self) -> int:
211
+ return self._rawentry.tb_lineno - 1
212
+
213
+ def get_python_framesummary(self) -> FrameSummary:
214
+ # Python's built-in traceback module implements all the nitty gritty
215
+ # details to get column numbers of out frames.
216
+ stack_summary = extract_tb(self._rawentry, limit=1)
217
+ return stack_summary[0]
218
+
219
+ # Column and end line numbers introduced in python 3.11
220
+ if sys.version_info < (3, 11):
221
+
222
+ @property
223
+ def end_lineno_relative(self) -> int | None:
224
+ return None
225
+
226
+ @property
227
+ def colno(self) -> int | None:
228
+ return None
229
+
230
+ @property
231
+ def end_colno(self) -> int | None:
232
+ return None
233
+ else:
234
+
235
+ @property
236
+ def end_lineno_relative(self) -> int | None:
237
+ frame_summary = self.get_python_framesummary()
238
+ if frame_summary.end_lineno is None: # pragma: no cover
239
+ return None
240
+ return frame_summary.end_lineno - 1 - self.frame.code.firstlineno
241
+
242
+ @property
243
+ def colno(self) -> int | None:
244
+ """Starting byte offset of the expression in the traceback entry."""
245
+ return self.get_python_framesummary().colno
246
+
247
+ @property
248
+ def end_colno(self) -> int | None:
249
+ """Ending byte offset of the expression in the traceback entry."""
250
+ return self.get_python_framesummary().end_colno
251
+
252
+ @property
253
+ def frame(self) -> Frame:
254
+ return Frame(self._rawentry.tb_frame)
255
+
256
+ @property
257
+ def relline(self) -> int:
258
+ return self.lineno - self.frame.code.firstlineno
259
+
260
+ def __repr__(self) -> str:
261
+ return f"<TracebackEntry {self.frame.code.path}:{self.lineno + 1}>"
262
+
263
+ @property
264
+ def statement(self) -> Source:
265
+ """_pytest._code.Source object for the current statement."""
266
+ source = self.frame.code.fullsource
267
+ assert source is not None
268
+ return source.getstatement(self.lineno)
269
+
270
+ @property
271
+ def path(self) -> Path | str:
272
+ """Path to the source code."""
273
+ return self.frame.code.path
274
+
275
+ @property
276
+ def locals(self) -> dict[str, Any]:
277
+ """Locals of underlying frame."""
278
+ return self.frame.f_locals
279
+
280
+ def getfirstlinesource(self) -> int:
281
+ return self.frame.code.firstlineno
282
+
283
+ def getsource(
284
+ self, astcache: dict[str | Path, ast.AST] | None = None
285
+ ) -> Source | None:
286
+ """Return failing source code."""
287
+ # we use the passed in astcache to not reparse asttrees
288
+ # within exception info printing
289
+ source = self.frame.code.fullsource
290
+ if source is None:
291
+ return None
292
+ key = astnode = None
293
+ if astcache is not None:
294
+ key = self.frame.code.path
295
+ if key is not None:
296
+ astnode = astcache.get(key, None)
297
+ start = self.getfirstlinesource()
298
+ try:
299
+ astnode, _, end = getstatementrange_ast(
300
+ self.lineno, source, astnode=astnode
301
+ )
302
+ except SyntaxError:
303
+ end = self.lineno + 1
304
+ else:
305
+ if key is not None and astcache is not None:
306
+ astcache[key] = astnode
307
+ return source[start:end]
308
+
309
+ source = property(getsource)
310
+
311
+ def ishidden(self, excinfo: ExceptionInfo[BaseException] | None) -> bool:
312
+ """Return True if the current frame has a var __tracebackhide__
313
+ resolving to True.
314
+
315
+ If __tracebackhide__ is a callable, it gets called with the
316
+ ExceptionInfo instance and can decide whether to hide the traceback.
317
+
318
+ Mostly for internal use.
319
+ """
320
+ tbh: bool | Callable[[ExceptionInfo[BaseException] | None], bool] = False
321
+ for maybe_ns_dct in (self.frame.f_locals, self.frame.f_globals):
322
+ # in normal cases, f_locals and f_globals are dictionaries
323
+ # however via `exec(...)` / `eval(...)` they can be other types
324
+ # (even incorrect types!).
325
+ # as such, we suppress all exceptions while accessing __tracebackhide__
326
+ try:
327
+ tbh = maybe_ns_dct["__tracebackhide__"]
328
+ except Exception:
329
+ pass
330
+ else:
331
+ break
332
+ if tbh and callable(tbh):
333
+ return tbh(excinfo)
334
+ return tbh
335
+
336
+ def __str__(self) -> str:
337
+ name = self.frame.code.name
338
+ try:
339
+ line = str(self.statement).lstrip()
340
+ except KeyboardInterrupt:
341
+ raise
342
+ except BaseException:
343
+ line = "???"
344
+ # This output does not quite match Python's repr for traceback entries,
345
+ # but changing it to do so would break certain plugins. See
346
+ # https://github.com/pytest-dev/pytest/pull/7535/ for details.
347
+ return f" File '{self.path}':{self.lineno + 1} in {name}\n {line}\n"
348
+
349
+ @property
350
+ def name(self) -> str:
351
+ """co_name of underlying code."""
352
+ return self.frame.code.raw.co_name
353
+
354
+
355
+ class Traceback(list[TracebackEntry]):
356
+ """Traceback objects encapsulate and offer higher level access to Traceback entries."""
357
+
358
+ def __init__(
359
+ self,
360
+ tb: TracebackType | Iterable[TracebackEntry],
361
+ ) -> None:
362
+ """Initialize from given python traceback object and ExceptionInfo."""
363
+ if isinstance(tb, TracebackType):
364
+
365
+ def f(cur: TracebackType) -> Iterable[TracebackEntry]:
366
+ cur_: TracebackType | None = cur
367
+ while cur_ is not None:
368
+ yield TracebackEntry(cur_)
369
+ cur_ = cur_.tb_next
370
+
371
+ super().__init__(f(tb))
372
+ else:
373
+ super().__init__(tb)
374
+
375
+ def cut(
376
+ self,
377
+ path: os.PathLike[str] | str | None = None,
378
+ lineno: int | None = None,
379
+ firstlineno: int | None = None,
380
+ excludepath: os.PathLike[str] | None = None,
381
+ ) -> Traceback:
382
+ """Return a Traceback instance wrapping part of this Traceback.
383
+
384
+ By providing any combination of path, lineno and firstlineno, the
385
+ first frame to start the to-be-returned traceback is determined.
386
+
387
+ This allows cutting the first part of a Traceback instance e.g.
388
+ for formatting reasons (removing some uninteresting bits that deal
389
+ with handling of the exception/traceback).
390
+ """
391
+ path_ = None if path is None else os.fspath(path)
392
+ excludepath_ = None if excludepath is None else os.fspath(excludepath)
393
+ for x in self:
394
+ code = x.frame.code
395
+ codepath = code.path
396
+ if path is not None and str(codepath) != path_:
397
+ continue
398
+ if (
399
+ excludepath is not None
400
+ and isinstance(codepath, Path)
401
+ and excludepath_ in (str(p) for p in codepath.parents) # type: ignore[operator]
402
+ ):
403
+ continue
404
+ if lineno is not None and x.lineno != lineno:
405
+ continue
406
+ if firstlineno is not None and x.frame.code.firstlineno != firstlineno:
407
+ continue
408
+ return Traceback(x._rawentry)
409
+ return self
410
+
411
+ @overload
412
+ def __getitem__(self, key: SupportsIndex) -> TracebackEntry: ...
413
+
414
+ @overload
415
+ def __getitem__(self, key: slice) -> Traceback: ...
416
+
417
+ def __getitem__(self, key: SupportsIndex | slice) -> TracebackEntry | Traceback:
418
+ if isinstance(key, slice):
419
+ return self.__class__(super().__getitem__(key))
420
+ else:
421
+ return super().__getitem__(key)
422
+
423
+ def filter(
424
+ self,
425
+ excinfo_or_fn: ExceptionInfo[BaseException] | Callable[[TracebackEntry], bool],
426
+ /,
427
+ ) -> Traceback:
428
+ """Return a Traceback instance with certain items removed.
429
+
430
+ If the filter is an `ExceptionInfo`, removes all the ``TracebackEntry``s
431
+ which are hidden (see ishidden() above).
432
+
433
+ Otherwise, the filter is a function that gets a single argument, a
434
+ ``TracebackEntry`` instance, and should return True when the item should
435
+ be added to the ``Traceback``, False when not.
436
+ """
437
+ if isinstance(excinfo_or_fn, ExceptionInfo):
438
+ fn = lambda x: not x.ishidden(excinfo_or_fn) # noqa: E731
439
+ else:
440
+ fn = excinfo_or_fn
441
+ return Traceback(filter(fn, self))
442
+
443
+ def recursionindex(self) -> int | None:
444
+ """Return the index of the frame/TracebackEntry where recursion originates if
445
+ appropriate, None if no recursion occurred."""
446
+ cache: dict[tuple[Any, int, int], list[dict[str, Any]]] = {}
447
+ for i, entry in enumerate(self):
448
+ # id for the code.raw is needed to work around
449
+ # the strange metaprogramming in the decorator lib from pypi
450
+ # which generates code objects that have hash/value equality
451
+ # XXX needs a test
452
+ key = entry.frame.code.path, id(entry.frame.code.raw), entry.lineno
453
+ values = cache.setdefault(key, [])
454
+ # Since Python 3.13 f_locals is a proxy, freeze it.
455
+ loc = dict(entry.frame.f_locals)
456
+ if values:
457
+ for otherloc in values:
458
+ if otherloc == loc:
459
+ return i
460
+ values.append(loc)
461
+ return None
462
+
463
+
464
+ def stringify_exception(
465
+ exc: BaseException, include_subexception_msg: bool = True
466
+ ) -> str:
467
+ try:
468
+ notes = getattr(exc, "__notes__", [])
469
+ except KeyError:
470
+ # Workaround for https://github.com/python/cpython/issues/98778 on
471
+ # some 3.10 and 3.11 patch versions.
472
+ HTTPError = getattr(sys.modules.get("urllib.error", None), "HTTPError", ())
473
+ if sys.version_info < (3, 12) and isinstance(exc, HTTPError):
474
+ notes = []
475
+ else: # pragma: no cover
476
+ # exception not related to above bug, reraise
477
+ raise
478
+ if not include_subexception_msg and isinstance(exc, BaseExceptionGroup):
479
+ message = exc.message
480
+ else:
481
+ message = str(exc)
482
+
483
+ return "\n".join(
484
+ [
485
+ message,
486
+ *notes,
487
+ ]
488
+ )
489
+
490
+
491
+ E = TypeVar("E", bound=BaseException, covariant=True)
492
+
493
+
494
+ @final
495
+ @dataclasses.dataclass
496
+ class ExceptionInfo(Generic[E]):
497
+ """Wraps sys.exc_info() objects and offers help for navigating the traceback."""
498
+
499
+ _assert_start_repr: ClassVar = "AssertionError('assert "
500
+
501
+ _excinfo: tuple[type[E], E, TracebackType] | None
502
+ _striptext: str
503
+ _traceback: Traceback | None
504
+
505
+ def __init__(
506
+ self,
507
+ excinfo: tuple[type[E], E, TracebackType] | None,
508
+ striptext: str = "",
509
+ traceback: Traceback | None = None,
510
+ *,
511
+ _ispytest: bool = False,
512
+ ) -> None:
513
+ check_ispytest(_ispytest)
514
+ self._excinfo = excinfo
515
+ self._striptext = striptext
516
+ self._traceback = traceback
517
+
518
+ @classmethod
519
+ def from_exception(
520
+ cls,
521
+ # Ignoring error: "Cannot use a covariant type variable as a parameter".
522
+ # This is OK to ignore because this class is (conceptually) readonly.
523
+ # See https://github.com/python/mypy/issues/7049.
524
+ exception: E, # type: ignore[misc]
525
+ exprinfo: str | None = None,
526
+ ) -> ExceptionInfo[E]:
527
+ """Return an ExceptionInfo for an existing exception.
528
+
529
+ The exception must have a non-``None`` ``__traceback__`` attribute,
530
+ otherwise this function fails with an assertion error. This means that
531
+ the exception must have been raised, or added a traceback with the
532
+ :py:meth:`~BaseException.with_traceback()` method.
533
+
534
+ :param exprinfo:
535
+ A text string helping to determine if we should strip
536
+ ``AssertionError`` from the output. Defaults to the exception
537
+ message/``__str__()``.
538
+
539
+ .. versionadded:: 7.4
540
+ """
541
+ assert exception.__traceback__, (
542
+ "Exceptions passed to ExcInfo.from_exception(...)"
543
+ " must have a non-None __traceback__."
544
+ )
545
+ exc_info = (type(exception), exception, exception.__traceback__)
546
+ return cls.from_exc_info(exc_info, exprinfo)
547
+
548
+ @classmethod
549
+ def from_exc_info(
550
+ cls,
551
+ exc_info: tuple[type[E], E, TracebackType],
552
+ exprinfo: str | None = None,
553
+ ) -> ExceptionInfo[E]:
554
+ """Like :func:`from_exception`, but using old-style exc_info tuple."""
555
+ _striptext = ""
556
+ if exprinfo is None and isinstance(exc_info[1], AssertionError):
557
+ exprinfo = getattr(exc_info[1], "msg", None)
558
+ if exprinfo is None:
559
+ exprinfo = saferepr(exc_info[1])
560
+ if exprinfo and exprinfo.startswith(cls._assert_start_repr):
561
+ _striptext = "AssertionError: "
562
+
563
+ return cls(exc_info, _striptext, _ispytest=True)
564
+
565
+ @classmethod
566
+ def from_current(cls, exprinfo: str | None = None) -> ExceptionInfo[BaseException]:
567
+ """Return an ExceptionInfo matching the current traceback.
568
+
569
+ .. warning::
570
+
571
+ Experimental API
572
+
573
+ :param exprinfo:
574
+ A text string helping to determine if we should strip
575
+ ``AssertionError`` from the output. Defaults to the exception
576
+ message/``__str__()``.
577
+ """
578
+ tup = sys.exc_info()
579
+ assert tup[0] is not None, "no current exception"
580
+ assert tup[1] is not None, "no current exception"
581
+ assert tup[2] is not None, "no current exception"
582
+ exc_info = (tup[0], tup[1], tup[2])
583
+ return ExceptionInfo.from_exc_info(exc_info, exprinfo)
584
+
585
+ @classmethod
586
+ def for_later(cls) -> ExceptionInfo[E]:
587
+ """Return an unfilled ExceptionInfo."""
588
+ return cls(None, _ispytest=True)
589
+
590
+ def fill_unfilled(self, exc_info: tuple[type[E], E, TracebackType]) -> None:
591
+ """Fill an unfilled ExceptionInfo created with ``for_later()``."""
592
+ assert self._excinfo is None, "ExceptionInfo was already filled"
593
+ self._excinfo = exc_info
594
+
595
+ @property
596
+ def type(self) -> type[E]:
597
+ """The exception class."""
598
+ assert self._excinfo is not None, (
599
+ ".type can only be used after the context manager exits"
600
+ )
601
+ return self._excinfo[0]
602
+
603
+ @property
604
+ def value(self) -> E:
605
+ """The exception value."""
606
+ assert self._excinfo is not None, (
607
+ ".value can only be used after the context manager exits"
608
+ )
609
+ return self._excinfo[1]
610
+
611
+ @property
612
+ def tb(self) -> TracebackType:
613
+ """The exception raw traceback."""
614
+ assert self._excinfo is not None, (
615
+ ".tb can only be used after the context manager exits"
616
+ )
617
+ return self._excinfo[2]
618
+
619
+ @property
620
+ def typename(self) -> str:
621
+ """The type name of the exception."""
622
+ assert self._excinfo is not None, (
623
+ ".typename can only be used after the context manager exits"
624
+ )
625
+ return self.type.__name__
626
+
627
+ @property
628
+ def traceback(self) -> Traceback:
629
+ """The traceback."""
630
+ if self._traceback is None:
631
+ self._traceback = Traceback(self.tb)
632
+ return self._traceback
633
+
634
+ @traceback.setter
635
+ def traceback(self, value: Traceback) -> None:
636
+ self._traceback = value
637
+
638
+ def __repr__(self) -> str:
639
+ if self._excinfo is None:
640
+ return "<ExceptionInfo for raises contextmanager>"
641
+ return f"<{self.__class__.__name__} {saferepr(self._excinfo[1])} tblen={len(self.traceback)}>"
642
+
643
+ def exconly(self, tryshort: bool = False) -> str:
644
+ """Return the exception as a string.
645
+
646
+ When 'tryshort' resolves to True, and the exception is an
647
+ AssertionError, only the actual exception part of the exception
648
+ representation is returned (so 'AssertionError: ' is removed from
649
+ the beginning).
650
+ """
651
+
652
+ def _get_single_subexc(
653
+ eg: BaseExceptionGroup[BaseException],
654
+ ) -> BaseException | None:
655
+ if len(eg.exceptions) != 1:
656
+ return None
657
+ if isinstance(e := eg.exceptions[0], BaseExceptionGroup):
658
+ return _get_single_subexc(e)
659
+ return e
660
+
661
+ if (
662
+ tryshort
663
+ and isinstance(self.value, BaseExceptionGroup)
664
+ and (subexc := _get_single_subexc(self.value)) is not None
665
+ ):
666
+ return f"{subexc!r} [single exception in {type(self.value).__name__}]"
667
+
668
+ lines = format_exception_only(self.type, self.value)
669
+ text = "".join(lines)
670
+ text = text.rstrip()
671
+ if tryshort:
672
+ if text.startswith(self._striptext):
673
+ text = text[len(self._striptext) :]
674
+ return text
675
+
676
+ def errisinstance(self, exc: EXCEPTION_OR_MORE) -> bool:
677
+ """Return True if the exception is an instance of exc.
678
+
679
+ Consider using ``isinstance(excinfo.value, exc)`` instead.
680
+ """
681
+ return isinstance(self.value, exc)
682
+
683
+ def _getreprcrash(self) -> ReprFileLocation | None:
684
+ # Find last non-hidden traceback entry that led to the exception of the
685
+ # traceback, or None if all hidden.
686
+ for i in range(-1, -len(self.traceback) - 1, -1):
687
+ entry = self.traceback[i]
688
+ if not entry.ishidden(self):
689
+ path, lineno = entry.frame.code.raw.co_filename, entry.lineno
690
+ exconly = self.exconly(tryshort=True)
691
+ return ReprFileLocation(path, lineno + 1, exconly)
692
+ return None
693
+
694
+ def getrepr(
695
+ self,
696
+ showlocals: bool = False,
697
+ style: TracebackStyle = "long",
698
+ abspath: bool = False,
699
+ tbfilter: bool | Callable[[ExceptionInfo[BaseException]], Traceback] = True,
700
+ funcargs: bool = False,
701
+ truncate_locals: bool = True,
702
+ truncate_args: bool = True,
703
+ chain: bool = True,
704
+ ) -> ReprExceptionInfo | ExceptionChainRepr:
705
+ """Return str()able representation of this exception info.
706
+
707
+ :param bool showlocals:
708
+ Show locals per traceback entry.
709
+ Ignored if ``style=="native"``.
710
+
711
+ :param str style:
712
+ long|short|line|no|native|value traceback style.
713
+
714
+ :param bool abspath:
715
+ If paths should be changed to absolute or left unchanged.
716
+
717
+ :param tbfilter:
718
+ A filter for traceback entries.
719
+
720
+ * If false, don't hide any entries.
721
+ * If true, hide internal entries and entries that contain a local
722
+ variable ``__tracebackhide__ = True``.
723
+ * If a callable, delegates the filtering to the callable.
724
+
725
+ Ignored if ``style`` is ``"native"``.
726
+
727
+ :param bool funcargs:
728
+ Show fixtures ("funcargs" for legacy purposes) per traceback entry.
729
+
730
+ :param bool truncate_locals:
731
+ With ``showlocals==True``, make sure locals can be safely represented as strings.
732
+
733
+ :param bool truncate_args:
734
+ With ``showargs==True``, make sure args can be safely represented as strings.
735
+
736
+ :param bool chain:
737
+ If chained exceptions in Python 3 should be shown.
738
+
739
+ .. versionchanged:: 3.9
740
+
741
+ Added the ``chain`` parameter.
742
+ """
743
+ if style == "native":
744
+ return ReprExceptionInfo(
745
+ reprtraceback=ReprTracebackNative(
746
+ format_exception(
747
+ self.type,
748
+ self.value,
749
+ self.traceback[0]._rawentry if self.traceback else None,
750
+ )
751
+ ),
752
+ reprcrash=self._getreprcrash(),
753
+ )
754
+
755
+ fmt = FormattedExcinfo(
756
+ showlocals=showlocals,
757
+ style=style,
758
+ abspath=abspath,
759
+ tbfilter=tbfilter,
760
+ funcargs=funcargs,
761
+ truncate_locals=truncate_locals,
762
+ truncate_args=truncate_args,
763
+ chain=chain,
764
+ )
765
+ return fmt.repr_excinfo(self)
766
+
767
+ def match(self, regexp: str | re.Pattern[str]) -> Literal[True]:
768
+ """Check whether the regular expression `regexp` matches the string
769
+ representation of the exception using :func:`python:re.search`.
770
+
771
+ If it matches `True` is returned, otherwise an `AssertionError` is raised.
772
+ """
773
+ __tracebackhide__ = True
774
+ value = stringify_exception(self.value)
775
+ msg = (
776
+ f"Regex pattern did not match.\n"
777
+ f" Expected regex: {regexp!r}\n"
778
+ f" Actual message: {value!r}"
779
+ )
780
+ if regexp == value:
781
+ msg += "\n Did you mean to `re.escape()` the regex?"
782
+ assert re.search(regexp, value), msg
783
+ # Return True to allow for "assert excinfo.match()".
784
+ return True
785
+
786
+ def _group_contains(
787
+ self,
788
+ exc_group: BaseExceptionGroup[BaseException],
789
+ expected_exception: EXCEPTION_OR_MORE,
790
+ match: str | re.Pattern[str] | None,
791
+ target_depth: int | None = None,
792
+ current_depth: int = 1,
793
+ ) -> bool:
794
+ """Return `True` if a `BaseExceptionGroup` contains a matching exception."""
795
+ if (target_depth is not None) and (current_depth > target_depth):
796
+ # already descended past the target depth
797
+ return False
798
+ for exc in exc_group.exceptions:
799
+ if isinstance(exc, BaseExceptionGroup):
800
+ if self._group_contains(
801
+ exc, expected_exception, match, target_depth, current_depth + 1
802
+ ):
803
+ return True
804
+ if (target_depth is not None) and (current_depth != target_depth):
805
+ # not at the target depth, no match
806
+ continue
807
+ if not isinstance(exc, expected_exception):
808
+ continue
809
+ if match is not None:
810
+ value = stringify_exception(exc)
811
+ if not re.search(match, value):
812
+ continue
813
+ return True
814
+ return False
815
+
816
+ def group_contains(
817
+ self,
818
+ expected_exception: EXCEPTION_OR_MORE,
819
+ *,
820
+ match: str | re.Pattern[str] | None = None,
821
+ depth: int | None = None,
822
+ ) -> bool:
823
+ """Check whether a captured exception group contains a matching exception.
824
+
825
+ :param Type[BaseException] | Tuple[Type[BaseException]] expected_exception:
826
+ The expected exception type, or a tuple if one of multiple possible
827
+ exception types are expected.
828
+
829
+ :param str | re.Pattern[str] | None match:
830
+ If specified, a string containing a regular expression,
831
+ or a regular expression object, that is tested against the string
832
+ representation of the exception and its `PEP-678 <https://peps.python.org/pep-0678/>` `__notes__`
833
+ using :func:`re.search`.
834
+
835
+ To match a literal string that may contain :ref:`special characters
836
+ <re-syntax>`, the pattern can first be escaped with :func:`re.escape`.
837
+
838
+ :param Optional[int] depth:
839
+ If `None`, will search for a matching exception at any nesting depth.
840
+ If >= 1, will only match an exception if it's at the specified depth (depth = 1 being
841
+ the exceptions contained within the topmost exception group).
842
+
843
+ .. versionadded:: 8.0
844
+
845
+ .. warning::
846
+ This helper makes it easy to check for the presence of specific exceptions,
847
+ but it is very bad for checking that the group does *not* contain
848
+ *any other exceptions*.
849
+ You should instead consider using :class:`pytest.RaisesGroup`
850
+
851
+ """
852
+ msg = "Captured exception is not an instance of `BaseExceptionGroup`"
853
+ assert isinstance(self.value, BaseExceptionGroup), msg
854
+ msg = "`depth` must be >= 1 if specified"
855
+ assert (depth is None) or (depth >= 1), msg
856
+ return self._group_contains(self.value, expected_exception, match, depth)
857
+
858
+
859
+ # Type alias for the `tbfilter` setting:
860
+ # bool: If True, it should be filtered using Traceback.filter()
861
+ # callable: A callable that takes an ExceptionInfo and returns the filtered traceback.
862
+ TracebackFilter: TypeAlias = bool | Callable[[ExceptionInfo[BaseException]], Traceback]
863
+
864
+
865
+ @dataclasses.dataclass
866
+ class FormattedExcinfo:
867
+ """Presenting information about failing Functions and Generators."""
868
+
869
+ # for traceback entries
870
+ flow_marker: ClassVar = ">"
871
+ fail_marker: ClassVar = "E"
872
+
873
+ showlocals: bool = False
874
+ style: TracebackStyle = "long"
875
+ abspath: bool = True
876
+ tbfilter: TracebackFilter = True
877
+ funcargs: bool = False
878
+ truncate_locals: bool = True
879
+ truncate_args: bool = True
880
+ chain: bool = True
881
+ astcache: dict[str | Path, ast.AST] = dataclasses.field(
882
+ default_factory=dict, init=False, repr=False
883
+ )
884
+
885
+ def _getindent(self, source: Source) -> int:
886
+ # Figure out indent for the given source.
887
+ try:
888
+ s = str(source.getstatement(len(source) - 1))
889
+ except KeyboardInterrupt:
890
+ raise
891
+ except BaseException:
892
+ try:
893
+ s = str(source[-1])
894
+ except KeyboardInterrupt:
895
+ raise
896
+ except BaseException:
897
+ return 0
898
+ return 4 + (len(s) - len(s.lstrip()))
899
+
900
+ def _getentrysource(self, entry: TracebackEntry) -> Source | None:
901
+ source = entry.getsource(self.astcache)
902
+ if source is not None:
903
+ source = source.deindent()
904
+ return source
905
+
906
+ def repr_args(self, entry: TracebackEntry) -> ReprFuncArgs | None:
907
+ if self.funcargs:
908
+ args = []
909
+ for argname, argvalue in entry.frame.getargs(var=True):
910
+ if self.truncate_args:
911
+ str_repr = saferepr(argvalue)
912
+ else:
913
+ str_repr = saferepr(argvalue, maxsize=None)
914
+ args.append((argname, str_repr))
915
+ return ReprFuncArgs(args)
916
+ return None
917
+
918
+ def get_source(
919
+ self,
920
+ source: Source | None,
921
+ line_index: int = -1,
922
+ excinfo: ExceptionInfo[BaseException] | None = None,
923
+ short: bool = False,
924
+ end_line_index: int | None = None,
925
+ colno: int | None = None,
926
+ end_colno: int | None = None,
927
+ ) -> list[str]:
928
+ """Return formatted and marked up source lines."""
929
+ lines = []
930
+ if source is not None and line_index < 0:
931
+ line_index += len(source)
932
+ if source is None or line_index >= len(source.lines) or line_index < 0:
933
+ # `line_index` could still be outside `range(len(source.lines))` if
934
+ # we're processing AST with pathological position attributes.
935
+ source = Source("???")
936
+ line_index = 0
937
+ space_prefix = " "
938
+ if short:
939
+ lines.append(space_prefix + source.lines[line_index].strip())
940
+ lines.extend(
941
+ self.get_highlight_arrows_for_line(
942
+ raw_line=source.raw_lines[line_index],
943
+ line=source.lines[line_index].strip(),
944
+ lineno=line_index,
945
+ end_lineno=end_line_index,
946
+ colno=colno,
947
+ end_colno=end_colno,
948
+ )
949
+ )
950
+ else:
951
+ for line in source.lines[:line_index]:
952
+ lines.append(space_prefix + line)
953
+ lines.append(self.flow_marker + " " + source.lines[line_index])
954
+ lines.extend(
955
+ self.get_highlight_arrows_for_line(
956
+ raw_line=source.raw_lines[line_index],
957
+ line=source.lines[line_index],
958
+ lineno=line_index,
959
+ end_lineno=end_line_index,
960
+ colno=colno,
961
+ end_colno=end_colno,
962
+ )
963
+ )
964
+ for line in source.lines[line_index + 1 :]:
965
+ lines.append(space_prefix + line)
966
+ if excinfo is not None:
967
+ indent = 4 if short else self._getindent(source)
968
+ lines.extend(self.get_exconly(excinfo, indent=indent, markall=True))
969
+ return lines
970
+
971
+ def get_highlight_arrows_for_line(
972
+ self,
973
+ line: str,
974
+ raw_line: str,
975
+ lineno: int | None,
976
+ end_lineno: int | None,
977
+ colno: int | None,
978
+ end_colno: int | None,
979
+ ) -> list[str]:
980
+ """Return characters highlighting a source line.
981
+
982
+ Example with colno and end_colno pointing to the bar expression:
983
+ "foo() + bar()"
984
+ returns " ^^^^^"
985
+ """
986
+ if lineno != end_lineno:
987
+ # Don't handle expressions that span multiple lines.
988
+ return []
989
+ if colno is None or end_colno is None:
990
+ # Can't do anything without column information.
991
+ return []
992
+
993
+ num_stripped_chars = len(raw_line) - len(line)
994
+
995
+ start_char_offset = _byte_offset_to_character_offset(raw_line, colno)
996
+ end_char_offset = _byte_offset_to_character_offset(raw_line, end_colno)
997
+ num_carets = end_char_offset - start_char_offset
998
+ # If the highlight would span the whole line, it is redundant, don't
999
+ # show it.
1000
+ if num_carets >= len(line.strip()):
1001
+ return []
1002
+
1003
+ highlights = " "
1004
+ highlights += " " * (start_char_offset - num_stripped_chars + 1)
1005
+ highlights += "^" * num_carets
1006
+ return [highlights]
1007
+
1008
+ def get_exconly(
1009
+ self,
1010
+ excinfo: ExceptionInfo[BaseException],
1011
+ indent: int = 4,
1012
+ markall: bool = False,
1013
+ ) -> list[str]:
1014
+ lines = []
1015
+ indentstr = " " * indent
1016
+ # Get the real exception information out.
1017
+ exlines = excinfo.exconly(tryshort=True).split("\n")
1018
+ failindent = self.fail_marker + indentstr[1:]
1019
+ for line in exlines:
1020
+ lines.append(failindent + line)
1021
+ if not markall:
1022
+ failindent = indentstr
1023
+ return lines
1024
+
1025
+ def repr_locals(self, locals: Mapping[str, object]) -> ReprLocals | None:
1026
+ if self.showlocals:
1027
+ lines = []
1028
+ keys = [loc for loc in locals if loc[0] != "@"]
1029
+ keys.sort()
1030
+ for name in keys:
1031
+ value = locals[name]
1032
+ if name == "__builtins__":
1033
+ lines.append("__builtins__ = <builtins>")
1034
+ else:
1035
+ # This formatting could all be handled by the
1036
+ # _repr() function, which is only reprlib.Repr in
1037
+ # disguise, so is very configurable.
1038
+ if self.truncate_locals:
1039
+ str_repr = saferepr(value)
1040
+ else:
1041
+ str_repr = safeformat(value)
1042
+ # if len(str_repr) < 70 or not isinstance(value, (list, tuple, dict)):
1043
+ lines.append(f"{name:<10} = {str_repr}")
1044
+ # else:
1045
+ # self._line("%-10s =\\" % (name,))
1046
+ # # XXX
1047
+ # pprint.pprint(value, stream=self.excinfowriter)
1048
+ return ReprLocals(lines)
1049
+ return None
1050
+
1051
+ def repr_traceback_entry(
1052
+ self,
1053
+ entry: TracebackEntry | None,
1054
+ excinfo: ExceptionInfo[BaseException] | None = None,
1055
+ ) -> ReprEntry:
1056
+ lines: list[str] = []
1057
+ style = (
1058
+ entry._repr_style
1059
+ if entry is not None and entry._repr_style is not None
1060
+ else self.style
1061
+ )
1062
+ if style in ("short", "long") and entry is not None:
1063
+ source = self._getentrysource(entry)
1064
+ if source is None:
1065
+ source = Source("???")
1066
+ line_index = 0
1067
+ end_line_index, colno, end_colno = None, None, None
1068
+ else:
1069
+ line_index = entry.relline
1070
+ end_line_index = entry.end_lineno_relative
1071
+ colno = entry.colno
1072
+ end_colno = entry.end_colno
1073
+ short = style == "short"
1074
+ reprargs = self.repr_args(entry) if not short else None
1075
+ s = self.get_source(
1076
+ source=source,
1077
+ line_index=line_index,
1078
+ excinfo=excinfo,
1079
+ short=short,
1080
+ end_line_index=end_line_index,
1081
+ colno=colno,
1082
+ end_colno=end_colno,
1083
+ )
1084
+ lines.extend(s)
1085
+ if short:
1086
+ message = f"in {entry.name}"
1087
+ else:
1088
+ message = (excinfo and excinfo.typename) or ""
1089
+ entry_path = entry.path
1090
+ path = self._makepath(entry_path)
1091
+ reprfileloc = ReprFileLocation(path, entry.lineno + 1, message)
1092
+ localsrepr = self.repr_locals(entry.locals)
1093
+ return ReprEntry(lines, reprargs, localsrepr, reprfileloc, style)
1094
+ elif style == "value":
1095
+ if excinfo:
1096
+ lines.extend(str(excinfo.value).split("\n"))
1097
+ return ReprEntry(lines, None, None, None, style)
1098
+ else:
1099
+ if excinfo:
1100
+ lines.extend(self.get_exconly(excinfo, indent=4))
1101
+ return ReprEntry(lines, None, None, None, style)
1102
+
1103
+ def _makepath(self, path: Path | str) -> str:
1104
+ if not self.abspath and isinstance(path, Path):
1105
+ try:
1106
+ np = bestrelpath(Path.cwd(), path)
1107
+ except OSError:
1108
+ return str(path)
1109
+ if len(np) < len(str(path)):
1110
+ return np
1111
+ return str(path)
1112
+
1113
+ def repr_traceback(self, excinfo: ExceptionInfo[BaseException]) -> ReprTraceback:
1114
+ traceback = filter_excinfo_traceback(self.tbfilter, excinfo)
1115
+
1116
+ if isinstance(excinfo.value, RecursionError):
1117
+ traceback, extraline = self._truncate_recursive_traceback(traceback)
1118
+ else:
1119
+ extraline = None
1120
+
1121
+ if not traceback:
1122
+ if extraline is None:
1123
+ extraline = "All traceback entries are hidden. Pass `--full-trace` to see hidden and internal frames."
1124
+ entries = [self.repr_traceback_entry(None, excinfo)]
1125
+ return ReprTraceback(entries, extraline, style=self.style)
1126
+
1127
+ last = traceback[-1]
1128
+ if self.style == "value":
1129
+ entries = [self.repr_traceback_entry(last, excinfo)]
1130
+ return ReprTraceback(entries, None, style=self.style)
1131
+
1132
+ entries = [
1133
+ self.repr_traceback_entry(entry, excinfo if last == entry else None)
1134
+ for entry in traceback
1135
+ ]
1136
+ return ReprTraceback(entries, extraline, style=self.style)
1137
+
1138
+ def _truncate_recursive_traceback(
1139
+ self, traceback: Traceback
1140
+ ) -> tuple[Traceback, str | None]:
1141
+ """Truncate the given recursive traceback trying to find the starting
1142
+ point of the recursion.
1143
+
1144
+ The detection is done by going through each traceback entry and
1145
+ finding the point in which the locals of the frame are equal to the
1146
+ locals of a previous frame (see ``recursionindex()``).
1147
+
1148
+ Handle the situation where the recursion process might raise an
1149
+ exception (for example comparing numpy arrays using equality raises a
1150
+ TypeError), in which case we do our best to warn the user of the
1151
+ error and show a limited traceback.
1152
+ """
1153
+ try:
1154
+ recursionindex = traceback.recursionindex()
1155
+ except Exception as e:
1156
+ max_frames = 10
1157
+ extraline: str | None = (
1158
+ "!!! Recursion error detected, but an error occurred locating the origin of recursion.\n"
1159
+ " The following exception happened when comparing locals in the stack frame:\n"
1160
+ f" {type(e).__name__}: {e!s}\n"
1161
+ f" Displaying first and last {max_frames} stack frames out of {len(traceback)}."
1162
+ )
1163
+ # Type ignored because adding two instances of a List subtype
1164
+ # currently incorrectly has type List instead of the subtype.
1165
+ traceback = traceback[:max_frames] + traceback[-max_frames:] # type: ignore
1166
+ else:
1167
+ if recursionindex is not None:
1168
+ extraline = "!!! Recursion detected (same locals & position)"
1169
+ traceback = traceback[: recursionindex + 1]
1170
+ else:
1171
+ extraline = None
1172
+
1173
+ return traceback, extraline
1174
+
1175
+ def repr_excinfo(self, excinfo: ExceptionInfo[BaseException]) -> ExceptionChainRepr:
1176
+ repr_chain: list[tuple[ReprTraceback, ReprFileLocation | None, str | None]] = []
1177
+ e: BaseException | None = excinfo.value
1178
+ excinfo_: ExceptionInfo[BaseException] | None = excinfo
1179
+ descr = None
1180
+ seen: set[int] = set()
1181
+ while e is not None and id(e) not in seen:
1182
+ seen.add(id(e))
1183
+
1184
+ if excinfo_:
1185
+ # Fall back to native traceback as a temporary workaround until
1186
+ # full support for exception groups added to ExceptionInfo.
1187
+ # See https://github.com/pytest-dev/pytest/issues/9159
1188
+ reprtraceback: ReprTraceback | ReprTracebackNative
1189
+ if isinstance(e, BaseExceptionGroup):
1190
+ # don't filter any sub-exceptions since they shouldn't have any internal frames
1191
+ traceback = filter_excinfo_traceback(self.tbfilter, excinfo)
1192
+ reprtraceback = ReprTracebackNative(
1193
+ format_exception(
1194
+ type(excinfo.value),
1195
+ excinfo.value,
1196
+ traceback[0]._rawentry if traceback else None,
1197
+ )
1198
+ )
1199
+ if not traceback:
1200
+ reprtraceback.extraline = (
1201
+ "All traceback entries are hidden. "
1202
+ "Pass `--full-trace` to see hidden and internal frames."
1203
+ )
1204
+
1205
+ else:
1206
+ reprtraceback = self.repr_traceback(excinfo_)
1207
+ reprcrash = excinfo_._getreprcrash()
1208
+ else:
1209
+ # Fallback to native repr if the exception doesn't have a traceback:
1210
+ # ExceptionInfo objects require a full traceback to work.
1211
+ reprtraceback = ReprTracebackNative(format_exception(type(e), e, None))
1212
+ reprcrash = None
1213
+ repr_chain += [(reprtraceback, reprcrash, descr)]
1214
+
1215
+ if e.__cause__ is not None and self.chain:
1216
+ e = e.__cause__
1217
+ excinfo_ = ExceptionInfo.from_exception(e) if e.__traceback__ else None
1218
+ descr = "The above exception was the direct cause of the following exception:"
1219
+ elif (
1220
+ e.__context__ is not None and not e.__suppress_context__ and self.chain
1221
+ ):
1222
+ e = e.__context__
1223
+ excinfo_ = ExceptionInfo.from_exception(e) if e.__traceback__ else None
1224
+ descr = "During handling of the above exception, another exception occurred:"
1225
+ else:
1226
+ e = None
1227
+ repr_chain.reverse()
1228
+ return ExceptionChainRepr(repr_chain)
1229
+
1230
+
1231
+ @dataclasses.dataclass(eq=False)
1232
+ class TerminalRepr:
1233
+ def __str__(self) -> str:
1234
+ # FYI this is called from pytest-xdist's serialization of exception
1235
+ # information.
1236
+ io = StringIO()
1237
+ tw = TerminalWriter(file=io)
1238
+ self.toterminal(tw)
1239
+ return io.getvalue().strip()
1240
+
1241
+ def __repr__(self) -> str:
1242
+ return f"<{self.__class__} instance at {id(self):0x}>"
1243
+
1244
+ def toterminal(self, tw: TerminalWriter) -> None:
1245
+ raise NotImplementedError()
1246
+
1247
+
1248
+ # This class is abstract -- only subclasses are instantiated.
1249
+ @dataclasses.dataclass(eq=False)
1250
+ class ExceptionRepr(TerminalRepr):
1251
+ # Provided by subclasses.
1252
+ reprtraceback: ReprTraceback
1253
+ reprcrash: ReprFileLocation | None
1254
+ sections: list[tuple[str, str, str]] = dataclasses.field(
1255
+ init=False, default_factory=list
1256
+ )
1257
+
1258
+ def addsection(self, name: str, content: str, sep: str = "-") -> None:
1259
+ self.sections.append((name, content, sep))
1260
+
1261
+ def toterminal(self, tw: TerminalWriter) -> None:
1262
+ for name, content, sep in self.sections:
1263
+ tw.sep(sep, name)
1264
+ tw.line(content)
1265
+
1266
+
1267
+ @dataclasses.dataclass(eq=False)
1268
+ class ExceptionChainRepr(ExceptionRepr):
1269
+ chain: Sequence[tuple[ReprTraceback, ReprFileLocation | None, str | None]]
1270
+
1271
+ def __init__(
1272
+ self,
1273
+ chain: Sequence[tuple[ReprTraceback, ReprFileLocation | None, str | None]],
1274
+ ) -> None:
1275
+ # reprcrash and reprtraceback of the outermost (the newest) exception
1276
+ # in the chain.
1277
+ super().__init__(
1278
+ reprtraceback=chain[-1][0],
1279
+ reprcrash=chain[-1][1],
1280
+ )
1281
+ self.chain = chain
1282
+
1283
+ def toterminal(self, tw: TerminalWriter) -> None:
1284
+ for element in self.chain:
1285
+ element[0].toterminal(tw)
1286
+ if element[2] is not None:
1287
+ tw.line("")
1288
+ tw.line(element[2], yellow=True)
1289
+ super().toterminal(tw)
1290
+
1291
+
1292
+ @dataclasses.dataclass(eq=False)
1293
+ class ReprExceptionInfo(ExceptionRepr):
1294
+ reprtraceback: ReprTraceback
1295
+ reprcrash: ReprFileLocation | None
1296
+
1297
+ def toterminal(self, tw: TerminalWriter) -> None:
1298
+ self.reprtraceback.toterminal(tw)
1299
+ super().toterminal(tw)
1300
+
1301
+
1302
+ @dataclasses.dataclass(eq=False)
1303
+ class ReprTraceback(TerminalRepr):
1304
+ reprentries: Sequence[ReprEntry | ReprEntryNative]
1305
+ extraline: str | None
1306
+ style: TracebackStyle
1307
+
1308
+ entrysep: ClassVar = "_ "
1309
+
1310
+ def toterminal(self, tw: TerminalWriter) -> None:
1311
+ # The entries might have different styles.
1312
+ for i, entry in enumerate(self.reprentries):
1313
+ if entry.style == "long":
1314
+ tw.line("")
1315
+ entry.toterminal(tw)
1316
+ if i < len(self.reprentries) - 1:
1317
+ next_entry = self.reprentries[i + 1]
1318
+ if entry.style == "long" or (
1319
+ entry.style == "short" and next_entry.style == "long"
1320
+ ):
1321
+ tw.sep(self.entrysep)
1322
+
1323
+ if self.extraline:
1324
+ tw.line(self.extraline)
1325
+
1326
+
1327
+ class ReprTracebackNative(ReprTraceback):
1328
+ def __init__(self, tblines: Sequence[str]) -> None:
1329
+ self.reprentries = [ReprEntryNative(tblines)]
1330
+ self.extraline = None
1331
+ self.style = "native"
1332
+
1333
+
1334
+ @dataclasses.dataclass(eq=False)
1335
+ class ReprEntryNative(TerminalRepr):
1336
+ lines: Sequence[str]
1337
+
1338
+ style: ClassVar[TracebackStyle] = "native"
1339
+
1340
+ def toterminal(self, tw: TerminalWriter) -> None:
1341
+ tw.write("".join(self.lines))
1342
+
1343
+
1344
+ @dataclasses.dataclass(eq=False)
1345
+ class ReprEntry(TerminalRepr):
1346
+ lines: Sequence[str]
1347
+ reprfuncargs: ReprFuncArgs | None
1348
+ reprlocals: ReprLocals | None
1349
+ reprfileloc: ReprFileLocation | None
1350
+ style: TracebackStyle
1351
+
1352
+ def _write_entry_lines(self, tw: TerminalWriter) -> None:
1353
+ """Write the source code portions of a list of traceback entries with syntax highlighting.
1354
+
1355
+ Usually entries are lines like these:
1356
+
1357
+ " x = 1"
1358
+ "> assert x == 2"
1359
+ "E assert 1 == 2"
1360
+
1361
+ This function takes care of rendering the "source" portions of it (the lines without
1362
+ the "E" prefix) using syntax highlighting, taking care to not highlighting the ">"
1363
+ character, as doing so might break line continuations.
1364
+ """
1365
+ if not self.lines:
1366
+ return
1367
+
1368
+ if self.style == "value":
1369
+ # Using tw.write instead of tw.line for testing purposes due to TWMock implementation;
1370
+ # lines written with TWMock.line and TWMock._write_source cannot be distinguished
1371
+ # from each other, whereas lines written with TWMock.write are marked with TWMock.WRITE
1372
+ for line in self.lines:
1373
+ tw.write(line)
1374
+ tw.write("\n")
1375
+ return
1376
+
1377
+ # separate indents and source lines that are not failures: we want to
1378
+ # highlight the code but not the indentation, which may contain markers
1379
+ # such as "> assert 0"
1380
+ fail_marker = f"{FormattedExcinfo.fail_marker} "
1381
+ indent_size = len(fail_marker)
1382
+ indents: list[str] = []
1383
+ source_lines: list[str] = []
1384
+ failure_lines: list[str] = []
1385
+ for index, line in enumerate(self.lines):
1386
+ is_failure_line = line.startswith(fail_marker)
1387
+ if is_failure_line:
1388
+ # from this point on all lines are considered part of the failure
1389
+ failure_lines.extend(self.lines[index:])
1390
+ break
1391
+ else:
1392
+ indents.append(line[:indent_size])
1393
+ source_lines.append(line[indent_size:])
1394
+
1395
+ tw._write_source(source_lines, indents)
1396
+
1397
+ # failure lines are always completely red and bold
1398
+ for line in failure_lines:
1399
+ tw.line(line, bold=True, red=True)
1400
+
1401
+ def toterminal(self, tw: TerminalWriter) -> None:
1402
+ if self.style == "short":
1403
+ if self.reprfileloc:
1404
+ self.reprfileloc.toterminal(tw)
1405
+ self._write_entry_lines(tw)
1406
+ if self.reprlocals:
1407
+ self.reprlocals.toterminal(tw, indent=" " * 8)
1408
+ return
1409
+
1410
+ if self.reprfuncargs:
1411
+ self.reprfuncargs.toterminal(tw)
1412
+
1413
+ self._write_entry_lines(tw)
1414
+
1415
+ if self.reprlocals:
1416
+ tw.line("")
1417
+ self.reprlocals.toterminal(tw)
1418
+ if self.reprfileloc:
1419
+ if self.lines:
1420
+ tw.line("")
1421
+ self.reprfileloc.toterminal(tw)
1422
+
1423
+ def __str__(self) -> str:
1424
+ return "{}\n{}\n{}".format(
1425
+ "\n".join(self.lines), self.reprlocals, self.reprfileloc
1426
+ )
1427
+
1428
+
1429
+ @dataclasses.dataclass(eq=False)
1430
+ class ReprFileLocation(TerminalRepr):
1431
+ path: str
1432
+ lineno: int
1433
+ message: str
1434
+
1435
+ def __post_init__(self) -> None:
1436
+ self.path = str(self.path)
1437
+
1438
+ def toterminal(self, tw: TerminalWriter) -> None:
1439
+ # Filename and lineno output for each entry, using an output format
1440
+ # that most editors understand.
1441
+ msg = self.message
1442
+ i = msg.find("\n")
1443
+ if i != -1:
1444
+ msg = msg[:i]
1445
+ tw.write(self.path, bold=True, red=True)
1446
+ tw.line(f":{self.lineno}: {msg}")
1447
+
1448
+
1449
+ @dataclasses.dataclass(eq=False)
1450
+ class ReprLocals(TerminalRepr):
1451
+ lines: Sequence[str]
1452
+
1453
+ def toterminal(self, tw: TerminalWriter, indent="") -> None:
1454
+ for line in self.lines:
1455
+ tw.line(indent + line)
1456
+
1457
+
1458
+ @dataclasses.dataclass(eq=False)
1459
+ class ReprFuncArgs(TerminalRepr):
1460
+ args: Sequence[tuple[str, object]]
1461
+
1462
+ def toterminal(self, tw: TerminalWriter) -> None:
1463
+ if self.args:
1464
+ linesofar = ""
1465
+ for name, value in self.args:
1466
+ ns = f"{name} = {value}"
1467
+ if len(ns) + len(linesofar) + 2 > tw.fullwidth:
1468
+ if linesofar:
1469
+ tw.line(linesofar)
1470
+ linesofar = ns
1471
+ else:
1472
+ if linesofar:
1473
+ linesofar += ", " + ns
1474
+ else:
1475
+ linesofar = ns
1476
+ if linesofar:
1477
+ tw.line(linesofar)
1478
+ tw.line("")
1479
+
1480
+
1481
+ def getfslineno(obj: object) -> tuple[str | Path, int]:
1482
+ """Return source location (path, lineno) for the given object.
1483
+
1484
+ If the source cannot be determined return ("", -1).
1485
+
1486
+ The line number is 0-based.
1487
+ """
1488
+ # xxx let decorators etc specify a sane ordering
1489
+ # NOTE: this used to be done in _pytest.compat.getfslineno, initially added
1490
+ # in 6ec13a2b9. It ("place_as") appears to be something very custom.
1491
+ obj = get_real_func(obj)
1492
+ if hasattr(obj, "place_as"):
1493
+ obj = obj.place_as
1494
+
1495
+ try:
1496
+ code = Code.from_function(obj)
1497
+ except TypeError:
1498
+ try:
1499
+ fn = inspect.getsourcefile(obj) or inspect.getfile(obj) # type: ignore[arg-type]
1500
+ except TypeError:
1501
+ return "", -1
1502
+
1503
+ fspath = (fn and absolutepath(fn)) or ""
1504
+ lineno = -1
1505
+ if fspath:
1506
+ try:
1507
+ _, lineno = findsource(obj)
1508
+ except OSError:
1509
+ pass
1510
+ return fspath, lineno
1511
+
1512
+ return code.path, code.firstlineno
1513
+
1514
+
1515
+ def _byte_offset_to_character_offset(str, offset):
1516
+ """Converts a byte based offset in a string to a code-point."""
1517
+ as_utf8 = str.encode("utf-8")
1518
+ return len(as_utf8[:offset].decode("utf-8", errors="replace"))
1519
+
1520
+
1521
+ # Relative paths that we use to filter traceback entries from appearing to the user;
1522
+ # see filter_traceback.
1523
+ # note: if we need to add more paths than what we have now we should probably use a list
1524
+ # for better maintenance.
1525
+
1526
+ _PLUGGY_DIR = Path(pluggy.__file__.rstrip("oc"))
1527
+ # pluggy is either a package or a single module depending on the version
1528
+ if _PLUGGY_DIR.name == "__init__.py":
1529
+ _PLUGGY_DIR = _PLUGGY_DIR.parent
1530
+ _PYTEST_DIR = Path(_pytest.__file__).parent
1531
+
1532
+
1533
+ def filter_traceback(entry: TracebackEntry) -> bool:
1534
+ """Return True if a TracebackEntry instance should be included in tracebacks.
1535
+
1536
+ We hide traceback entries of:
1537
+
1538
+ * dynamically generated code (no code to show up for it);
1539
+ * internal traceback from pytest or its internal libraries, py and pluggy.
1540
+ """
1541
+ # entry.path might sometimes return a str object when the entry
1542
+ # points to dynamically generated code.
1543
+ # See https://bitbucket.org/pytest-dev/py/issues/71.
1544
+ raw_filename = entry.frame.code.raw.co_filename
1545
+ is_generated = "<" in raw_filename and ">" in raw_filename
1546
+ if is_generated:
1547
+ return False
1548
+
1549
+ # entry.path might point to a non-existing file, in which case it will
1550
+ # also return a str object. See #1133.
1551
+ p = Path(entry.path)
1552
+
1553
+ parents = p.parents
1554
+ if _PLUGGY_DIR in parents:
1555
+ return False
1556
+ if _PYTEST_DIR in parents:
1557
+ return False
1558
+
1559
+ return True
1560
+
1561
+
1562
+ def filter_excinfo_traceback(
1563
+ tbfilter: TracebackFilter, excinfo: ExceptionInfo[BaseException]
1564
+ ) -> Traceback:
1565
+ """Filter the exception traceback in ``excinfo`` according to ``tbfilter``."""
1566
+ if callable(tbfilter):
1567
+ return tbfilter(excinfo)
1568
+ elif tbfilter:
1569
+ return excinfo.traceback.filter(excinfo)
1570
+ else:
1571
+ return excinfo.traceback