claude-all-hands 1.0.0 → 1.0.2

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 (1561) hide show
  1. package/.claude/agents/code-simplifier.md +52 -0
  2. package/.claude/agents/curator.md +195 -117
  3. package/.claude/agents/documentor.md +147 -0
  4. package/.claude/agents/planner.md +127 -125
  5. package/.claude/agents/researcher.md +59 -32
  6. package/.claude/agents/surveyor.md +81 -0
  7. package/.claude/agents/worker.md +74 -0
  8. package/.claude/commands/audit-docs.md +94 -0
  9. package/.claude/commands/continue.md +120 -0
  10. package/.claude/commands/create-docs.md +100 -0
  11. package/.claude/commands/create-skill.md +107 -0
  12. package/.claude/commands/create-specialist.md +111 -0
  13. package/.claude/commands/curator-audit.md +4 -0
  14. package/.claude/commands/debug.md +183 -0
  15. package/.claude/commands/plan.md +209 -61
  16. package/.claude/commands/validate.md +11 -0
  17. package/.claude/commands/whats-next.md +119 -0
  18. package/.claude/envoy/envoy +11 -14
  19. package/.claude/envoy/package-lock.json +1388 -0
  20. package/.claude/envoy/package.json +29 -0
  21. package/.claude/envoy/src/cli.ts +126 -0
  22. package/.claude/envoy/src/commands/base.ts +216 -0
  23. package/.claude/envoy/src/commands/gemini.ts +999 -0
  24. package/.claude/envoy/src/commands/git.ts +639 -0
  25. package/.claude/envoy/src/commands/index.ts +73 -0
  26. package/.claude/envoy/src/commands/knowledge.ts +187 -0
  27. package/.claude/envoy/src/commands/perplexity.ts +129 -0
  28. package/.claude/envoy/src/commands/plan/core.ts +134 -0
  29. package/.claude/envoy/src/commands/plan/findings.ts +446 -0
  30. package/.claude/envoy/src/commands/plan/gates.ts +672 -0
  31. package/.claude/envoy/src/commands/plan/index.ts +135 -0
  32. package/.claude/envoy/src/commands/plan/lifecycle.ts +648 -0
  33. package/.claude/envoy/src/commands/plan/plan-file.ts +138 -0
  34. package/.claude/envoy/src/commands/plan/prompts.ts +285 -0
  35. package/.claude/envoy/src/commands/plan/protocols.ts +166 -0
  36. package/.claude/envoy/src/commands/repomix.ts +99 -0
  37. package/.claude/envoy/src/commands/tavily.ts +220 -0
  38. package/.claude/envoy/src/commands/xai.ts +168 -0
  39. package/.claude/envoy/src/lib/design.ts +41 -0
  40. package/.claude/envoy/src/lib/feedback-schemas.ts +154 -0
  41. package/.claude/envoy/src/lib/findings.ts +215 -0
  42. package/.claude/envoy/src/lib/gates.ts +572 -0
  43. package/.claude/envoy/src/lib/git.ts +132 -0
  44. package/.claude/envoy/src/lib/index.ts +188 -0
  45. package/.claude/envoy/src/lib/knowledge.ts +594 -0
  46. package/.claude/envoy/src/lib/markdown.ts +75 -0
  47. package/.claude/envoy/src/lib/observability.ts +262 -0
  48. package/.claude/envoy/src/lib/paths.ts +130 -0
  49. package/.claude/envoy/src/lib/plan-io.ts +117 -0
  50. package/.claude/envoy/src/lib/prompts.ts +231 -0
  51. package/.claude/envoy/src/lib/protocols.ts +314 -0
  52. package/.claude/envoy/src/lib/repomix.ts +133 -0
  53. package/.claude/envoy/src/lib/retry.ts +138 -0
  54. package/.claude/envoy/src/lib/watcher.ts +167 -0
  55. package/.claude/envoy/tsconfig.json +21 -0
  56. package/.claude/hooks/scripts/scan_agents.py +62 -0
  57. package/.claude/hooks/scripts/scan_commands.py +50 -0
  58. package/.claude/hooks/scripts/scan_skills.py +46 -70
  59. package/.claude/hooks/scripts/validate_artifacts.py +128 -0
  60. package/.claude/hooks/startup.sh +26 -24
  61. package/.claude/protocols/bug-discovery.yaml +55 -0
  62. package/.claude/protocols/debugging.yaml +51 -0
  63. package/.claude/protocols/discovery.yaml +53 -0
  64. package/.claude/protocols/implementation.yaml +84 -0
  65. package/.claude/settings.json +37 -97
  66. package/.claude/skills/brainstorming/SKILL.md +54 -0
  67. package/.claude/skills/claude-code-patterns/SKILL.md +24 -11
  68. package/.claude/skills/commands-development/SKILL.md +630 -0
  69. package/.claude/skills/commands-development/references/arguments.md +252 -0
  70. package/.claude/skills/commands-development/references/patterns.md +796 -0
  71. package/.claude/skills/commands-development/references/tool-restrictions.md +376 -0
  72. package/.claude/skills/discovery-mode/SKILL.md +108 -0
  73. package/.claude/skills/git-ops/SKILL.md +48 -18
  74. package/.claude/skills/hooks-development/SKILL.md +332 -0
  75. package/.claude/skills/hooks-development/references/command-vs-prompt.md +269 -0
  76. package/.claude/skills/hooks-development/references/examples.md +658 -0
  77. package/.claude/skills/hooks-development/references/hook-types.md +463 -0
  78. package/.claude/skills/hooks-development/references/input-output-schemas.md +469 -0
  79. package/.claude/skills/hooks-development/references/matchers.md +470 -0
  80. package/.claude/skills/hooks-development/references/troubleshooting.md +587 -0
  81. package/.claude/skills/implementation-mode/SKILL.md +171 -0
  82. package/.claude/skills/orchestration-idols/SKILL.md +45 -27
  83. package/.claude/skills/research-tools/SKILL.md +68 -88
  84. package/.claude/skills/skills-development/SKILL.md +192 -0
  85. package/.claude/skills/skills-development/references/api-security.md +226 -0
  86. package/.claude/skills/skills-development/references/be-clear-and-direct.md +531 -0
  87. package/.claude/skills/skills-development/references/common-patterns.md +595 -0
  88. package/.claude/skills/skills-development/references/core-principles.md +437 -0
  89. package/.claude/skills/skills-development/references/executable-code.md +175 -0
  90. package/.claude/skills/skills-development/references/iteration-and-testing.md +474 -0
  91. package/.claude/skills/skills-development/references/recommended-structure.md +168 -0
  92. package/.claude/skills/skills-development/references/skill-structure.md +372 -0
  93. package/.claude/skills/skills-development/references/use-xml-tags.md +466 -0
  94. package/.claude/skills/skills-development/references/using-scripts.md +113 -0
  95. package/.claude/skills/skills-development/references/using-templates.md +112 -0
  96. package/.claude/skills/skills-development/references/workflows-and-validation.md +510 -0
  97. package/.claude/skills/skills-development/templates/router-skill.md +73 -0
  98. package/.claude/skills/skills-development/templates/simple-skill.md +33 -0
  99. package/.claude/skills/skills-development/workflows/add-reference.md +96 -0
  100. package/.claude/skills/skills-development/workflows/add-script.md +93 -0
  101. package/.claude/skills/skills-development/workflows/add-template.md +74 -0
  102. package/.claude/skills/skills-development/workflows/add-workflow.md +120 -0
  103. package/.claude/skills/skills-development/workflows/audit-skill.md +138 -0
  104. package/.claude/skills/skills-development/workflows/create-domain-expertise-skill.md +605 -0
  105. package/.claude/skills/skills-development/workflows/create-new-skill.md +191 -0
  106. package/.claude/skills/skills-development/workflows/get-guidance.md +121 -0
  107. package/.claude/skills/skills-development/workflows/upgrade-to-router.md +161 -0
  108. package/.claude/skills/skills-development/workflows/verify-skill.md +204 -0
  109. package/.claude/skills/subagents-development/SKILL.md +325 -0
  110. package/.claude/skills/subagents-development/references/context-management.md +567 -0
  111. package/.claude/skills/subagents-development/references/debugging-agents.md +714 -0
  112. package/.claude/skills/subagents-development/references/error-handling-and-recovery.md +502 -0
  113. package/.claude/skills/subagents-development/references/evaluation-and-testing.md +374 -0
  114. package/.claude/skills/subagents-development/references/orchestration-patterns.md +591 -0
  115. package/.claude/skills/subagents-development/references/subagents.md +508 -0
  116. package/.claude/skills/subagents-development/references/writing-subagent-prompts.md +517 -0
  117. package/.claude/statusline.sh +24 -0
  118. package/bin/cli.js +131 -108
  119. package/package.json +5 -1
  120. package/.claude/agents/explorer.md +0 -70
  121. package/.claude/agents/parallel-worker.md +0 -104
  122. package/.claude/commands/curation-fix.md +0 -68
  123. package/.claude/commands/new-branch.md +0 -11
  124. package/.claude/commands/parallel-discovery.md +0 -51
  125. package/.claude/commands/parallel-orchestration.md +0 -81
  126. package/.claude/commands/plan-checkpoint.md +0 -12
  127. package/.claude/envoy/.venv/.requirements.txt +0 -2
  128. package/.claude/envoy/.venv/bin/Activate.ps1 +0 -241
  129. package/.claude/envoy/.venv/bin/activate +0 -66
  130. package/.claude/envoy/.venv/bin/activate.csh +0 -25
  131. package/.claude/envoy/.venv/bin/activate.fish +0 -64
  132. package/.claude/envoy/.venv/bin/httpx +0 -8
  133. package/.claude/envoy/.venv/bin/normalizer +0 -8
  134. package/.claude/envoy/.venv/bin/pip +0 -8
  135. package/.claude/envoy/.venv/bin/pip3 +0 -8
  136. package/.claude/envoy/.venv/bin/pip3.9 +0 -8
  137. package/.claude/envoy/.venv/bin/pyrsa-decrypt +0 -8
  138. package/.claude/envoy/.venv/bin/pyrsa-encrypt +0 -8
  139. package/.claude/envoy/.venv/bin/pyrsa-keygen +0 -8
  140. package/.claude/envoy/.venv/bin/pyrsa-priv2pub +0 -8
  141. package/.claude/envoy/.venv/bin/pyrsa-sign +0 -8
  142. package/.claude/envoy/.venv/bin/pyrsa-verify +0 -8
  143. package/.claude/envoy/.venv/bin/websockets +0 -8
  144. package/.claude/envoy/.venv/lib/python3.9/site-packages/_distutils_hack/__init__.py +0 -128
  145. package/.claude/envoy/.venv/lib/python3.9/site-packages/_distutils_hack/override.py +0 -1
  146. package/.claude/envoy/.venv/lib/python3.9/site-packages/annotated_types/__init__.py +0 -432
  147. package/.claude/envoy/.venv/lib/python3.9/site-packages/annotated_types/test_cases.py +0 -151
  148. package/.claude/envoy/.venv/lib/python3.9/site-packages/annotated_types-0.7.0.dist-info/INSTALLER +0 -1
  149. package/.claude/envoy/.venv/lib/python3.9/site-packages/annotated_types-0.7.0.dist-info/METADATA +0 -295
  150. package/.claude/envoy/.venv/lib/python3.9/site-packages/annotated_types-0.7.0.dist-info/RECORD +0 -10
  151. package/.claude/envoy/.venv/lib/python3.9/site-packages/annotated_types-0.7.0.dist-info/WHEEL +0 -4
  152. package/.claude/envoy/.venv/lib/python3.9/site-packages/annotated_types-0.7.0.dist-info/licenses/LICENSE +0 -21
  153. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/__init__.py +0 -111
  154. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_backends/__init__.py +0 -0
  155. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_backends/_asyncio.py +0 -3007
  156. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_backends/_trio.py +0 -1384
  157. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/__init__.py +0 -0
  158. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_asyncio_selector_thread.py +0 -167
  159. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_contextmanagers.py +0 -200
  160. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_eventloop.py +0 -229
  161. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_exceptions.py +0 -153
  162. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_fileio.py +0 -797
  163. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_resources.py +0 -18
  164. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_signals.py +0 -27
  165. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_sockets.py +0 -991
  166. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_streams.py +0 -52
  167. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_subprocesses.py +0 -202
  168. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_synchronization.py +0 -753
  169. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_tasks.py +0 -163
  170. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_tempfile.py +0 -616
  171. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_testing.py +0 -78
  172. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/_core/_typedattr.py +0 -81
  173. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/abc/__init__.py +0 -58
  174. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/abc/_eventloop.py +0 -420
  175. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/abc/_resources.py +0 -33
  176. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/abc/_sockets.py +0 -405
  177. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/abc/_streams.py +0 -239
  178. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/abc/_subprocesses.py +0 -79
  179. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/abc/_tasks.py +0 -117
  180. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/abc/_testing.py +0 -65
  181. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/from_thread.py +0 -570
  182. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/functools.py +0 -347
  183. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/lowlevel.py +0 -195
  184. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/py.typed +0 -0
  185. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/pytest_plugin.py +0 -302
  186. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/streams/__init__.py +0 -0
  187. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/streams/buffered.py +0 -188
  188. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/streams/file.py +0 -154
  189. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/streams/memory.py +0 -325
  190. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/streams/stapled.py +0 -147
  191. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/streams/text.py +0 -176
  192. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/streams/tls.py +0 -424
  193. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/to_interpreter.py +0 -246
  194. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/to_process.py +0 -264
  195. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio/to_thread.py +0 -74
  196. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio-4.12.0.dist-info/INSTALLER +0 -1
  197. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio-4.12.0.dist-info/METADATA +0 -96
  198. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio-4.12.0.dist-info/RECORD +0 -92
  199. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio-4.12.0.dist-info/WHEEL +0 -5
  200. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio-4.12.0.dist-info/entry_points.txt +0 -2
  201. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio-4.12.0.dist-info/licenses/LICENSE +0 -20
  202. package/.claude/envoy/.venv/lib/python3.9/site-packages/anyio-4.12.0.dist-info/top_level.txt +0 -1
  203. package/.claude/envoy/.venv/lib/python3.9/site-packages/cachetools/__init__.py +0 -718
  204. package/.claude/envoy/.venv/lib/python3.9/site-packages/cachetools/_cached.py +0 -247
  205. package/.claude/envoy/.venv/lib/python3.9/site-packages/cachetools/_cachedmethod.py +0 -128
  206. package/.claude/envoy/.venv/lib/python3.9/site-packages/cachetools/func.py +0 -102
  207. package/.claude/envoy/.venv/lib/python3.9/site-packages/cachetools/keys.py +0 -62
  208. package/.claude/envoy/.venv/lib/python3.9/site-packages/cachetools-6.2.2.dist-info/INSTALLER +0 -1
  209. package/.claude/envoy/.venv/lib/python3.9/site-packages/cachetools-6.2.2.dist-info/METADATA +0 -156
  210. package/.claude/envoy/.venv/lib/python3.9/site-packages/cachetools-6.2.2.dist-info/RECORD +0 -16
  211. package/.claude/envoy/.venv/lib/python3.9/site-packages/cachetools-6.2.2.dist-info/WHEEL +0 -5
  212. package/.claude/envoy/.venv/lib/python3.9/site-packages/cachetools-6.2.2.dist-info/licenses/LICENSE +0 -20
  213. package/.claude/envoy/.venv/lib/python3.9/site-packages/cachetools-6.2.2.dist-info/top_level.txt +0 -1
  214. package/.claude/envoy/.venv/lib/python3.9/site-packages/certifi/__init__.py +0 -4
  215. package/.claude/envoy/.venv/lib/python3.9/site-packages/certifi/__main__.py +0 -12
  216. package/.claude/envoy/.venv/lib/python3.9/site-packages/certifi/cacert.pem +0 -4678
  217. package/.claude/envoy/.venv/lib/python3.9/site-packages/certifi/core.py +0 -83
  218. package/.claude/envoy/.venv/lib/python3.9/site-packages/certifi/py.typed +0 -0
  219. package/.claude/envoy/.venv/lib/python3.9/site-packages/certifi-2025.11.12.dist-info/INSTALLER +0 -1
  220. package/.claude/envoy/.venv/lib/python3.9/site-packages/certifi-2025.11.12.dist-info/METADATA +0 -78
  221. package/.claude/envoy/.venv/lib/python3.9/site-packages/certifi-2025.11.12.dist-info/RECORD +0 -14
  222. package/.claude/envoy/.venv/lib/python3.9/site-packages/certifi-2025.11.12.dist-info/WHEEL +0 -5
  223. package/.claude/envoy/.venv/lib/python3.9/site-packages/certifi-2025.11.12.dist-info/licenses/LICENSE +0 -20
  224. package/.claude/envoy/.venv/lib/python3.9/site-packages/certifi-2025.11.12.dist-info/top_level.txt +0 -1
  225. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/__init__.py +0 -48
  226. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/__main__.py +0 -6
  227. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/api.py +0 -669
  228. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/cd.py +0 -395
  229. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/cli/__init__.py +0 -8
  230. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/cli/__main__.py +0 -381
  231. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/constant.py +0 -2015
  232. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/legacy.py +0 -80
  233. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/md.cpython-39-darwin.so +0 -0
  234. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/md.py +0 -635
  235. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/md__mypyc.cpython-39-darwin.so +0 -0
  236. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/models.py +0 -360
  237. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/py.typed +0 -0
  238. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/utils.py +0 -414
  239. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer/version.py +0 -8
  240. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer-3.4.4.dist-info/INSTALLER +0 -1
  241. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer-3.4.4.dist-info/METADATA +0 -764
  242. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer-3.4.4.dist-info/RECORD +0 -35
  243. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer-3.4.4.dist-info/WHEEL +0 -6
  244. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer-3.4.4.dist-info/entry_points.txt +0 -2
  245. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer-3.4.4.dist-info/licenses/LICENSE +0 -21
  246. package/.claude/envoy/.venv/lib/python3.9/site-packages/charset_normalizer-3.4.4.dist-info/top_level.txt +0 -1
  247. package/.claude/envoy/.venv/lib/python3.9/site-packages/distutils-precedence.pth +0 -1
  248. package/.claude/envoy/.venv/lib/python3.9/site-packages/exceptiongroup/__init__.py +0 -46
  249. package/.claude/envoy/.venv/lib/python3.9/site-packages/exceptiongroup/_catch.py +0 -138
  250. package/.claude/envoy/.venv/lib/python3.9/site-packages/exceptiongroup/_exceptions.py +0 -336
  251. package/.claude/envoy/.venv/lib/python3.9/site-packages/exceptiongroup/_formatting.py +0 -602
  252. package/.claude/envoy/.venv/lib/python3.9/site-packages/exceptiongroup/_suppress.py +0 -55
  253. package/.claude/envoy/.venv/lib/python3.9/site-packages/exceptiongroup/_version.py +0 -34
  254. package/.claude/envoy/.venv/lib/python3.9/site-packages/exceptiongroup/py.typed +0 -0
  255. package/.claude/envoy/.venv/lib/python3.9/site-packages/exceptiongroup-1.3.1.dist-info/INSTALLER +0 -1
  256. package/.claude/envoy/.venv/lib/python3.9/site-packages/exceptiongroup-1.3.1.dist-info/METADATA +0 -159
  257. package/.claude/envoy/.venv/lib/python3.9/site-packages/exceptiongroup-1.3.1.dist-info/RECORD +0 -18
  258. package/.claude/envoy/.venv/lib/python3.9/site-packages/exceptiongroup-1.3.1.dist-info/WHEEL +0 -4
  259. package/.claude/envoy/.venv/lib/python3.9/site-packages/exceptiongroup-1.3.1.dist-info/licenses/LICENSE +0 -73
  260. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/__init__.py +0 -53
  261. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/_cloud_sdk.py +0 -153
  262. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/_constants.py +0 -5
  263. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/_credentials_async.py +0 -171
  264. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/_credentials_base.py +0 -75
  265. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/_default.py +0 -739
  266. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/_default_async.py +0 -288
  267. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/_exponential_backoff.py +0 -164
  268. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/_helpers.py +0 -554
  269. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/_jwt_async.py +0 -164
  270. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/_oauth2client.py +0 -167
  271. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/_refresh_worker.py +0 -109
  272. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/_service_account_info.py +0 -80
  273. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/aio/__init__.py +0 -25
  274. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/aio/_helpers.py +0 -62
  275. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/aio/credentials.py +0 -143
  276. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/aio/transport/__init__.py +0 -144
  277. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/aio/transport/aiohttp.py +0 -190
  278. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/aio/transport/sessions.py +0 -268
  279. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/api_key.py +0 -76
  280. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/app_engine.py +0 -180
  281. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/aws.py +0 -861
  282. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/compute_engine/__init__.py +0 -22
  283. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/compute_engine/_metadata.py +0 -379
  284. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/compute_engine/credentials.py +0 -558
  285. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/credentials.py +0 -665
  286. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/crypt/__init__.py +0 -98
  287. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/crypt/_cryptography_rsa.py +0 -151
  288. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/crypt/_helpers.py +0 -0
  289. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/crypt/_python_rsa.py +0 -175
  290. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/crypt/base.py +0 -127
  291. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/crypt/es256.py +0 -175
  292. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/crypt/rsa.py +0 -30
  293. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/downscoped.py +0 -512
  294. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/environment_vars.py +0 -88
  295. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/exceptions.py +0 -108
  296. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/external_account.py +0 -708
  297. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/external_account_authorized_user.py +0 -433
  298. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/iam.py +0 -136
  299. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/identity_pool.py +0 -552
  300. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/impersonated_credentials.py +0 -705
  301. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/jwt.py +0 -878
  302. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/metrics.py +0 -154
  303. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/pluggable.py +0 -453
  304. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/py.typed +0 -2
  305. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/transport/__init__.py +0 -104
  306. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/transport/_aiohttp_requests.py +0 -398
  307. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/transport/_custom_tls_signer.py +0 -283
  308. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/transport/_http_client.py +0 -115
  309. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/transport/_mtls_helper.py +0 -446
  310. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/transport/_requests_base.py +0 -53
  311. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/transport/grpc.py +0 -337
  312. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/transport/mtls.py +0 -129
  313. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/transport/requests.py +0 -597
  314. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/transport/urllib3.py +0 -449
  315. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/auth/version.py +0 -15
  316. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/__init__.py +0 -25
  317. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_adapters.py +0 -55
  318. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_api_client.py +0 -1840
  319. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_api_module.py +0 -29
  320. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_automatic_function_calling_util.py +0 -325
  321. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_base_transformers.py +0 -26
  322. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_base_url.py +0 -50
  323. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_common.py +0 -778
  324. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_extra_utils.py +0 -618
  325. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_live_converters.py +0 -1424
  326. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_local_tokenizer_loader.py +0 -223
  327. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_mcp_utils.py +0 -117
  328. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_operations_converters.py +0 -298
  329. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_replay_api_client.py +0 -686
  330. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_test_api_client.py +0 -149
  331. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_tokens_converters.py +0 -480
  332. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/_transformers.py +0 -1368
  333. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/batches.py +0 -2461
  334. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/caches.py +0 -1489
  335. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/chats.py +0 -531
  336. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/client.py +0 -403
  337. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/errors.py +0 -202
  338. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/files.py +0 -1019
  339. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/live.py +0 -1165
  340. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/live_music.py +0 -197
  341. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/local_tokenizer.py +0 -395
  342. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/models.py +0 -7335
  343. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/operations.py +0 -498
  344. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/pagers.py +0 -262
  345. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/py.typed +0 -1
  346. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/tokens.py +0 -362
  347. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/tunings.py +0 -1970
  348. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/types.py +0 -16507
  349. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/genai/version.py +0 -16
  350. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/__init__.py +0 -36
  351. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/_client.py +0 -625
  352. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/_client_async.py +0 -286
  353. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/_credentials_async.py +0 -118
  354. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/_id_token_async.py +0 -285
  355. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/_reauth_async.py +0 -328
  356. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/_service_account_async.py +0 -132
  357. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/challenges.py +0 -281
  358. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/credentials.py +0 -614
  359. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/gdch_credentials.py +0 -251
  360. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/id_token.py +0 -370
  361. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/py.typed +0 -2
  362. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/reauth.py +0 -369
  363. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/service_account.py +0 -881
  364. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/sts.py +0 -176
  365. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/utils.py +0 -168
  366. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/webauthn_handler.py +0 -82
  367. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/webauthn_handler_factory.py +0 -16
  368. package/.claude/envoy/.venv/lib/python3.9/site-packages/google/oauth2/webauthn_types.py +0 -156
  369. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_auth-2.43.0.dist-info/INSTALLER +0 -1
  370. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_auth-2.43.0.dist-info/METADATA +0 -181
  371. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_auth-2.43.0.dist-info/RECORD +0 -154
  372. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_auth-2.43.0.dist-info/WHEEL +0 -6
  373. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_auth-2.43.0.dist-info/licenses/LICENSE +0 -201
  374. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_auth-2.43.0.dist-info/top_level.txt +0 -1
  375. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_genai-1.47.0.dist-info/INSTALLER +0 -1
  376. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_genai-1.47.0.dist-info/METADATA +0 -1864
  377. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_genai-1.47.0.dist-info/RECORD +0 -74
  378. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_genai-1.47.0.dist-info/REQUESTED +0 -0
  379. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_genai-1.47.0.dist-info/WHEEL +0 -5
  380. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_genai-1.47.0.dist-info/licenses/LICENSE +0 -202
  381. package/.claude/envoy/.venv/lib/python3.9/site-packages/google_genai-1.47.0.dist-info/top_level.txt +0 -1
  382. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11/__init__.py +0 -62
  383. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11/_abnf.py +0 -132
  384. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11/_connection.py +0 -659
  385. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11/_events.py +0 -369
  386. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11/_headers.py +0 -282
  387. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11/_readers.py +0 -250
  388. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11/_receivebuffer.py +0 -153
  389. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11/_state.py +0 -365
  390. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11/_util.py +0 -135
  391. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11/_version.py +0 -16
  392. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11/_writers.py +0 -145
  393. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11/py.typed +0 -1
  394. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11-0.16.0.dist-info/INSTALLER +0 -1
  395. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11-0.16.0.dist-info/METADATA +0 -202
  396. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11-0.16.0.dist-info/RECORD +0 -29
  397. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11-0.16.0.dist-info/WHEEL +0 -5
  398. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11-0.16.0.dist-info/licenses/LICENSE.txt +0 -22
  399. package/.claude/envoy/.venv/lib/python3.9/site-packages/h11-0.16.0.dist-info/top_level.txt +0 -1
  400. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/__init__.py +0 -141
  401. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_api.py +0 -94
  402. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_async/__init__.py +0 -39
  403. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_async/connection.py +0 -222
  404. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_async/connection_pool.py +0 -420
  405. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_async/http11.py +0 -379
  406. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_async/http2.py +0 -592
  407. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_async/http_proxy.py +0 -367
  408. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_async/interfaces.py +0 -137
  409. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_async/socks_proxy.py +0 -341
  410. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_backends/__init__.py +0 -0
  411. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_backends/anyio.py +0 -146
  412. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_backends/auto.py +0 -52
  413. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_backends/base.py +0 -101
  414. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_backends/mock.py +0 -143
  415. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_backends/sync.py +0 -241
  416. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_backends/trio.py +0 -159
  417. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_exceptions.py +0 -81
  418. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_models.py +0 -516
  419. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_ssl.py +0 -9
  420. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_sync/__init__.py +0 -39
  421. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_sync/connection.py +0 -222
  422. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py +0 -420
  423. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_sync/http11.py +0 -379
  424. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_sync/http2.py +0 -592
  425. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_sync/http_proxy.py +0 -367
  426. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_sync/interfaces.py +0 -137
  427. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_sync/socks_proxy.py +0 -341
  428. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_synchronization.py +0 -318
  429. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_trace.py +0 -107
  430. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/_utils.py +0 -37
  431. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore/py.typed +0 -0
  432. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore-1.0.9.dist-info/INSTALLER +0 -1
  433. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore-1.0.9.dist-info/METADATA +0 -625
  434. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore-1.0.9.dist-info/RECORD +0 -68
  435. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore-1.0.9.dist-info/WHEEL +0 -4
  436. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpcore-1.0.9.dist-info/licenses/LICENSE.md +0 -27
  437. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/__init__.py +0 -105
  438. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/__version__.py +0 -3
  439. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_api.py +0 -438
  440. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_auth.py +0 -348
  441. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_client.py +0 -2019
  442. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_config.py +0 -248
  443. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_content.py +0 -240
  444. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_decoders.py +0 -393
  445. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_exceptions.py +0 -379
  446. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_main.py +0 -506
  447. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_models.py +0 -1277
  448. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_multipart.py +0 -300
  449. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_status_codes.py +0 -162
  450. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_transports/__init__.py +0 -15
  451. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_transports/asgi.py +0 -187
  452. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_transports/base.py +0 -86
  453. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_transports/default.py +0 -406
  454. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_transports/mock.py +0 -43
  455. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_transports/wsgi.py +0 -149
  456. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_types.py +0 -114
  457. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_urlparse.py +0 -527
  458. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_urls.py +0 -641
  459. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/_utils.py +0 -242
  460. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx/py.typed +0 -0
  461. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx-0.28.1.dist-info/INSTALLER +0 -1
  462. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx-0.28.1.dist-info/METADATA +0 -203
  463. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx-0.28.1.dist-info/RECORD +0 -54
  464. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx-0.28.1.dist-info/WHEEL +0 -4
  465. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx-0.28.1.dist-info/entry_points.txt +0 -2
  466. package/.claude/envoy/.venv/lib/python3.9/site-packages/httpx-0.28.1.dist-info/licenses/LICENSE.md +0 -12
  467. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna/__init__.py +0 -45
  468. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna/codec.py +0 -122
  469. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna/compat.py +0 -15
  470. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna/core.py +0 -437
  471. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna/idnadata.py +0 -4309
  472. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna/intranges.py +0 -57
  473. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna/package_data.py +0 -1
  474. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna/py.typed +0 -0
  475. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna/uts46data.py +0 -8841
  476. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna-3.11.dist-info/INSTALLER +0 -1
  477. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna-3.11.dist-info/METADATA +0 -209
  478. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna-3.11.dist-info/RECORD +0 -22
  479. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna-3.11.dist-info/WHEEL +0 -4
  480. package/.claude/envoy/.venv/lib/python3.9/site-packages/idna-3.11.dist-info/licenses/LICENSE.md +0 -31
  481. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/__init__.py +0 -13
  482. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/__main__.py +0 -31
  483. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/__init__.py +0 -19
  484. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/build_env.py +0 -294
  485. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cache.py +0 -287
  486. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cli/__init__.py +0 -4
  487. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cli/autocompletion.py +0 -163
  488. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cli/base_command.py +0 -214
  489. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cli/cmdoptions.py +0 -1009
  490. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cli/command_context.py +0 -27
  491. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cli/main.py +0 -70
  492. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cli/main_parser.py +0 -87
  493. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cli/parser.py +0 -292
  494. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cli/progress_bars.py +0 -250
  495. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cli/req_command.py +0 -453
  496. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cli/spinners.py +0 -157
  497. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/cli/status_codes.py +0 -6
  498. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/__init__.py +0 -112
  499. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/cache.py +0 -216
  500. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/check.py +0 -47
  501. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/completion.py +0 -91
  502. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/configuration.py +0 -266
  503. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/debug.py +0 -204
  504. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/download.py +0 -139
  505. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/freeze.py +0 -84
  506. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/hash.py +0 -55
  507. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/help.py +0 -41
  508. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/index.py +0 -139
  509. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/install.py +0 -750
  510. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/list.py +0 -337
  511. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/search.py +0 -164
  512. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/show.py +0 -234
  513. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/uninstall.py +0 -100
  514. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/commands/wheel.py +0 -176
  515. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/configuration.py +0 -403
  516. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/distributions/__init__.py +0 -21
  517. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/distributions/base.py +0 -38
  518. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/distributions/installed.py +0 -22
  519. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/distributions/sdist.py +0 -95
  520. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/distributions/wheel.py +0 -34
  521. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/exceptions.py +0 -397
  522. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/index/__init__.py +0 -2
  523. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/index/collector.py +0 -534
  524. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/index/package_finder.py +0 -982
  525. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/index/sources.py +0 -224
  526. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/locations/__init__.py +0 -408
  527. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/locations/_distutils.py +0 -169
  528. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/locations/_sysconfig.py +0 -219
  529. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/locations/base.py +0 -52
  530. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/main.py +0 -13
  531. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/metadata/__init__.py +0 -48
  532. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/metadata/base.py +0 -242
  533. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/metadata/pkg_resources.py +0 -153
  534. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/models/__init__.py +0 -2
  535. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/models/candidate.py +0 -31
  536. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/models/direct_url.py +0 -220
  537. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/models/format_control.py +0 -84
  538. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/models/index.py +0 -32
  539. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/models/link.py +0 -288
  540. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/models/scheme.py +0 -31
  541. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/models/search_scope.py +0 -126
  542. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/models/selection_prefs.py +0 -46
  543. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/models/target_python.py +0 -111
  544. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/models/wheel.py +0 -92
  545. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/network/__init__.py +0 -2
  546. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/network/auth.py +0 -316
  547. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/network/cache.py +0 -69
  548. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/network/download.py +0 -184
  549. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/network/lazy_wheel.py +0 -210
  550. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/network/session.py +0 -454
  551. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/network/utils.py +0 -96
  552. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/network/xmlrpc.py +0 -60
  553. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/__init__.py +0 -0
  554. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  555. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata.py +0 -35
  556. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/metadata_legacy.py +0 -74
  557. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel.py +0 -38
  558. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/build/wheel_legacy.py +0 -110
  559. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/check.py +0 -153
  560. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/freeze.py +0 -277
  561. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/__init__.py +0 -2
  562. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/editable_legacy.py +0 -47
  563. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/legacy.py +0 -132
  564. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/install/wheel.py +0 -803
  565. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/operations/prepare.py +0 -655
  566. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/pyproject.py +0 -183
  567. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/req/__init__.py +0 -94
  568. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/req/constructors.py +0 -474
  569. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/req/req_file.py +0 -528
  570. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/req/req_install.py +0 -846
  571. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/req/req_set.py +0 -190
  572. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/req/req_tracker.py +0 -130
  573. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/req/req_uninstall.py +0 -629
  574. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/__init__.py +0 -0
  575. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/base.py +0 -18
  576. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  577. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/legacy/resolver.py +0 -453
  578. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  579. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/base.py +0 -144
  580. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -555
  581. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/factory.py +0 -700
  582. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +0 -142
  583. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/provider.py +0 -197
  584. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/reporter.py +0 -69
  585. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/requirements.py +0 -166
  586. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/resolution/resolvelib/resolver.py +0 -272
  587. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/self_outdated_check.py +0 -187
  588. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/__init__.py +0 -0
  589. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/_log.py +0 -38
  590. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/appdirs.py +0 -35
  591. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/compat.py +0 -63
  592. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/compatibility_tags.py +0 -168
  593. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/datetime.py +0 -11
  594. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/deprecation.py +0 -104
  595. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/direct_url_helpers.py +0 -79
  596. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/distutils_args.py +0 -42
  597. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/encoding.py +0 -36
  598. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/entrypoints.py +0 -27
  599. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/filesystem.py +0 -182
  600. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/filetypes.py +0 -28
  601. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/glibc.py +0 -92
  602. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/hashes.py +0 -165
  603. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/inject_securetransport.py +0 -36
  604. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/logging.py +0 -391
  605. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/misc.py +0 -828
  606. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/models.py +0 -47
  607. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/packaging.py +0 -89
  608. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/parallel.py +0 -101
  609. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/pkg_resources.py +0 -40
  610. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/setuptools_build.py +0 -173
  611. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/subprocess.py +0 -281
  612. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/temp_dir.py +0 -260
  613. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/unpacking.py +0 -267
  614. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/urls.py +0 -65
  615. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/virtualenv.py +0 -111
  616. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/utils/wheel.py +0 -189
  617. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/vcs/__init__.py +0 -15
  618. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/vcs/bazaar.py +0 -96
  619. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/vcs/git.py +0 -506
  620. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/vcs/mercurial.py +0 -158
  621. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/vcs/subversion.py +0 -329
  622. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/vcs/versioncontrol.py +0 -722
  623. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_internal/wheel_builder.py +0 -360
  624. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/__init__.py +0 -111
  625. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/appdirs.py +0 -633
  626. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/__init__.py +0 -11
  627. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/_cmd.py +0 -57
  628. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/adapter.py +0 -133
  629. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/cache.py +0 -39
  630. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +0 -2
  631. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +0 -146
  632. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -33
  633. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/compat.py +0 -29
  634. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/controller.py +0 -376
  635. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/filewrapper.py +0 -80
  636. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/heuristics.py +0 -135
  637. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/serialize.py +0 -188
  638. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/cachecontrol/wrapper.py +0 -29
  639. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/__init__.py +0 -3
  640. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/__main__.py +0 -12
  641. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/cacert.pem +0 -4257
  642. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/certifi/core.py +0 -76
  643. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/__init__.py +0 -83
  644. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/big5freq.py +0 -386
  645. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/big5prober.py +0 -47
  646. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/chardistribution.py +0 -233
  647. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/charsetgroupprober.py +0 -107
  648. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/charsetprober.py +0 -145
  649. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/__init__.py +0 -1
  650. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/cli/chardetect.py +0 -84
  651. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/codingstatemachine.py +0 -88
  652. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/compat.py +0 -36
  653. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/cp949prober.py +0 -49
  654. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/enums.py +0 -76
  655. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/escprober.py +0 -101
  656. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/escsm.py +0 -246
  657. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/eucjpprober.py +0 -92
  658. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euckrfreq.py +0 -195
  659. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euckrprober.py +0 -47
  660. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euctwfreq.py +0 -387
  661. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/euctwprober.py +0 -46
  662. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/gb2312freq.py +0 -283
  663. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/gb2312prober.py +0 -46
  664. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/hebrewprober.py +0 -292
  665. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/jisfreq.py +0 -325
  666. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/jpcntx.py +0 -233
  667. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langbulgarianmodel.py +0 -4650
  668. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langgreekmodel.py +0 -4398
  669. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langhebrewmodel.py +0 -4383
  670. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langhungarianmodel.py +0 -4650
  671. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langrussianmodel.py +0 -5718
  672. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langthaimodel.py +0 -4383
  673. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/langturkishmodel.py +0 -4383
  674. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/latin1prober.py +0 -145
  675. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcharsetprober.py +0 -91
  676. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcsgroupprober.py +0 -54
  677. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/mbcssm.py +0 -572
  678. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/__init__.py +0 -0
  679. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/metadata/languages.py +0 -310
  680. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/sbcharsetprober.py +0 -145
  681. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/sbcsgroupprober.py +0 -83
  682. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/sjisprober.py +0 -92
  683. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/universaldetector.py +0 -286
  684. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/utf8prober.py +0 -82
  685. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/chardet/version.py +0 -9
  686. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/__init__.py +0 -6
  687. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/ansi.py +0 -102
  688. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/ansitowin32.py +0 -258
  689. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/initialise.py +0 -80
  690. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/win32.py +0 -152
  691. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/colorama/winterm.py +0 -169
  692. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/__init__.py +0 -23
  693. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/__init__.py +0 -6
  694. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/misc.py +0 -41
  695. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/shutil.py +0 -764
  696. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/sysconfig.cfg +0 -84
  697. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/sysconfig.py +0 -786
  698. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/_backport/tarfile.py +0 -2607
  699. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/compat.py +0 -1120
  700. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/database.py +0 -1339
  701. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/index.py +0 -509
  702. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/locators.py +0 -1300
  703. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/manifest.py +0 -393
  704. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/markers.py +0 -130
  705. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/metadata.py +0 -1058
  706. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/resources.py +0 -358
  707. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/scripts.py +0 -423
  708. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/t32.exe +0 -0
  709. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/t64.exe +0 -0
  710. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/util.py +0 -1965
  711. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/version.py +0 -739
  712. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/w32.exe +0 -0
  713. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/w64.exe +0 -0
  714. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distlib/wheel.py +0 -1056
  715. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/distro.py +0 -1230
  716. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/__init__.py +0 -35
  717. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_ihatexml.py +0 -289
  718. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_inputstream.py +0 -918
  719. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_tokenizer.py +0 -1735
  720. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/__init__.py +0 -5
  721. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/_base.py +0 -40
  722. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_trie/py.py +0 -67
  723. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/_utils.py +0 -159
  724. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/constants.py +0 -2946
  725. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/__init__.py +0 -0
  726. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/alphabeticalattributes.py +0 -29
  727. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/base.py +0 -12
  728. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/inject_meta_charset.py +0 -73
  729. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/lint.py +0 -93
  730. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/optionaltags.py +0 -207
  731. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/sanitizer.py +0 -916
  732. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/filters/whitespace.py +0 -38
  733. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/html5parser.py +0 -2795
  734. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/serializer.py +0 -409
  735. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treeadapters/__init__.py +0 -30
  736. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treeadapters/genshi.py +0 -54
  737. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treeadapters/sax.py +0 -50
  738. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/__init__.py +0 -88
  739. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/base.py +0 -417
  740. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/dom.py +0 -239
  741. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/etree.py +0 -343
  742. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treebuilders/etree_lxml.py +0 -392
  743. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/__init__.py +0 -154
  744. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/base.py +0 -252
  745. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/dom.py +0 -43
  746. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/etree.py +0 -131
  747. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/etree_lxml.py +0 -215
  748. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/html5lib/treewalkers/genshi.py +0 -69
  749. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/idna/__init__.py +0 -44
  750. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/idna/codec.py +0 -117
  751. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/idna/compat.py +0 -16
  752. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/idna/core.py +0 -409
  753. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/idna/idnadata.py +0 -2050
  754. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/idna/intranges.py +0 -58
  755. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/idna/package_data.py +0 -2
  756. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/idna/uts46data.py +0 -8438
  757. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/msgpack/__init__.py +0 -54
  758. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/msgpack/_version.py +0 -1
  759. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/msgpack/exceptions.py +0 -48
  760. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/msgpack/ext.py +0 -193
  761. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/msgpack/fallback.py +0 -1087
  762. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/packaging/__about__.py +0 -26
  763. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/packaging/__init__.py +0 -25
  764. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/packaging/_manylinux.py +0 -301
  765. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/packaging/_musllinux.py +0 -136
  766. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/packaging/_structures.py +0 -67
  767. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/packaging/markers.py +0 -304
  768. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/packaging/requirements.py +0 -146
  769. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/packaging/specifiers.py +0 -828
  770. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/packaging/tags.py +0 -484
  771. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/packaging/utils.py +0 -136
  772. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/packaging/version.py +0 -504
  773. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/__init__.py +0 -6
  774. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/build.py +0 -127
  775. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/check.py +0 -207
  776. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/colorlog.py +0 -115
  777. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/compat.py +0 -42
  778. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/dirtools.py +0 -44
  779. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/envbuild.py +0 -171
  780. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/__init__.py +0 -17
  781. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/in_process/_in_process.py +0 -349
  782. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/meta.py +0 -92
  783. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pep517/wrappers.py +0 -371
  784. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pkg_resources/__init__.py +0 -3296
  785. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pkg_resources/py31compat.py +0 -23
  786. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/progress/__init__.py +0 -177
  787. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/progress/bar.py +0 -91
  788. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/progress/counter.py +0 -41
  789. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/progress/spinner.py +0 -43
  790. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/pyparsing.py +0 -7107
  791. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/__init__.py +0 -154
  792. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/__version__.py +0 -14
  793. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/_internal_utils.py +0 -42
  794. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/adapters.py +0 -533
  795. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/api.py +0 -159
  796. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/auth.py +0 -305
  797. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/certs.py +0 -18
  798. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/compat.py +0 -76
  799. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/cookies.py +0 -549
  800. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/exceptions.py +0 -127
  801. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/help.py +0 -132
  802. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/hooks.py +0 -34
  803. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/models.py +0 -966
  804. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/packages.py +0 -16
  805. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/sessions.py +0 -781
  806. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/status_codes.py +0 -123
  807. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/structures.py +0 -105
  808. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/requests/utils.py +0 -1013
  809. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/__init__.py +0 -26
  810. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/compat/__init__.py +0 -0
  811. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py +0 -6
  812. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/providers.py +0 -124
  813. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/reporters.py +0 -37
  814. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/resolvers.py +0 -473
  815. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/resolvelib/structs.py +0 -165
  816. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/six.py +0 -998
  817. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tenacity/__init__.py +0 -517
  818. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tenacity/_asyncio.py +0 -92
  819. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tenacity/_utils.py +0 -68
  820. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tenacity/after.py +0 -46
  821. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tenacity/before.py +0 -41
  822. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tenacity/before_sleep.py +0 -58
  823. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tenacity/nap.py +0 -43
  824. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tenacity/retry.py +0 -213
  825. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tenacity/stop.py +0 -96
  826. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tenacity/tornadoweb.py +0 -59
  827. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tenacity/wait.py +0 -191
  828. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tomli/__init__.py +0 -6
  829. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tomli/_parser.py +0 -703
  830. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/tomli/_re.py +0 -83
  831. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/__init__.py +0 -85
  832. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/_collections.py +0 -337
  833. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/_version.py +0 -2
  834. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/connection.py +0 -539
  835. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/connectionpool.py +0 -1067
  836. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  837. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -36
  838. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  839. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -519
  840. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -396
  841. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/appengine.py +0 -314
  842. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -130
  843. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -511
  844. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +0 -922
  845. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/contrib/socks.py +0 -216
  846. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/exceptions.py +0 -323
  847. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/fields.py +0 -274
  848. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/filepost.py +0 -98
  849. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -5
  850. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  851. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +0 -51
  852. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/six.py +0 -1077
  853. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/__init__.py +0 -24
  854. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/packages/ssl_match_hostname/_implementation.py +0 -160
  855. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/poolmanager.py +0 -536
  856. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/request.py +0 -170
  857. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/response.py +0 -821
  858. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/__init__.py +0 -49
  859. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/connection.py +0 -150
  860. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/proxy.py +0 -56
  861. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/queue.py +0 -22
  862. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/request.py +0 -143
  863. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/response.py +0 -107
  864. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/retry.py +0 -602
  865. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/ssl_.py +0 -495
  866. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/ssltransport.py +0 -221
  867. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/timeout.py +0 -268
  868. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/url.py +0 -432
  869. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/urllib3/util/wait.py +0 -153
  870. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/vendor.txt +0 -22
  871. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/webencodings/__init__.py +0 -342
  872. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/webencodings/labels.py +0 -231
  873. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/webencodings/mklabels.py +0 -59
  874. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/webencodings/tests.py +0 -153
  875. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/_vendor/webencodings/x_user_defined.py +0 -325
  876. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip/py.typed +0 -4
  877. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip-21.2.4.dist-info/INSTALLER +0 -1
  878. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip-21.2.4.dist-info/LICENSE.txt +0 -20
  879. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip-21.2.4.dist-info/METADATA +0 -92
  880. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip-21.2.4.dist-info/RECORD +0 -795
  881. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip-21.2.4.dist-info/REQUESTED +0 -0
  882. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip-21.2.4.dist-info/WHEEL +0 -5
  883. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip-21.2.4.dist-info/entry_points.txt +0 -5
  884. package/.claude/envoy/.venv/lib/python3.9/site-packages/pip-21.2.4.dist-info/top_level.txt +0 -1
  885. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/__init__.py +0 -3288
  886. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/__init__.py +0 -0
  887. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/appdirs.py +0 -608
  888. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__about__.py +0 -27
  889. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/__init__.py +0 -26
  890. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/_compat.py +0 -38
  891. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/_structures.py +0 -86
  892. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/_typing.py +0 -48
  893. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/markers.py +0 -328
  894. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/requirements.py +0 -145
  895. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/specifiers.py +0 -863
  896. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/tags.py +0 -751
  897. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/utils.py +0 -65
  898. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/packaging/version.py +0 -535
  899. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/_vendor/pyparsing.py +0 -5742
  900. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/extern/__init__.py +0 -73
  901. package/.claude/envoy/.venv/lib/python3.9/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py +0 -6
  902. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/__init__.py +0 -2
  903. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/__init__.py +0 -1
  904. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/ber/__init__.py +0 -1
  905. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/ber/decoder.py +0 -2189
  906. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/ber/encoder.py +0 -954
  907. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/ber/eoo.py +0 -28
  908. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/cer/__init__.py +0 -1
  909. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/cer/decoder.py +0 -149
  910. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/cer/encoder.py +0 -331
  911. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/der/__init__.py +0 -1
  912. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/der/decoder.py +0 -120
  913. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/der/encoder.py +0 -126
  914. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/native/__init__.py +0 -1
  915. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/native/decoder.py +0 -244
  916. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/native/encoder.py +0 -285
  917. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/codec/streaming.py +0 -234
  918. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/compat/__init__.py +0 -4
  919. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/compat/integer.py +0 -13
  920. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/debug.py +0 -146
  921. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/error.py +0 -116
  922. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/type/__init__.py +0 -1
  923. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/type/base.py +0 -699
  924. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/type/char.py +0 -288
  925. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/type/constraint.py +0 -751
  926. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/type/error.py +0 -11
  927. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/type/namedtype.py +0 -550
  928. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/type/namedval.py +0 -192
  929. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/type/opentype.py +0 -104
  930. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/type/tag.py +0 -335
  931. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/type/tagmap.py +0 -96
  932. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/type/univ.py +0 -3327
  933. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1/type/useful.py +0 -189
  934. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1-0.6.1.dist-info/INSTALLER +0 -1
  935. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1-0.6.1.dist-info/LICENSE.rst +0 -24
  936. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1-0.6.1.dist-info/METADATA +0 -228
  937. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1-0.6.1.dist-info/RECORD +0 -71
  938. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1-0.6.1.dist-info/WHEEL +0 -5
  939. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1-0.6.1.dist-info/top_level.txt +0 -1
  940. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1-0.6.1.dist-info/zip-safe +0 -1
  941. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/__init__.py +0 -2
  942. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/pem.py +0 -58
  943. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc1155.py +0 -96
  944. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc1157.py +0 -126
  945. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc1901.py +0 -22
  946. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc1902.py +0 -129
  947. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc1905.py +0 -135
  948. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc2251.py +0 -563
  949. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc2314.py +0 -48
  950. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc2315.py +0 -294
  951. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc2437.py +0 -69
  952. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc2459.py +0 -1339
  953. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc2511.py +0 -258
  954. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc2560.py +0 -225
  955. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc2631.py +0 -37
  956. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc2634.py +0 -336
  957. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc2876.py +0 -56
  958. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc2985.py +0 -588
  959. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc2986.py +0 -75
  960. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3058.py +0 -42
  961. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3114.py +0 -77
  962. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3125.py +0 -469
  963. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3161.py +0 -142
  964. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3274.py +0 -59
  965. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3279.py +0 -260
  966. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3280.py +0 -1543
  967. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3281.py +0 -331
  968. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3370.py +0 -146
  969. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3412.py +0 -53
  970. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3414.py +0 -28
  971. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3447.py +0 -45
  972. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3537.py +0 -34
  973. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3560.py +0 -74
  974. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3565.py +0 -57
  975. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3657.py +0 -66
  976. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3709.py +0 -207
  977. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3739.py +0 -203
  978. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3770.py +0 -75
  979. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3779.py +0 -137
  980. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3820.py +0 -65
  981. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc3852.py +0 -706
  982. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4010.py +0 -58
  983. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4043.py +0 -43
  984. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4055.py +0 -258
  985. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4073.py +0 -59
  986. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4108.py +0 -350
  987. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4210.py +0 -803
  988. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4211.py +0 -396
  989. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4334.py +0 -75
  990. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4357.py +0 -477
  991. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4387.py +0 -23
  992. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4476.py +0 -93
  993. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4490.py +0 -113
  994. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4491.py +0 -44
  995. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4683.py +0 -72
  996. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc4985.py +0 -49
  997. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5035.py +0 -199
  998. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5083.py +0 -52
  999. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5084.py +0 -97
  1000. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5126.py +0 -577
  1001. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5208.py +0 -56
  1002. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5275.py +0 -404
  1003. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5280.py +0 -1658
  1004. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5480.py +0 -190
  1005. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5636.py +0 -113
  1006. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5639.py +0 -49
  1007. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5649.py +0 -33
  1008. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5652.py +0 -761
  1009. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5697.py +0 -70
  1010. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5751.py +0 -124
  1011. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5752.py +0 -49
  1012. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5753.py +0 -157
  1013. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5755.py +0 -398
  1014. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5913.py +0 -44
  1015. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5914.py +0 -119
  1016. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5915.py +0 -32
  1017. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5916.py +0 -35
  1018. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5917.py +0 -55
  1019. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5924.py +0 -19
  1020. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5934.py +0 -786
  1021. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5940.py +0 -59
  1022. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5958.py +0 -98
  1023. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc5990.py +0 -237
  1024. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6010.py +0 -88
  1025. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6019.py +0 -45
  1026. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6031.py +0 -469
  1027. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6032.py +0 -68
  1028. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6120.py +0 -43
  1029. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6170.py +0 -17
  1030. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6187.py +0 -22
  1031. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6210.py +0 -42
  1032. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6211.py +0 -72
  1033. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6402.py +0 -628
  1034. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6482.py +0 -74
  1035. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6486.py +0 -68
  1036. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6487.py +0 -22
  1037. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6664.py +0 -147
  1038. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6955.py +0 -108
  1039. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc6960.py +0 -223
  1040. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc7030.py +0 -66
  1041. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc7191.py +0 -261
  1042. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc7229.py +0 -29
  1043. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc7292.py +0 -357
  1044. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc7296.py +0 -32
  1045. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc7508.py +0 -90
  1046. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc7585.py +0 -50
  1047. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc7633.py +0 -38
  1048. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc7773.py +0 -52
  1049. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc7894.py +0 -92
  1050. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc7906.py +0 -736
  1051. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc7914.py +0 -49
  1052. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8017.py +0 -153
  1053. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8018.py +0 -260
  1054. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8103.py +0 -36
  1055. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8209.py +0 -20
  1056. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8226.py +0 -149
  1057. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8358.py +0 -50
  1058. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8360.py +0 -44
  1059. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8398.py +0 -52
  1060. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8410.py +0 -43
  1061. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8418.py +0 -36
  1062. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8419.py +0 -68
  1063. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8479.py +0 -45
  1064. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8494.py +0 -80
  1065. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8520.py +0 -63
  1066. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8619.py +0 -45
  1067. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8649.py +0 -40
  1068. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8692.py +0 -79
  1069. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8696.py +0 -104
  1070. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8702.py +0 -105
  1071. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8708.py +0 -41
  1072. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules/rfc8769.py +0 -21
  1073. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules-0.4.2.dist-info/INSTALLER +0 -1
  1074. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules-0.4.2.dist-info/METADATA +0 -73
  1075. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules-0.4.2.dist-info/RECORD +0 -271
  1076. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules-0.4.2.dist-info/WHEEL +0 -5
  1077. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules-0.4.2.dist-info/licenses/LICENSE.txt +0 -24
  1078. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules-0.4.2.dist-info/top_level.txt +0 -1
  1079. package/.claude/envoy/.venv/lib/python3.9/site-packages/pyasn1_modules-0.4.2.dist-info/zip-safe +0 -1
  1080. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/__init__.py +0 -456
  1081. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/__init__.py +0 -0
  1082. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_config.py +0 -383
  1083. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_core_metadata.py +0 -97
  1084. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_core_utils.py +0 -174
  1085. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_dataclasses.py +0 -315
  1086. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_decorators.py +0 -858
  1087. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_decorators_v1.py +0 -174
  1088. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_discriminated_union.py +0 -479
  1089. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_docs_extraction.py +0 -113
  1090. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_fields.py +0 -635
  1091. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_forward_ref.py +0 -23
  1092. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_generate_schema.py +0 -2867
  1093. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_generics.py +0 -543
  1094. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_git.py +0 -27
  1095. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_import_utils.py +0 -20
  1096. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_internal_dataclass.py +0 -7
  1097. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_known_annotated_metadata.py +0 -401
  1098. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_mock_val_ser.py +0 -228
  1099. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_model_construction.py +0 -848
  1100. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_namespace_utils.py +0 -293
  1101. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_repr.py +0 -124
  1102. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_schema_gather.py +0 -209
  1103. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_schema_generation_shared.py +0 -125
  1104. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_serializers.py +0 -53
  1105. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_signature.py +0 -188
  1106. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_typing_extra.py +0 -760
  1107. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_utils.py +0 -446
  1108. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_validate_call.py +0 -140
  1109. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_internal/_validators.py +0 -533
  1110. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/_migration.py +0 -316
  1111. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/alias_generators.py +0 -62
  1112. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/aliases.py +0 -135
  1113. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/annotated_handlers.py +0 -122
  1114. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/class_validators.py +0 -5
  1115. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/color.py +0 -604
  1116. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/config.py +0 -1288
  1117. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/dataclasses.py +0 -413
  1118. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/datetime_parse.py +0 -5
  1119. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/decorator.py +0 -5
  1120. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/deprecated/__init__.py +0 -0
  1121. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/deprecated/class_validators.py +0 -256
  1122. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/deprecated/config.py +0 -72
  1123. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/deprecated/copy_internals.py +0 -224
  1124. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/deprecated/decorator.py +0 -284
  1125. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/deprecated/json.py +0 -141
  1126. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/deprecated/parse.py +0 -80
  1127. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/deprecated/tools.py +0 -103
  1128. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/env_settings.py +0 -5
  1129. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/error_wrappers.py +0 -5
  1130. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/errors.py +0 -189
  1131. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/experimental/__init__.py +0 -1
  1132. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/experimental/arguments_schema.py +0 -44
  1133. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/experimental/missing_sentinel.py +0 -5
  1134. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/experimental/pipeline.py +0 -654
  1135. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/fields.py +0 -1834
  1136. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/functional_serializers.py +0 -451
  1137. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/functional_validators.py +0 -893
  1138. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/generics.py +0 -5
  1139. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/json.py +0 -5
  1140. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/json_schema.py +0 -2854
  1141. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/main.py +0 -1819
  1142. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/mypy.py +0 -1374
  1143. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/networks.py +0 -1331
  1144. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/parse.py +0 -5
  1145. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/plugin/__init__.py +0 -193
  1146. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/plugin/_loader.py +0 -58
  1147. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/plugin/_schema_validator.py +0 -140
  1148. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/py.typed +0 -0
  1149. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/root_model.py +0 -155
  1150. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/schema.py +0 -5
  1151. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/tools.py +0 -5
  1152. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/type_adapter.py +0 -795
  1153. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/types.py +0 -3295
  1154. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/typing.py +0 -5
  1155. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/utils.py +0 -5
  1156. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/__init__.py +0 -142
  1157. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/_hypothesis_plugin.py +0 -391
  1158. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/annotated_types.py +0 -72
  1159. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/class_validators.py +0 -361
  1160. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/color.py +0 -494
  1161. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/config.py +0 -191
  1162. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/dataclasses.py +0 -500
  1163. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/datetime_parse.py +0 -248
  1164. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/decorator.py +0 -264
  1165. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/env_settings.py +0 -350
  1166. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/error_wrappers.py +0 -161
  1167. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/errors.py +0 -646
  1168. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/fields.py +0 -1253
  1169. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/generics.py +0 -400
  1170. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/json.py +0 -112
  1171. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/main.py +0 -1113
  1172. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/mypy.py +0 -949
  1173. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/networks.py +0 -747
  1174. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/parse.py +0 -66
  1175. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/py.typed +0 -0
  1176. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/schema.py +0 -1163
  1177. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/tools.py +0 -92
  1178. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/types.py +0 -1205
  1179. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/typing.py +0 -614
  1180. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/utils.py +0 -806
  1181. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/validators.py +0 -768
  1182. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/v1/version.py +0 -38
  1183. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/validate_call_decorator.py +0 -116
  1184. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/validators.py +0 -5
  1185. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/version.py +0 -113
  1186. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic/warnings.py +0 -122
  1187. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic-2.12.5.dist-info/INSTALLER +0 -1
  1188. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic-2.12.5.dist-info/METADATA +0 -1029
  1189. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic-2.12.5.dist-info/RECORD +0 -217
  1190. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic-2.12.5.dist-info/WHEEL +0 -4
  1191. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic-2.12.5.dist-info/licenses/LICENSE +0 -21
  1192. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic_core/__init__.py +0 -171
  1193. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic_core/_pydantic_core.cpython-39-darwin.so +0 -0
  1194. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic_core/_pydantic_core.pyi +0 -1046
  1195. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic_core/core_schema.py +0 -4435
  1196. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic_core/py.typed +0 -0
  1197. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic_core-2.41.5.dist-info/INSTALLER +0 -1
  1198. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic_core-2.41.5.dist-info/METADATA +0 -180
  1199. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic_core-2.41.5.dist-info/RECORD +0 -12
  1200. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic_core-2.41.5.dist-info/WHEEL +0 -4
  1201. package/.claude/envoy/.venv/lib/python3.9/site-packages/pydantic_core-2.41.5.dist-info/licenses/LICENSE +0 -21
  1202. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/__init__.py +0 -184
  1203. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/__version__.py +0 -14
  1204. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/_internal_utils.py +0 -50
  1205. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/adapters.py +0 -696
  1206. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/api.py +0 -157
  1207. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/auth.py +0 -314
  1208. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/certs.py +0 -17
  1209. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/compat.py +0 -106
  1210. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/cookies.py +0 -561
  1211. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/exceptions.py +0 -151
  1212. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/help.py +0 -134
  1213. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/hooks.py +0 -33
  1214. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/models.py +0 -1039
  1215. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/packages.py +0 -23
  1216. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/sessions.py +0 -831
  1217. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/status_codes.py +0 -128
  1218. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/structures.py +0 -99
  1219. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests/utils.py +0 -1086
  1220. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests-2.32.5.dist-info/INSTALLER +0 -1
  1221. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests-2.32.5.dist-info/METADATA +0 -133
  1222. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests-2.32.5.dist-info/RECORD +0 -43
  1223. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests-2.32.5.dist-info/REQUESTED +0 -0
  1224. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests-2.32.5.dist-info/WHEEL +0 -5
  1225. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests-2.32.5.dist-info/licenses/LICENSE +0 -175
  1226. package/.claude/envoy/.venv/lib/python3.9/site-packages/requests-2.32.5.dist-info/top_level.txt +0 -1
  1227. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/__init__.py +0 -60
  1228. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/asn1.py +0 -52
  1229. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/cli.py +0 -321
  1230. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/common.py +0 -184
  1231. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/core.py +0 -53
  1232. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/key.py +0 -858
  1233. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/parallel.py +0 -96
  1234. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/pem.py +0 -134
  1235. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/pkcs1.py +0 -485
  1236. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/pkcs1_v2.py +0 -100
  1237. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/prime.py +0 -198
  1238. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/py.typed +0 -1
  1239. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/randnum.py +0 -95
  1240. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/transform.py +0 -72
  1241. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa/util.py +0 -97
  1242. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa-4.9.1.dist-info/INSTALLER +0 -1
  1243. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa-4.9.1.dist-info/LICENSE +0 -13
  1244. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa-4.9.1.dist-info/METADATA +0 -140
  1245. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa-4.9.1.dist-info/RECORD +0 -41
  1246. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa-4.9.1.dist-info/WHEEL +0 -4
  1247. package/.claude/envoy/.venv/lib/python3.9/site-packages/rsa-4.9.1.dist-info/entry_points.txt +0 -8
  1248. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/__init__.py +0 -242
  1249. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_deprecation_warning.py +0 -7
  1250. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/__init__.py +0 -15
  1251. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/_msvccompiler.py +0 -561
  1252. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/archive_util.py +0 -256
  1253. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/bcppcompiler.py +0 -393
  1254. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/ccompiler.py +0 -1123
  1255. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/cmd.py +0 -403
  1256. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/__init__.py +0 -31
  1257. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist.py +0 -143
  1258. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist_dumb.py +0 -123
  1259. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist_msi.py +0 -749
  1260. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist_rpm.py +0 -579
  1261. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/bdist_wininst.py +0 -377
  1262. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/build.py +0 -157
  1263. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/build_clib.py +0 -209
  1264. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/build_ext.py +0 -757
  1265. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/build_py.py +0 -392
  1266. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/build_scripts.py +0 -152
  1267. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/check.py +0 -148
  1268. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/clean.py +0 -76
  1269. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/config.py +0 -344
  1270. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/install.py +0 -677
  1271. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_data.py +0 -79
  1272. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_egg_info.py +0 -77
  1273. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_headers.py +0 -47
  1274. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_lib.py +0 -217
  1275. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/install_scripts.py +0 -60
  1276. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/py37compat.py +0 -30
  1277. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/register.py +0 -304
  1278. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/sdist.py +0 -494
  1279. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/command/upload.py +0 -214
  1280. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/config.py +0 -130
  1281. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/core.py +0 -234
  1282. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/cygwinccompiler.py +0 -414
  1283. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/debug.py +0 -5
  1284. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/dep_util.py +0 -92
  1285. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/dir_util.py +0 -210
  1286. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/dist.py +0 -1257
  1287. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/errors.py +0 -97
  1288. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/extension.py +0 -240
  1289. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/fancy_getopt.py +0 -457
  1290. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/file_util.py +0 -238
  1291. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/filelist.py +0 -355
  1292. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/log.py +0 -77
  1293. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/msvc9compiler.py +0 -788
  1294. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/msvccompiler.py +0 -643
  1295. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/py35compat.py +0 -19
  1296. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/py38compat.py +0 -7
  1297. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/spawn.py +0 -106
  1298. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/sysconfig.py +0 -573
  1299. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/text_file.py +0 -286
  1300. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/unixccompiler.py +0 -332
  1301. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/util.py +0 -535
  1302. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/version.py +0 -347
  1303. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_distutils/versionpredicate.py +0 -166
  1304. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_imp.py +0 -82
  1305. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/__init__.py +0 -0
  1306. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/more_itertools/__init__.py +0 -4
  1307. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/more_itertools/more.py +0 -3825
  1308. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/more_itertools/recipes.py +0 -620
  1309. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/ordered_set.py +0 -488
  1310. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__about__.py +0 -27
  1311. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/__init__.py +0 -26
  1312. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/_compat.py +0 -38
  1313. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/_structures.py +0 -86
  1314. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/_typing.py +0 -48
  1315. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/markers.py +0 -328
  1316. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/requirements.py +0 -145
  1317. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/specifiers.py +0 -863
  1318. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/tags.py +0 -751
  1319. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/utils.py +0 -65
  1320. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/packaging/version.py +0 -535
  1321. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/_vendor/pyparsing.py +0 -5742
  1322. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/archive_util.py +0 -205
  1323. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/build_meta.py +0 -281
  1324. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/cli-32.exe +0 -0
  1325. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/cli-64.exe +0 -0
  1326. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/cli.exe +0 -0
  1327. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/__init__.py +0 -8
  1328. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/alias.py +0 -78
  1329. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/bdist_egg.py +0 -456
  1330. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/bdist_rpm.py +0 -31
  1331. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/build_clib.py +0 -101
  1332. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/build_ext.py +0 -328
  1333. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/build_py.py +0 -232
  1334. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/develop.py +0 -193
  1335. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/dist_info.py +0 -36
  1336. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/easy_install.py +0 -2290
  1337. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/egg_info.py +0 -734
  1338. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/install.py +0 -125
  1339. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/install_egg_info.py +0 -62
  1340. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/install_lib.py +0 -122
  1341. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/install_scripts.py +0 -69
  1342. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/launcher manifest.xml +0 -15
  1343. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/py36compat.py +0 -134
  1344. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/register.py +0 -18
  1345. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/rotate.py +0 -64
  1346. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/saveopts.py +0 -22
  1347. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/sdist.py +0 -189
  1348. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/setopt.py +0 -149
  1349. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/test.py +0 -252
  1350. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/upload.py +0 -17
  1351. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/command/upload_docs.py +0 -202
  1352. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/config.py +0 -749
  1353. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/dep_util.py +0 -25
  1354. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/depends.py +0 -175
  1355. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/dist.py +0 -1150
  1356. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/errors.py +0 -16
  1357. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/extension.py +0 -55
  1358. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/extern/__init__.py +0 -73
  1359. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/glob.py +0 -167
  1360. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/gui-32.exe +0 -0
  1361. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/gui-64.exe +0 -0
  1362. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/gui.exe +0 -0
  1363. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/installer.py +0 -97
  1364. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/launch.py +0 -36
  1365. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/monkey.py +0 -177
  1366. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/msvc.py +0 -1805
  1367. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/namespaces.py +0 -107
  1368. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/package_index.py +0 -1119
  1369. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/py34compat.py +0 -13
  1370. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/sandbox.py +0 -530
  1371. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/script (dev).tmpl +0 -6
  1372. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/script.tmpl +0 -3
  1373. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/unicode_utils.py +0 -42
  1374. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/version.py +0 -6
  1375. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/wheel.py +0 -213
  1376. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools/windows_support.py +0 -29
  1377. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools-58.0.4.dist-info/INSTALLER +0 -1
  1378. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools-58.0.4.dist-info/LICENSE +0 -19
  1379. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools-58.0.4.dist-info/METADATA +0 -119
  1380. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools-58.0.4.dist-info/RECORD +0 -296
  1381. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools-58.0.4.dist-info/REQUESTED +0 -0
  1382. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools-58.0.4.dist-info/WHEEL +0 -5
  1383. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools-58.0.4.dist-info/entry_points.txt +0 -56
  1384. package/.claude/envoy/.venv/lib/python3.9/site-packages/setuptools-58.0.4.dist-info/top_level.txt +0 -3
  1385. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/__init__.py +0 -722
  1386. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/_utils.py +0 -101
  1387. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/after.py +0 -51
  1388. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/asyncio/__init__.py +0 -206
  1389. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/asyncio/retry.py +0 -125
  1390. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/before.py +0 -48
  1391. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/before_sleep.py +0 -72
  1392. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/nap.py +0 -43
  1393. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/py.typed +0 -0
  1394. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/retry.py +0 -282
  1395. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/stop.py +0 -130
  1396. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/tornadoweb.py +0 -63
  1397. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity/wait.py +0 -234
  1398. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity-9.1.2.dist-info/INSTALLER +0 -1
  1399. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity-9.1.2.dist-info/METADATA +0 -31
  1400. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity-9.1.2.dist-info/RECORD +0 -31
  1401. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity-9.1.2.dist-info/WHEEL +0 -5
  1402. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity-9.1.2.dist-info/licenses/LICENSE +0 -202
  1403. package/.claude/envoy/.venv/lib/python3.9/site-packages/tenacity-9.1.2.dist-info/top_level.txt +0 -1
  1404. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_extensions-4.15.0.dist-info/INSTALLER +0 -1
  1405. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_extensions-4.15.0.dist-info/METADATA +0 -72
  1406. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_extensions-4.15.0.dist-info/RECORD +0 -7
  1407. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_extensions-4.15.0.dist-info/WHEEL +0 -4
  1408. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_extensions-4.15.0.dist-info/licenses/LICENSE +0 -279
  1409. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_extensions.py +0 -4317
  1410. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_inspection/__init__.py +0 -0
  1411. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_inspection/introspection.py +0 -587
  1412. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_inspection/py.typed +0 -0
  1413. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_inspection/typing_objects.py +0 -607
  1414. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_inspection/typing_objects.pyi +0 -417
  1415. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_inspection-0.4.2.dist-info/INSTALLER +0 -1
  1416. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_inspection-0.4.2.dist-info/METADATA +0 -49
  1417. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_inspection-0.4.2.dist-info/RECORD +0 -13
  1418. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_inspection-0.4.2.dist-info/WHEEL +0 -4
  1419. package/.claude/envoy/.venv/lib/python3.9/site-packages/typing_inspection-0.4.2.dist-info/licenses/LICENSE +0 -21
  1420. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/__init__.py +0 -211
  1421. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/_base_connection.py +0 -165
  1422. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/_collections.py +0 -487
  1423. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/_request_methods.py +0 -278
  1424. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/_version.py +0 -34
  1425. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/connection.py +0 -1099
  1426. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/connectionpool.py +0 -1178
  1427. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/contrib/__init__.py +0 -0
  1428. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/contrib/emscripten/__init__.py +0 -16
  1429. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/contrib/emscripten/connection.py +0 -259
  1430. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js +0 -110
  1431. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/contrib/emscripten/fetch.py +0 -726
  1432. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/contrib/emscripten/request.py +0 -22
  1433. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/contrib/emscripten/response.py +0 -277
  1434. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/contrib/pyopenssl.py +0 -564
  1435. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/contrib/socks.py +0 -228
  1436. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/exceptions.py +0 -335
  1437. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/fields.py +0 -341
  1438. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/filepost.py +0 -89
  1439. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/http2/__init__.py +0 -53
  1440. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/http2/connection.py +0 -356
  1441. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/http2/probe.py +0 -87
  1442. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/poolmanager.py +0 -651
  1443. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/py.typed +0 -2
  1444. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/response.py +0 -1465
  1445. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/__init__.py +0 -42
  1446. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/connection.py +0 -137
  1447. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/proxy.py +0 -43
  1448. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/request.py +0 -263
  1449. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/response.py +0 -101
  1450. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/retry.py +0 -533
  1451. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/ssl_.py +0 -527
  1452. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/ssl_match_hostname.py +0 -159
  1453. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/ssltransport.py +0 -271
  1454. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/timeout.py +0 -275
  1455. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/url.py +0 -469
  1456. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/util.py +0 -42
  1457. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3/util/wait.py +0 -124
  1458. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3-2.6.0.dist-info/INSTALLER +0 -1
  1459. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3-2.6.0.dist-info/METADATA +0 -156
  1460. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3-2.6.0.dist-info/RECORD +0 -79
  1461. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3-2.6.0.dist-info/WHEEL +0 -4
  1462. package/.claude/envoy/.venv/lib/python3.9/site-packages/urllib3-2.6.0.dist-info/licenses/LICENSE.txt +0 -21
  1463. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/__init__.py +0 -236
  1464. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/__main__.py +0 -5
  1465. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/asyncio/__init__.py +0 -0
  1466. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/asyncio/async_timeout.py +0 -282
  1467. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/asyncio/client.py +0 -820
  1468. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/asyncio/compatibility.py +0 -30
  1469. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/asyncio/connection.py +0 -1237
  1470. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/asyncio/messages.py +0 -314
  1471. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/asyncio/router.py +0 -198
  1472. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/asyncio/server.py +0 -981
  1473. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/auth.py +0 -18
  1474. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/cli.py +0 -178
  1475. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/client.py +0 -389
  1476. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/connection.py +0 -12
  1477. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/datastructures.py +0 -187
  1478. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/exceptions.py +0 -473
  1479. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/extensions/__init__.py +0 -4
  1480. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/extensions/base.py +0 -123
  1481. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/extensions/permessage_deflate.py +0 -697
  1482. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/frames.py +0 -430
  1483. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/headers.py +0 -586
  1484. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/http.py +0 -20
  1485. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/http11.py +0 -427
  1486. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/imports.py +0 -100
  1487. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/legacy/__init__.py +0 -11
  1488. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/legacy/auth.py +0 -190
  1489. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/legacy/client.py +0 -705
  1490. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/legacy/exceptions.py +0 -71
  1491. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/legacy/framing.py +0 -225
  1492. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/legacy/handshake.py +0 -158
  1493. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/legacy/http.py +0 -201
  1494. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/legacy/protocol.py +0 -1641
  1495. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/legacy/server.py +0 -1191
  1496. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/protocol.py +0 -758
  1497. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/py.typed +0 -0
  1498. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/server.py +0 -587
  1499. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/speedups.c +0 -222
  1500. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/speedups.cpython-39-darwin.so +0 -0
  1501. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/speedups.pyi +0 -1
  1502. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/streams.py +0 -151
  1503. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/sync/__init__.py +0 -0
  1504. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/sync/client.py +0 -648
  1505. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/sync/connection.py +0 -1072
  1506. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/sync/messages.py +0 -345
  1507. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/sync/router.py +0 -192
  1508. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/sync/server.py +0 -763
  1509. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/sync/utils.py +0 -45
  1510. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/typing.py +0 -74
  1511. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/uri.py +0 -225
  1512. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/utils.py +0 -51
  1513. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets/version.py +0 -92
  1514. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets-15.0.1.dist-info/INSTALLER +0 -1
  1515. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets-15.0.1.dist-info/LICENSE +0 -24
  1516. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets-15.0.1.dist-info/METADATA +0 -179
  1517. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets-15.0.1.dist-info/RECORD +0 -106
  1518. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets-15.0.1.dist-info/WHEEL +0 -5
  1519. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets-15.0.1.dist-info/entry_points.txt +0 -2
  1520. package/.claude/envoy/.venv/lib/python3.9/site-packages/websockets-15.0.1.dist-info/top_level.txt +0 -1
  1521. package/.claude/envoy/.venv/pyvenv.cfg +0 -3
  1522. package/.claude/envoy/claude-envoy.py +0 -0
  1523. package/.claude/envoy/commands/__init__.py +0 -1
  1524. package/.claude/envoy/commands/base.py +0 -95
  1525. package/.claude/envoy/commands/parallel.py +0 -439
  1526. package/.claude/envoy/commands/perplexity.py +0 -86
  1527. package/.claude/envoy/commands/plans.py +0 -451
  1528. package/.claude/envoy/commands/tavily.py +0 -156
  1529. package/.claude/envoy/commands/vertex.py +0 -358
  1530. package/.claude/envoy/commands/xai.py +0 -124
  1531. package/.claude/envoy/envoy.py +0 -122
  1532. package/.claude/envoy/pyrightconfig.json +0 -4
  1533. package/.claude/envoy/requirements.txt +0 -2
  1534. package/.claude/hooks/capture-queries.sh +0 -3
  1535. package/.claude/hooks/scripts/enforce_planning.py +0 -118
  1536. package/.claude/hooks/scripts/enforce_rg.py +0 -34
  1537. package/.claude/hooks/scripts/validate_skill.py +0 -81
  1538. package/.claude/plans/feat-npm-package-cli/plan.md +0 -85
  1539. package/.claude/plans/feat-specialist-builder-patterns/plan.md +0 -298
  1540. package/.claude/skills/claude-envoy-curation/SKILL.md +0 -99
  1541. package/.claude/skills/claude-envoy-usage/SKILL.md +0 -38
  1542. package/.claude/skills/command-development/SKILL.md +0 -216
  1543. package/.claude/skills/command-development/examples/simple-commands.md +0 -212
  1544. package/.claude/skills/command-development/references/frontmatter-reference.md +0 -221
  1545. package/.claude/skills/hook-development/SKILL.md +0 -103
  1546. package/.claude/skills/hook-development/examples/command-hooks.md +0 -301
  1547. package/.claude/skills/hook-development/examples/prompt-hooks.md +0 -114
  1548. package/.claude/skills/hook-development/references/event-reference.md +0 -226
  1549. package/.claude/skills/repomix-extraction/SKILL.md +0 -89
  1550. package/.claude/skills/skill-development/SKILL.md +0 -236
  1551. package/.claude/skills/skill-development/examples/complete-skill-examples.md +0 -281
  1552. package/.claude/skills/skill-development/references/progressive-disclosure.md +0 -141
  1553. package/.claude/skills/skill-development/references/writing-style.md +0 -180
  1554. package/.claude/skills/skill-development/scripts/validate-skill.sh +0 -144
  1555. package/.claude/skills/specialist-builder/SKILL.md +0 -348
  1556. package/.claude/skills/specialist-builder/docs/agent-catalog.md +0 -28
  1557. package/.claude/skills/specialist-builder/examples/complete-agent-examples.md +0 -206
  1558. package/.claude/skills/specialist-builder/references/system-prompt-patterns.md +0 -281
  1559. package/.claude/skills/specialist-builder/references/triggering-examples.md +0 -162
  1560. package/.claude/skills/specialist-builder/scripts/validate-agent.sh +0 -137
  1561. /package/.claude/{envoy/.venv/lib/python3.9/site-packages/annotated_types/py.typed → skills/claude-envoy-patterns/SKILL.md} +0 -0
@@ -1,2795 +0,0 @@
1
- from __future__ import absolute_import, division, unicode_literals
2
- from pip._vendor.six import with_metaclass, viewkeys
3
-
4
- import types
5
-
6
- from . import _inputstream
7
- from . import _tokenizer
8
-
9
- from . import treebuilders
10
- from .treebuilders.base import Marker
11
-
12
- from . import _utils
13
- from .constants import (
14
- spaceCharacters, asciiUpper2Lower,
15
- specialElements, headingElements, cdataElements, rcdataElements,
16
- tokenTypes, tagTokenTypes,
17
- namespaces,
18
- htmlIntegrationPointElements, mathmlTextIntegrationPointElements,
19
- adjustForeignAttributes as adjustForeignAttributesMap,
20
- adjustMathMLAttributes, adjustSVGAttributes,
21
- E,
22
- _ReparseException
23
- )
24
-
25
-
26
- def parse(doc, treebuilder="etree", namespaceHTMLElements=True, **kwargs):
27
- """Parse an HTML document as a string or file-like object into a tree
28
-
29
- :arg doc: the document to parse as a string or file-like object
30
-
31
- :arg treebuilder: the treebuilder to use when parsing
32
-
33
- :arg namespaceHTMLElements: whether or not to namespace HTML elements
34
-
35
- :returns: parsed tree
36
-
37
- Example:
38
-
39
- >>> from html5lib.html5parser import parse
40
- >>> parse('<html><body><p>This is a doc</p></body></html>')
41
- <Element u'{http://www.w3.org/1999/xhtml}html' at 0x7feac4909db0>
42
-
43
- """
44
- tb = treebuilders.getTreeBuilder(treebuilder)
45
- p = HTMLParser(tb, namespaceHTMLElements=namespaceHTMLElements)
46
- return p.parse(doc, **kwargs)
47
-
48
-
49
- def parseFragment(doc, container="div", treebuilder="etree", namespaceHTMLElements=True, **kwargs):
50
- """Parse an HTML fragment as a string or file-like object into a tree
51
-
52
- :arg doc: the fragment to parse as a string or file-like object
53
-
54
- :arg container: the container context to parse the fragment in
55
-
56
- :arg treebuilder: the treebuilder to use when parsing
57
-
58
- :arg namespaceHTMLElements: whether or not to namespace HTML elements
59
-
60
- :returns: parsed tree
61
-
62
- Example:
63
-
64
- >>> from html5lib.html5libparser import parseFragment
65
- >>> parseFragment('<b>this is a fragment</b>')
66
- <Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>
67
-
68
- """
69
- tb = treebuilders.getTreeBuilder(treebuilder)
70
- p = HTMLParser(tb, namespaceHTMLElements=namespaceHTMLElements)
71
- return p.parseFragment(doc, container=container, **kwargs)
72
-
73
-
74
- def method_decorator_metaclass(function):
75
- class Decorated(type):
76
- def __new__(meta, classname, bases, classDict):
77
- for attributeName, attribute in classDict.items():
78
- if isinstance(attribute, types.FunctionType):
79
- attribute = function(attribute)
80
-
81
- classDict[attributeName] = attribute
82
- return type.__new__(meta, classname, bases, classDict)
83
- return Decorated
84
-
85
-
86
- class HTMLParser(object):
87
- """HTML parser
88
-
89
- Generates a tree structure from a stream of (possibly malformed) HTML.
90
-
91
- """
92
-
93
- def __init__(self, tree=None, strict=False, namespaceHTMLElements=True, debug=False):
94
- """
95
- :arg tree: a treebuilder class controlling the type of tree that will be
96
- returned. Built in treebuilders can be accessed through
97
- html5lib.treebuilders.getTreeBuilder(treeType)
98
-
99
- :arg strict: raise an exception when a parse error is encountered
100
-
101
- :arg namespaceHTMLElements: whether or not to namespace HTML elements
102
-
103
- :arg debug: whether or not to enable debug mode which logs things
104
-
105
- Example:
106
-
107
- >>> from html5lib.html5parser import HTMLParser
108
- >>> parser = HTMLParser() # generates parser with etree builder
109
- >>> parser = HTMLParser('lxml', strict=True) # generates parser with lxml builder which is strict
110
-
111
- """
112
-
113
- # Raise an exception on the first error encountered
114
- self.strict = strict
115
-
116
- if tree is None:
117
- tree = treebuilders.getTreeBuilder("etree")
118
- self.tree = tree(namespaceHTMLElements)
119
- self.errors = []
120
-
121
- self.phases = {name: cls(self, self.tree) for name, cls in
122
- getPhases(debug).items()}
123
-
124
- def _parse(self, stream, innerHTML=False, container="div", scripting=False, **kwargs):
125
-
126
- self.innerHTMLMode = innerHTML
127
- self.container = container
128
- self.scripting = scripting
129
- self.tokenizer = _tokenizer.HTMLTokenizer(stream, parser=self, **kwargs)
130
- self.reset()
131
-
132
- try:
133
- self.mainLoop()
134
- except _ReparseException:
135
- self.reset()
136
- self.mainLoop()
137
-
138
- def reset(self):
139
- self.tree.reset()
140
- self.firstStartTag = False
141
- self.errors = []
142
- self.log = [] # only used with debug mode
143
- # "quirks" / "limited quirks" / "no quirks"
144
- self.compatMode = "no quirks"
145
-
146
- if self.innerHTMLMode:
147
- self.innerHTML = self.container.lower()
148
-
149
- if self.innerHTML in cdataElements:
150
- self.tokenizer.state = self.tokenizer.rcdataState
151
- elif self.innerHTML in rcdataElements:
152
- self.tokenizer.state = self.tokenizer.rawtextState
153
- elif self.innerHTML == 'plaintext':
154
- self.tokenizer.state = self.tokenizer.plaintextState
155
- else:
156
- # state already is data state
157
- # self.tokenizer.state = self.tokenizer.dataState
158
- pass
159
- self.phase = self.phases["beforeHtml"]
160
- self.phase.insertHtmlElement()
161
- self.resetInsertionMode()
162
- else:
163
- self.innerHTML = False # pylint:disable=redefined-variable-type
164
- self.phase = self.phases["initial"]
165
-
166
- self.lastPhase = None
167
-
168
- self.beforeRCDataPhase = None
169
-
170
- self.framesetOK = True
171
-
172
- @property
173
- def documentEncoding(self):
174
- """Name of the character encoding that was used to decode the input stream, or
175
- :obj:`None` if that is not determined yet
176
-
177
- """
178
- if not hasattr(self, 'tokenizer'):
179
- return None
180
- return self.tokenizer.stream.charEncoding[0].name
181
-
182
- def isHTMLIntegrationPoint(self, element):
183
- if (element.name == "annotation-xml" and
184
- element.namespace == namespaces["mathml"]):
185
- return ("encoding" in element.attributes and
186
- element.attributes["encoding"].translate(
187
- asciiUpper2Lower) in
188
- ("text/html", "application/xhtml+xml"))
189
- else:
190
- return (element.namespace, element.name) in htmlIntegrationPointElements
191
-
192
- def isMathMLTextIntegrationPoint(self, element):
193
- return (element.namespace, element.name) in mathmlTextIntegrationPointElements
194
-
195
- def mainLoop(self):
196
- CharactersToken = tokenTypes["Characters"]
197
- SpaceCharactersToken = tokenTypes["SpaceCharacters"]
198
- StartTagToken = tokenTypes["StartTag"]
199
- EndTagToken = tokenTypes["EndTag"]
200
- CommentToken = tokenTypes["Comment"]
201
- DoctypeToken = tokenTypes["Doctype"]
202
- ParseErrorToken = tokenTypes["ParseError"]
203
-
204
- for token in self.tokenizer:
205
- prev_token = None
206
- new_token = token
207
- while new_token is not None:
208
- prev_token = new_token
209
- currentNode = self.tree.openElements[-1] if self.tree.openElements else None
210
- currentNodeNamespace = currentNode.namespace if currentNode else None
211
- currentNodeName = currentNode.name if currentNode else None
212
-
213
- type = new_token["type"]
214
-
215
- if type == ParseErrorToken:
216
- self.parseError(new_token["data"], new_token.get("datavars", {}))
217
- new_token = None
218
- else:
219
- if (len(self.tree.openElements) == 0 or
220
- currentNodeNamespace == self.tree.defaultNamespace or
221
- (self.isMathMLTextIntegrationPoint(currentNode) and
222
- ((type == StartTagToken and
223
- token["name"] not in frozenset(["mglyph", "malignmark"])) or
224
- type in (CharactersToken, SpaceCharactersToken))) or
225
- (currentNodeNamespace == namespaces["mathml"] and
226
- currentNodeName == "annotation-xml" and
227
- type == StartTagToken and
228
- token["name"] == "svg") or
229
- (self.isHTMLIntegrationPoint(currentNode) and
230
- type in (StartTagToken, CharactersToken, SpaceCharactersToken))):
231
- phase = self.phase
232
- else:
233
- phase = self.phases["inForeignContent"]
234
-
235
- if type == CharactersToken:
236
- new_token = phase.processCharacters(new_token)
237
- elif type == SpaceCharactersToken:
238
- new_token = phase.processSpaceCharacters(new_token)
239
- elif type == StartTagToken:
240
- new_token = phase.processStartTag(new_token)
241
- elif type == EndTagToken:
242
- new_token = phase.processEndTag(new_token)
243
- elif type == CommentToken:
244
- new_token = phase.processComment(new_token)
245
- elif type == DoctypeToken:
246
- new_token = phase.processDoctype(new_token)
247
-
248
- if (type == StartTagToken and prev_token["selfClosing"] and
249
- not prev_token["selfClosingAcknowledged"]):
250
- self.parseError("non-void-element-with-trailing-solidus",
251
- {"name": prev_token["name"]})
252
-
253
- # When the loop finishes it's EOF
254
- reprocess = True
255
- phases = []
256
- while reprocess:
257
- phases.append(self.phase)
258
- reprocess = self.phase.processEOF()
259
- if reprocess:
260
- assert self.phase not in phases
261
-
262
- def parse(self, stream, *args, **kwargs):
263
- """Parse a HTML document into a well-formed tree
264
-
265
- :arg stream: a file-like object or string containing the HTML to be parsed
266
-
267
- The optional encoding parameter must be a string that indicates
268
- the encoding. If specified, that encoding will be used,
269
- regardless of any BOM or later declaration (such as in a meta
270
- element).
271
-
272
- :arg scripting: treat noscript elements as if JavaScript was turned on
273
-
274
- :returns: parsed tree
275
-
276
- Example:
277
-
278
- >>> from html5lib.html5parser import HTMLParser
279
- >>> parser = HTMLParser()
280
- >>> parser.parse('<html><body><p>This is a doc</p></body></html>')
281
- <Element u'{http://www.w3.org/1999/xhtml}html' at 0x7feac4909db0>
282
-
283
- """
284
- self._parse(stream, False, None, *args, **kwargs)
285
- return self.tree.getDocument()
286
-
287
- def parseFragment(self, stream, *args, **kwargs):
288
- """Parse a HTML fragment into a well-formed tree fragment
289
-
290
- :arg container: name of the element we're setting the innerHTML
291
- property if set to None, default to 'div'
292
-
293
- :arg stream: a file-like object or string containing the HTML to be parsed
294
-
295
- The optional encoding parameter must be a string that indicates
296
- the encoding. If specified, that encoding will be used,
297
- regardless of any BOM or later declaration (such as in a meta
298
- element)
299
-
300
- :arg scripting: treat noscript elements as if JavaScript was turned on
301
-
302
- :returns: parsed tree
303
-
304
- Example:
305
-
306
- >>> from html5lib.html5libparser import HTMLParser
307
- >>> parser = HTMLParser()
308
- >>> parser.parseFragment('<b>this is a fragment</b>')
309
- <Element u'DOCUMENT_FRAGMENT' at 0x7feac484b090>
310
-
311
- """
312
- self._parse(stream, True, *args, **kwargs)
313
- return self.tree.getFragment()
314
-
315
- def parseError(self, errorcode="XXX-undefined-error", datavars=None):
316
- # XXX The idea is to make errorcode mandatory.
317
- if datavars is None:
318
- datavars = {}
319
- self.errors.append((self.tokenizer.stream.position(), errorcode, datavars))
320
- if self.strict:
321
- raise ParseError(E[errorcode] % datavars)
322
-
323
- def adjustMathMLAttributes(self, token):
324
- adjust_attributes(token, adjustMathMLAttributes)
325
-
326
- def adjustSVGAttributes(self, token):
327
- adjust_attributes(token, adjustSVGAttributes)
328
-
329
- def adjustForeignAttributes(self, token):
330
- adjust_attributes(token, adjustForeignAttributesMap)
331
-
332
- def reparseTokenNormal(self, token):
333
- # pylint:disable=unused-argument
334
- self.parser.phase()
335
-
336
- def resetInsertionMode(self):
337
- # The name of this method is mostly historical. (It's also used in the
338
- # specification.)
339
- last = False
340
- newModes = {
341
- "select": "inSelect",
342
- "td": "inCell",
343
- "th": "inCell",
344
- "tr": "inRow",
345
- "tbody": "inTableBody",
346
- "thead": "inTableBody",
347
- "tfoot": "inTableBody",
348
- "caption": "inCaption",
349
- "colgroup": "inColumnGroup",
350
- "table": "inTable",
351
- "head": "inBody",
352
- "body": "inBody",
353
- "frameset": "inFrameset",
354
- "html": "beforeHead"
355
- }
356
- for node in self.tree.openElements[::-1]:
357
- nodeName = node.name
358
- new_phase = None
359
- if node == self.tree.openElements[0]:
360
- assert self.innerHTML
361
- last = True
362
- nodeName = self.innerHTML
363
- # Check for conditions that should only happen in the innerHTML
364
- # case
365
- if nodeName in ("select", "colgroup", "head", "html"):
366
- assert self.innerHTML
367
-
368
- if not last and node.namespace != self.tree.defaultNamespace:
369
- continue
370
-
371
- if nodeName in newModes:
372
- new_phase = self.phases[newModes[nodeName]]
373
- break
374
- elif last:
375
- new_phase = self.phases["inBody"]
376
- break
377
-
378
- self.phase = new_phase
379
-
380
- def parseRCDataRawtext(self, token, contentType):
381
- # Generic RCDATA/RAWTEXT Parsing algorithm
382
- assert contentType in ("RAWTEXT", "RCDATA")
383
-
384
- self.tree.insertElement(token)
385
-
386
- if contentType == "RAWTEXT":
387
- self.tokenizer.state = self.tokenizer.rawtextState
388
- else:
389
- self.tokenizer.state = self.tokenizer.rcdataState
390
-
391
- self.originalPhase = self.phase
392
-
393
- self.phase = self.phases["text"]
394
-
395
-
396
- @_utils.memoize
397
- def getPhases(debug):
398
- def log(function):
399
- """Logger that records which phase processes each token"""
400
- type_names = {value: key for key, value in tokenTypes.items()}
401
-
402
- def wrapped(self, *args, **kwargs):
403
- if function.__name__.startswith("process") and len(args) > 0:
404
- token = args[0]
405
- info = {"type": type_names[token['type']]}
406
- if token['type'] in tagTokenTypes:
407
- info["name"] = token['name']
408
-
409
- self.parser.log.append((self.parser.tokenizer.state.__name__,
410
- self.parser.phase.__class__.__name__,
411
- self.__class__.__name__,
412
- function.__name__,
413
- info))
414
- return function(self, *args, **kwargs)
415
- else:
416
- return function(self, *args, **kwargs)
417
- return wrapped
418
-
419
- def getMetaclass(use_metaclass, metaclass_func):
420
- if use_metaclass:
421
- return method_decorator_metaclass(metaclass_func)
422
- else:
423
- return type
424
-
425
- # pylint:disable=unused-argument
426
- class Phase(with_metaclass(getMetaclass(debug, log))):
427
- """Base class for helper object that implements each phase of processing
428
- """
429
- __slots__ = ("parser", "tree", "__startTagCache", "__endTagCache")
430
-
431
- def __init__(self, parser, tree):
432
- self.parser = parser
433
- self.tree = tree
434
- self.__startTagCache = {}
435
- self.__endTagCache = {}
436
-
437
- def processEOF(self):
438
- raise NotImplementedError
439
-
440
- def processComment(self, token):
441
- # For most phases the following is correct. Where it's not it will be
442
- # overridden.
443
- self.tree.insertComment(token, self.tree.openElements[-1])
444
-
445
- def processDoctype(self, token):
446
- self.parser.parseError("unexpected-doctype")
447
-
448
- def processCharacters(self, token):
449
- self.tree.insertText(token["data"])
450
-
451
- def processSpaceCharacters(self, token):
452
- self.tree.insertText(token["data"])
453
-
454
- def processStartTag(self, token):
455
- # Note the caching is done here rather than BoundMethodDispatcher as doing it there
456
- # requires a circular reference to the Phase, and this ends up with a significant
457
- # (CPython 2.7, 3.8) GC cost when parsing many short inputs
458
- name = token["name"]
459
- # In Py2, using `in` is quicker in general than try/except KeyError
460
- # In Py3, `in` is quicker when there are few cache hits (typically short inputs)
461
- if name in self.__startTagCache:
462
- func = self.__startTagCache[name]
463
- else:
464
- func = self.__startTagCache[name] = self.startTagHandler[name]
465
- # bound the cache size in case we get loads of unknown tags
466
- while len(self.__startTagCache) > len(self.startTagHandler) * 1.1:
467
- # this makes the eviction policy random on Py < 3.7 and FIFO >= 3.7
468
- self.__startTagCache.pop(next(iter(self.__startTagCache)))
469
- return func(token)
470
-
471
- def startTagHtml(self, token):
472
- if not self.parser.firstStartTag and token["name"] == "html":
473
- self.parser.parseError("non-html-root")
474
- # XXX Need a check here to see if the first start tag token emitted is
475
- # this token... If it's not, invoke self.parser.parseError().
476
- for attr, value in token["data"].items():
477
- if attr not in self.tree.openElements[0].attributes:
478
- self.tree.openElements[0].attributes[attr] = value
479
- self.parser.firstStartTag = False
480
-
481
- def processEndTag(self, token):
482
- # Note the caching is done here rather than BoundMethodDispatcher as doing it there
483
- # requires a circular reference to the Phase, and this ends up with a significant
484
- # (CPython 2.7, 3.8) GC cost when parsing many short inputs
485
- name = token["name"]
486
- # In Py2, using `in` is quicker in general than try/except KeyError
487
- # In Py3, `in` is quicker when there are few cache hits (typically short inputs)
488
- if name in self.__endTagCache:
489
- func = self.__endTagCache[name]
490
- else:
491
- func = self.__endTagCache[name] = self.endTagHandler[name]
492
- # bound the cache size in case we get loads of unknown tags
493
- while len(self.__endTagCache) > len(self.endTagHandler) * 1.1:
494
- # this makes the eviction policy random on Py < 3.7 and FIFO >= 3.7
495
- self.__endTagCache.pop(next(iter(self.__endTagCache)))
496
- return func(token)
497
-
498
- class InitialPhase(Phase):
499
- __slots__ = tuple()
500
-
501
- def processSpaceCharacters(self, token):
502
- pass
503
-
504
- def processComment(self, token):
505
- self.tree.insertComment(token, self.tree.document)
506
-
507
- def processDoctype(self, token):
508
- name = token["name"]
509
- publicId = token["publicId"]
510
- systemId = token["systemId"]
511
- correct = token["correct"]
512
-
513
- if (name != "html" or publicId is not None or
514
- systemId is not None and systemId != "about:legacy-compat"):
515
- self.parser.parseError("unknown-doctype")
516
-
517
- if publicId is None:
518
- publicId = ""
519
-
520
- self.tree.insertDoctype(token)
521
-
522
- if publicId != "":
523
- publicId = publicId.translate(asciiUpper2Lower)
524
-
525
- if (not correct or token["name"] != "html" or
526
- publicId.startswith(
527
- ("+//silmaril//dtd html pro v0r11 19970101//",
528
- "-//advasoft ltd//dtd html 3.0 aswedit + extensions//",
529
- "-//as//dtd html 3.0 aswedit + extensions//",
530
- "-//ietf//dtd html 2.0 level 1//",
531
- "-//ietf//dtd html 2.0 level 2//",
532
- "-//ietf//dtd html 2.0 strict level 1//",
533
- "-//ietf//dtd html 2.0 strict level 2//",
534
- "-//ietf//dtd html 2.0 strict//",
535
- "-//ietf//dtd html 2.0//",
536
- "-//ietf//dtd html 2.1e//",
537
- "-//ietf//dtd html 3.0//",
538
- "-//ietf//dtd html 3.2 final//",
539
- "-//ietf//dtd html 3.2//",
540
- "-//ietf//dtd html 3//",
541
- "-//ietf//dtd html level 0//",
542
- "-//ietf//dtd html level 1//",
543
- "-//ietf//dtd html level 2//",
544
- "-//ietf//dtd html level 3//",
545
- "-//ietf//dtd html strict level 0//",
546
- "-//ietf//dtd html strict level 1//",
547
- "-//ietf//dtd html strict level 2//",
548
- "-//ietf//dtd html strict level 3//",
549
- "-//ietf//dtd html strict//",
550
- "-//ietf//dtd html//",
551
- "-//metrius//dtd metrius presentational//",
552
- "-//microsoft//dtd internet explorer 2.0 html strict//",
553
- "-//microsoft//dtd internet explorer 2.0 html//",
554
- "-//microsoft//dtd internet explorer 2.0 tables//",
555
- "-//microsoft//dtd internet explorer 3.0 html strict//",
556
- "-//microsoft//dtd internet explorer 3.0 html//",
557
- "-//microsoft//dtd internet explorer 3.0 tables//",
558
- "-//netscape comm. corp.//dtd html//",
559
- "-//netscape comm. corp.//dtd strict html//",
560
- "-//o'reilly and associates//dtd html 2.0//",
561
- "-//o'reilly and associates//dtd html extended 1.0//",
562
- "-//o'reilly and associates//dtd html extended relaxed 1.0//",
563
- "-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//",
564
- "-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//",
565
- "-//spyglass//dtd html 2.0 extended//",
566
- "-//sq//dtd html 2.0 hotmetal + extensions//",
567
- "-//sun microsystems corp.//dtd hotjava html//",
568
- "-//sun microsystems corp.//dtd hotjava strict html//",
569
- "-//w3c//dtd html 3 1995-03-24//",
570
- "-//w3c//dtd html 3.2 draft//",
571
- "-//w3c//dtd html 3.2 final//",
572
- "-//w3c//dtd html 3.2//",
573
- "-//w3c//dtd html 3.2s draft//",
574
- "-//w3c//dtd html 4.0 frameset//",
575
- "-//w3c//dtd html 4.0 transitional//",
576
- "-//w3c//dtd html experimental 19960712//",
577
- "-//w3c//dtd html experimental 970421//",
578
- "-//w3c//dtd w3 html//",
579
- "-//w3o//dtd w3 html 3.0//",
580
- "-//webtechs//dtd mozilla html 2.0//",
581
- "-//webtechs//dtd mozilla html//")) or
582
- publicId in ("-//w3o//dtd w3 html strict 3.0//en//",
583
- "-/w3c/dtd html 4.0 transitional/en",
584
- "html") or
585
- publicId.startswith(
586
- ("-//w3c//dtd html 4.01 frameset//",
587
- "-//w3c//dtd html 4.01 transitional//")) and
588
- systemId is None or
589
- systemId and systemId.lower() == "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"):
590
- self.parser.compatMode = "quirks"
591
- elif (publicId.startswith(
592
- ("-//w3c//dtd xhtml 1.0 frameset//",
593
- "-//w3c//dtd xhtml 1.0 transitional//")) or
594
- publicId.startswith(
595
- ("-//w3c//dtd html 4.01 frameset//",
596
- "-//w3c//dtd html 4.01 transitional//")) and
597
- systemId is not None):
598
- self.parser.compatMode = "limited quirks"
599
-
600
- self.parser.phase = self.parser.phases["beforeHtml"]
601
-
602
- def anythingElse(self):
603
- self.parser.compatMode = "quirks"
604
- self.parser.phase = self.parser.phases["beforeHtml"]
605
-
606
- def processCharacters(self, token):
607
- self.parser.parseError("expected-doctype-but-got-chars")
608
- self.anythingElse()
609
- return token
610
-
611
- def processStartTag(self, token):
612
- self.parser.parseError("expected-doctype-but-got-start-tag",
613
- {"name": token["name"]})
614
- self.anythingElse()
615
- return token
616
-
617
- def processEndTag(self, token):
618
- self.parser.parseError("expected-doctype-but-got-end-tag",
619
- {"name": token["name"]})
620
- self.anythingElse()
621
- return token
622
-
623
- def processEOF(self):
624
- self.parser.parseError("expected-doctype-but-got-eof")
625
- self.anythingElse()
626
- return True
627
-
628
- class BeforeHtmlPhase(Phase):
629
- __slots__ = tuple()
630
-
631
- # helper methods
632
- def insertHtmlElement(self):
633
- self.tree.insertRoot(impliedTagToken("html", "StartTag"))
634
- self.parser.phase = self.parser.phases["beforeHead"]
635
-
636
- # other
637
- def processEOF(self):
638
- self.insertHtmlElement()
639
- return True
640
-
641
- def processComment(self, token):
642
- self.tree.insertComment(token, self.tree.document)
643
-
644
- def processSpaceCharacters(self, token):
645
- pass
646
-
647
- def processCharacters(self, token):
648
- self.insertHtmlElement()
649
- return token
650
-
651
- def processStartTag(self, token):
652
- if token["name"] == "html":
653
- self.parser.firstStartTag = True
654
- self.insertHtmlElement()
655
- return token
656
-
657
- def processEndTag(self, token):
658
- if token["name"] not in ("head", "body", "html", "br"):
659
- self.parser.parseError("unexpected-end-tag-before-html",
660
- {"name": token["name"]})
661
- else:
662
- self.insertHtmlElement()
663
- return token
664
-
665
- class BeforeHeadPhase(Phase):
666
- __slots__ = tuple()
667
-
668
- def processEOF(self):
669
- self.startTagHead(impliedTagToken("head", "StartTag"))
670
- return True
671
-
672
- def processSpaceCharacters(self, token):
673
- pass
674
-
675
- def processCharacters(self, token):
676
- self.startTagHead(impliedTagToken("head", "StartTag"))
677
- return token
678
-
679
- def startTagHtml(self, token):
680
- return self.parser.phases["inBody"].processStartTag(token)
681
-
682
- def startTagHead(self, token):
683
- self.tree.insertElement(token)
684
- self.tree.headPointer = self.tree.openElements[-1]
685
- self.parser.phase = self.parser.phases["inHead"]
686
-
687
- def startTagOther(self, token):
688
- self.startTagHead(impliedTagToken("head", "StartTag"))
689
- return token
690
-
691
- def endTagImplyHead(self, token):
692
- self.startTagHead(impliedTagToken("head", "StartTag"))
693
- return token
694
-
695
- def endTagOther(self, token):
696
- self.parser.parseError("end-tag-after-implied-root",
697
- {"name": token["name"]})
698
-
699
- startTagHandler = _utils.MethodDispatcher([
700
- ("html", startTagHtml),
701
- ("head", startTagHead)
702
- ])
703
- startTagHandler.default = startTagOther
704
-
705
- endTagHandler = _utils.MethodDispatcher([
706
- (("head", "body", "html", "br"), endTagImplyHead)
707
- ])
708
- endTagHandler.default = endTagOther
709
-
710
- class InHeadPhase(Phase):
711
- __slots__ = tuple()
712
-
713
- # the real thing
714
- def processEOF(self):
715
- self.anythingElse()
716
- return True
717
-
718
- def processCharacters(self, token):
719
- self.anythingElse()
720
- return token
721
-
722
- def startTagHtml(self, token):
723
- return self.parser.phases["inBody"].processStartTag(token)
724
-
725
- def startTagHead(self, token):
726
- self.parser.parseError("two-heads-are-not-better-than-one")
727
-
728
- def startTagBaseLinkCommand(self, token):
729
- self.tree.insertElement(token)
730
- self.tree.openElements.pop()
731
- token["selfClosingAcknowledged"] = True
732
-
733
- def startTagMeta(self, token):
734
- self.tree.insertElement(token)
735
- self.tree.openElements.pop()
736
- token["selfClosingAcknowledged"] = True
737
-
738
- attributes = token["data"]
739
- if self.parser.tokenizer.stream.charEncoding[1] == "tentative":
740
- if "charset" in attributes:
741
- self.parser.tokenizer.stream.changeEncoding(attributes["charset"])
742
- elif ("content" in attributes and
743
- "http-equiv" in attributes and
744
- attributes["http-equiv"].lower() == "content-type"):
745
- # Encoding it as UTF-8 here is a hack, as really we should pass
746
- # the abstract Unicode string, and just use the
747
- # ContentAttrParser on that, but using UTF-8 allows all chars
748
- # to be encoded and as a ASCII-superset works.
749
- data = _inputstream.EncodingBytes(attributes["content"].encode("utf-8"))
750
- parser = _inputstream.ContentAttrParser(data)
751
- codec = parser.parse()
752
- self.parser.tokenizer.stream.changeEncoding(codec)
753
-
754
- def startTagTitle(self, token):
755
- self.parser.parseRCDataRawtext(token, "RCDATA")
756
-
757
- def startTagNoFramesStyle(self, token):
758
- # Need to decide whether to implement the scripting-disabled case
759
- self.parser.parseRCDataRawtext(token, "RAWTEXT")
760
-
761
- def startTagNoscript(self, token):
762
- if self.parser.scripting:
763
- self.parser.parseRCDataRawtext(token, "RAWTEXT")
764
- else:
765
- self.tree.insertElement(token)
766
- self.parser.phase = self.parser.phases["inHeadNoscript"]
767
-
768
- def startTagScript(self, token):
769
- self.tree.insertElement(token)
770
- self.parser.tokenizer.state = self.parser.tokenizer.scriptDataState
771
- self.parser.originalPhase = self.parser.phase
772
- self.parser.phase = self.parser.phases["text"]
773
-
774
- def startTagOther(self, token):
775
- self.anythingElse()
776
- return token
777
-
778
- def endTagHead(self, token):
779
- node = self.parser.tree.openElements.pop()
780
- assert node.name == "head", "Expected head got %s" % node.name
781
- self.parser.phase = self.parser.phases["afterHead"]
782
-
783
- def endTagHtmlBodyBr(self, token):
784
- self.anythingElse()
785
- return token
786
-
787
- def endTagOther(self, token):
788
- self.parser.parseError("unexpected-end-tag", {"name": token["name"]})
789
-
790
- def anythingElse(self):
791
- self.endTagHead(impliedTagToken("head"))
792
-
793
- startTagHandler = _utils.MethodDispatcher([
794
- ("html", startTagHtml),
795
- ("title", startTagTitle),
796
- (("noframes", "style"), startTagNoFramesStyle),
797
- ("noscript", startTagNoscript),
798
- ("script", startTagScript),
799
- (("base", "basefont", "bgsound", "command", "link"),
800
- startTagBaseLinkCommand),
801
- ("meta", startTagMeta),
802
- ("head", startTagHead)
803
- ])
804
- startTagHandler.default = startTagOther
805
-
806
- endTagHandler = _utils.MethodDispatcher([
807
- ("head", endTagHead),
808
- (("br", "html", "body"), endTagHtmlBodyBr)
809
- ])
810
- endTagHandler.default = endTagOther
811
-
812
- class InHeadNoscriptPhase(Phase):
813
- __slots__ = tuple()
814
-
815
- def processEOF(self):
816
- self.parser.parseError("eof-in-head-noscript")
817
- self.anythingElse()
818
- return True
819
-
820
- def processComment(self, token):
821
- return self.parser.phases["inHead"].processComment(token)
822
-
823
- def processCharacters(self, token):
824
- self.parser.parseError("char-in-head-noscript")
825
- self.anythingElse()
826
- return token
827
-
828
- def processSpaceCharacters(self, token):
829
- return self.parser.phases["inHead"].processSpaceCharacters(token)
830
-
831
- def startTagHtml(self, token):
832
- return self.parser.phases["inBody"].processStartTag(token)
833
-
834
- def startTagBaseLinkCommand(self, token):
835
- return self.parser.phases["inHead"].processStartTag(token)
836
-
837
- def startTagHeadNoscript(self, token):
838
- self.parser.parseError("unexpected-start-tag", {"name": token["name"]})
839
-
840
- def startTagOther(self, token):
841
- self.parser.parseError("unexpected-inhead-noscript-tag", {"name": token["name"]})
842
- self.anythingElse()
843
- return token
844
-
845
- def endTagNoscript(self, token):
846
- node = self.parser.tree.openElements.pop()
847
- assert node.name == "noscript", "Expected noscript got %s" % node.name
848
- self.parser.phase = self.parser.phases["inHead"]
849
-
850
- def endTagBr(self, token):
851
- self.parser.parseError("unexpected-inhead-noscript-tag", {"name": token["name"]})
852
- self.anythingElse()
853
- return token
854
-
855
- def endTagOther(self, token):
856
- self.parser.parseError("unexpected-end-tag", {"name": token["name"]})
857
-
858
- def anythingElse(self):
859
- # Caller must raise parse error first!
860
- self.endTagNoscript(impliedTagToken("noscript"))
861
-
862
- startTagHandler = _utils.MethodDispatcher([
863
- ("html", startTagHtml),
864
- (("basefont", "bgsound", "link", "meta", "noframes", "style"), startTagBaseLinkCommand),
865
- (("head", "noscript"), startTagHeadNoscript),
866
- ])
867
- startTagHandler.default = startTagOther
868
-
869
- endTagHandler = _utils.MethodDispatcher([
870
- ("noscript", endTagNoscript),
871
- ("br", endTagBr),
872
- ])
873
- endTagHandler.default = endTagOther
874
-
875
- class AfterHeadPhase(Phase):
876
- __slots__ = tuple()
877
-
878
- def processEOF(self):
879
- self.anythingElse()
880
- return True
881
-
882
- def processCharacters(self, token):
883
- self.anythingElse()
884
- return token
885
-
886
- def startTagHtml(self, token):
887
- return self.parser.phases["inBody"].processStartTag(token)
888
-
889
- def startTagBody(self, token):
890
- self.parser.framesetOK = False
891
- self.tree.insertElement(token)
892
- self.parser.phase = self.parser.phases["inBody"]
893
-
894
- def startTagFrameset(self, token):
895
- self.tree.insertElement(token)
896
- self.parser.phase = self.parser.phases["inFrameset"]
897
-
898
- def startTagFromHead(self, token):
899
- self.parser.parseError("unexpected-start-tag-out-of-my-head",
900
- {"name": token["name"]})
901
- self.tree.openElements.append(self.tree.headPointer)
902
- self.parser.phases["inHead"].processStartTag(token)
903
- for node in self.tree.openElements[::-1]:
904
- if node.name == "head":
905
- self.tree.openElements.remove(node)
906
- break
907
-
908
- def startTagHead(self, token):
909
- self.parser.parseError("unexpected-start-tag", {"name": token["name"]})
910
-
911
- def startTagOther(self, token):
912
- self.anythingElse()
913
- return token
914
-
915
- def endTagHtmlBodyBr(self, token):
916
- self.anythingElse()
917
- return token
918
-
919
- def endTagOther(self, token):
920
- self.parser.parseError("unexpected-end-tag", {"name": token["name"]})
921
-
922
- def anythingElse(self):
923
- self.tree.insertElement(impliedTagToken("body", "StartTag"))
924
- self.parser.phase = self.parser.phases["inBody"]
925
- self.parser.framesetOK = True
926
-
927
- startTagHandler = _utils.MethodDispatcher([
928
- ("html", startTagHtml),
929
- ("body", startTagBody),
930
- ("frameset", startTagFrameset),
931
- (("base", "basefont", "bgsound", "link", "meta", "noframes", "script",
932
- "style", "title"),
933
- startTagFromHead),
934
- ("head", startTagHead)
935
- ])
936
- startTagHandler.default = startTagOther
937
- endTagHandler = _utils.MethodDispatcher([(("body", "html", "br"),
938
- endTagHtmlBodyBr)])
939
- endTagHandler.default = endTagOther
940
-
941
- class InBodyPhase(Phase):
942
- # http://www.whatwg.org/specs/web-apps/current-work/#parsing-main-inbody
943
- # the really-really-really-very crazy mode
944
- __slots__ = ("processSpaceCharacters",)
945
-
946
- def __init__(self, *args, **kwargs):
947
- super(InBodyPhase, self).__init__(*args, **kwargs)
948
- # Set this to the default handler
949
- self.processSpaceCharacters = self.processSpaceCharactersNonPre
950
-
951
- def isMatchingFormattingElement(self, node1, node2):
952
- return (node1.name == node2.name and
953
- node1.namespace == node2.namespace and
954
- node1.attributes == node2.attributes)
955
-
956
- # helper
957
- def addFormattingElement(self, token):
958
- self.tree.insertElement(token)
959
- element = self.tree.openElements[-1]
960
-
961
- matchingElements = []
962
- for node in self.tree.activeFormattingElements[::-1]:
963
- if node is Marker:
964
- break
965
- elif self.isMatchingFormattingElement(node, element):
966
- matchingElements.append(node)
967
-
968
- assert len(matchingElements) <= 3
969
- if len(matchingElements) == 3:
970
- self.tree.activeFormattingElements.remove(matchingElements[-1])
971
- self.tree.activeFormattingElements.append(element)
972
-
973
- # the real deal
974
- def processEOF(self):
975
- allowed_elements = frozenset(("dd", "dt", "li", "p", "tbody", "td",
976
- "tfoot", "th", "thead", "tr", "body",
977
- "html"))
978
- for node in self.tree.openElements[::-1]:
979
- if node.name not in allowed_elements:
980
- self.parser.parseError("expected-closing-tag-but-got-eof")
981
- break
982
- # Stop parsing
983
-
984
- def processSpaceCharactersDropNewline(self, token):
985
- # Sometimes (start of <pre>, <listing>, and <textarea> blocks) we
986
- # want to drop leading newlines
987
- data = token["data"]
988
- self.processSpaceCharacters = self.processSpaceCharactersNonPre
989
- if (data.startswith("\n") and
990
- self.tree.openElements[-1].name in ("pre", "listing", "textarea") and
991
- not self.tree.openElements[-1].hasContent()):
992
- data = data[1:]
993
- if data:
994
- self.tree.reconstructActiveFormattingElements()
995
- self.tree.insertText(data)
996
-
997
- def processCharacters(self, token):
998
- if token["data"] == "\u0000":
999
- # The tokenizer should always emit null on its own
1000
- return
1001
- self.tree.reconstructActiveFormattingElements()
1002
- self.tree.insertText(token["data"])
1003
- # This must be bad for performance
1004
- if (self.parser.framesetOK and
1005
- any([char not in spaceCharacters
1006
- for char in token["data"]])):
1007
- self.parser.framesetOK = False
1008
-
1009
- def processSpaceCharactersNonPre(self, token):
1010
- self.tree.reconstructActiveFormattingElements()
1011
- self.tree.insertText(token["data"])
1012
-
1013
- def startTagProcessInHead(self, token):
1014
- return self.parser.phases["inHead"].processStartTag(token)
1015
-
1016
- def startTagBody(self, token):
1017
- self.parser.parseError("unexpected-start-tag", {"name": "body"})
1018
- if (len(self.tree.openElements) == 1 or
1019
- self.tree.openElements[1].name != "body"):
1020
- assert self.parser.innerHTML
1021
- else:
1022
- self.parser.framesetOK = False
1023
- for attr, value in token["data"].items():
1024
- if attr not in self.tree.openElements[1].attributes:
1025
- self.tree.openElements[1].attributes[attr] = value
1026
-
1027
- def startTagFrameset(self, token):
1028
- self.parser.parseError("unexpected-start-tag", {"name": "frameset"})
1029
- if (len(self.tree.openElements) == 1 or self.tree.openElements[1].name != "body"):
1030
- assert self.parser.innerHTML
1031
- elif not self.parser.framesetOK:
1032
- pass
1033
- else:
1034
- if self.tree.openElements[1].parent:
1035
- self.tree.openElements[1].parent.removeChild(self.tree.openElements[1])
1036
- while self.tree.openElements[-1].name != "html":
1037
- self.tree.openElements.pop()
1038
- self.tree.insertElement(token)
1039
- self.parser.phase = self.parser.phases["inFrameset"]
1040
-
1041
- def startTagCloseP(self, token):
1042
- if self.tree.elementInScope("p", variant="button"):
1043
- self.endTagP(impliedTagToken("p"))
1044
- self.tree.insertElement(token)
1045
-
1046
- def startTagPreListing(self, token):
1047
- if self.tree.elementInScope("p", variant="button"):
1048
- self.endTagP(impliedTagToken("p"))
1049
- self.tree.insertElement(token)
1050
- self.parser.framesetOK = False
1051
- self.processSpaceCharacters = self.processSpaceCharactersDropNewline
1052
-
1053
- def startTagForm(self, token):
1054
- if self.tree.formPointer:
1055
- self.parser.parseError("unexpected-start-tag", {"name": "form"})
1056
- else:
1057
- if self.tree.elementInScope("p", variant="button"):
1058
- self.endTagP(impliedTagToken("p"))
1059
- self.tree.insertElement(token)
1060
- self.tree.formPointer = self.tree.openElements[-1]
1061
-
1062
- def startTagListItem(self, token):
1063
- self.parser.framesetOK = False
1064
-
1065
- stopNamesMap = {"li": ["li"],
1066
- "dt": ["dt", "dd"],
1067
- "dd": ["dt", "dd"]}
1068
- stopNames = stopNamesMap[token["name"]]
1069
- for node in reversed(self.tree.openElements):
1070
- if node.name in stopNames:
1071
- self.parser.phase.processEndTag(
1072
- impliedTagToken(node.name, "EndTag"))
1073
- break
1074
- if (node.nameTuple in specialElements and
1075
- node.name not in ("address", "div", "p")):
1076
- break
1077
-
1078
- if self.tree.elementInScope("p", variant="button"):
1079
- self.parser.phase.processEndTag(
1080
- impliedTagToken("p", "EndTag"))
1081
-
1082
- self.tree.insertElement(token)
1083
-
1084
- def startTagPlaintext(self, token):
1085
- if self.tree.elementInScope("p", variant="button"):
1086
- self.endTagP(impliedTagToken("p"))
1087
- self.tree.insertElement(token)
1088
- self.parser.tokenizer.state = self.parser.tokenizer.plaintextState
1089
-
1090
- def startTagHeading(self, token):
1091
- if self.tree.elementInScope("p", variant="button"):
1092
- self.endTagP(impliedTagToken("p"))
1093
- if self.tree.openElements[-1].name in headingElements:
1094
- self.parser.parseError("unexpected-start-tag", {"name": token["name"]})
1095
- self.tree.openElements.pop()
1096
- self.tree.insertElement(token)
1097
-
1098
- def startTagA(self, token):
1099
- afeAElement = self.tree.elementInActiveFormattingElements("a")
1100
- if afeAElement:
1101
- self.parser.parseError("unexpected-start-tag-implies-end-tag",
1102
- {"startName": "a", "endName": "a"})
1103
- self.endTagFormatting(impliedTagToken("a"))
1104
- if afeAElement in self.tree.openElements:
1105
- self.tree.openElements.remove(afeAElement)
1106
- if afeAElement in self.tree.activeFormattingElements:
1107
- self.tree.activeFormattingElements.remove(afeAElement)
1108
- self.tree.reconstructActiveFormattingElements()
1109
- self.addFormattingElement(token)
1110
-
1111
- def startTagFormatting(self, token):
1112
- self.tree.reconstructActiveFormattingElements()
1113
- self.addFormattingElement(token)
1114
-
1115
- def startTagNobr(self, token):
1116
- self.tree.reconstructActiveFormattingElements()
1117
- if self.tree.elementInScope("nobr"):
1118
- self.parser.parseError("unexpected-start-tag-implies-end-tag",
1119
- {"startName": "nobr", "endName": "nobr"})
1120
- self.processEndTag(impliedTagToken("nobr"))
1121
- # XXX Need tests that trigger the following
1122
- self.tree.reconstructActiveFormattingElements()
1123
- self.addFormattingElement(token)
1124
-
1125
- def startTagButton(self, token):
1126
- if self.tree.elementInScope("button"):
1127
- self.parser.parseError("unexpected-start-tag-implies-end-tag",
1128
- {"startName": "button", "endName": "button"})
1129
- self.processEndTag(impliedTagToken("button"))
1130
- return token
1131
- else:
1132
- self.tree.reconstructActiveFormattingElements()
1133
- self.tree.insertElement(token)
1134
- self.parser.framesetOK = False
1135
-
1136
- def startTagAppletMarqueeObject(self, token):
1137
- self.tree.reconstructActiveFormattingElements()
1138
- self.tree.insertElement(token)
1139
- self.tree.activeFormattingElements.append(Marker)
1140
- self.parser.framesetOK = False
1141
-
1142
- def startTagXmp(self, token):
1143
- if self.tree.elementInScope("p", variant="button"):
1144
- self.endTagP(impliedTagToken("p"))
1145
- self.tree.reconstructActiveFormattingElements()
1146
- self.parser.framesetOK = False
1147
- self.parser.parseRCDataRawtext(token, "RAWTEXT")
1148
-
1149
- def startTagTable(self, token):
1150
- if self.parser.compatMode != "quirks":
1151
- if self.tree.elementInScope("p", variant="button"):
1152
- self.processEndTag(impliedTagToken("p"))
1153
- self.tree.insertElement(token)
1154
- self.parser.framesetOK = False
1155
- self.parser.phase = self.parser.phases["inTable"]
1156
-
1157
- def startTagVoidFormatting(self, token):
1158
- self.tree.reconstructActiveFormattingElements()
1159
- self.tree.insertElement(token)
1160
- self.tree.openElements.pop()
1161
- token["selfClosingAcknowledged"] = True
1162
- self.parser.framesetOK = False
1163
-
1164
- def startTagInput(self, token):
1165
- framesetOK = self.parser.framesetOK
1166
- self.startTagVoidFormatting(token)
1167
- if ("type" in token["data"] and
1168
- token["data"]["type"].translate(asciiUpper2Lower) == "hidden"):
1169
- # input type=hidden doesn't change framesetOK
1170
- self.parser.framesetOK = framesetOK
1171
-
1172
- def startTagParamSource(self, token):
1173
- self.tree.insertElement(token)
1174
- self.tree.openElements.pop()
1175
- token["selfClosingAcknowledged"] = True
1176
-
1177
- def startTagHr(self, token):
1178
- if self.tree.elementInScope("p", variant="button"):
1179
- self.endTagP(impliedTagToken("p"))
1180
- self.tree.insertElement(token)
1181
- self.tree.openElements.pop()
1182
- token["selfClosingAcknowledged"] = True
1183
- self.parser.framesetOK = False
1184
-
1185
- def startTagImage(self, token):
1186
- # No really...
1187
- self.parser.parseError("unexpected-start-tag-treated-as",
1188
- {"originalName": "image", "newName": "img"})
1189
- self.processStartTag(impliedTagToken("img", "StartTag",
1190
- attributes=token["data"],
1191
- selfClosing=token["selfClosing"]))
1192
-
1193
- def startTagIsIndex(self, token):
1194
- self.parser.parseError("deprecated-tag", {"name": "isindex"})
1195
- if self.tree.formPointer:
1196
- return
1197
- form_attrs = {}
1198
- if "action" in token["data"]:
1199
- form_attrs["action"] = token["data"]["action"]
1200
- self.processStartTag(impliedTagToken("form", "StartTag",
1201
- attributes=form_attrs))
1202
- self.processStartTag(impliedTagToken("hr", "StartTag"))
1203
- self.processStartTag(impliedTagToken("label", "StartTag"))
1204
- # XXX Localization ...
1205
- if "prompt" in token["data"]:
1206
- prompt = token["data"]["prompt"]
1207
- else:
1208
- prompt = "This is a searchable index. Enter search keywords: "
1209
- self.processCharacters(
1210
- {"type": tokenTypes["Characters"], "data": prompt})
1211
- attributes = token["data"].copy()
1212
- if "action" in attributes:
1213
- del attributes["action"]
1214
- if "prompt" in attributes:
1215
- del attributes["prompt"]
1216
- attributes["name"] = "isindex"
1217
- self.processStartTag(impliedTagToken("input", "StartTag",
1218
- attributes=attributes,
1219
- selfClosing=token["selfClosing"]))
1220
- self.processEndTag(impliedTagToken("label"))
1221
- self.processStartTag(impliedTagToken("hr", "StartTag"))
1222
- self.processEndTag(impliedTagToken("form"))
1223
-
1224
- def startTagTextarea(self, token):
1225
- self.tree.insertElement(token)
1226
- self.parser.tokenizer.state = self.parser.tokenizer.rcdataState
1227
- self.processSpaceCharacters = self.processSpaceCharactersDropNewline
1228
- self.parser.framesetOK = False
1229
-
1230
- def startTagIFrame(self, token):
1231
- self.parser.framesetOK = False
1232
- self.startTagRawtext(token)
1233
-
1234
- def startTagNoscript(self, token):
1235
- if self.parser.scripting:
1236
- self.startTagRawtext(token)
1237
- else:
1238
- self.startTagOther(token)
1239
-
1240
- def startTagRawtext(self, token):
1241
- """iframe, noembed noframes, noscript(if scripting enabled)"""
1242
- self.parser.parseRCDataRawtext(token, "RAWTEXT")
1243
-
1244
- def startTagOpt(self, token):
1245
- if self.tree.openElements[-1].name == "option":
1246
- self.parser.phase.processEndTag(impliedTagToken("option"))
1247
- self.tree.reconstructActiveFormattingElements()
1248
- self.parser.tree.insertElement(token)
1249
-
1250
- def startTagSelect(self, token):
1251
- self.tree.reconstructActiveFormattingElements()
1252
- self.tree.insertElement(token)
1253
- self.parser.framesetOK = False
1254
- if self.parser.phase in (self.parser.phases["inTable"],
1255
- self.parser.phases["inCaption"],
1256
- self.parser.phases["inColumnGroup"],
1257
- self.parser.phases["inTableBody"],
1258
- self.parser.phases["inRow"],
1259
- self.parser.phases["inCell"]):
1260
- self.parser.phase = self.parser.phases["inSelectInTable"]
1261
- else:
1262
- self.parser.phase = self.parser.phases["inSelect"]
1263
-
1264
- def startTagRpRt(self, token):
1265
- if self.tree.elementInScope("ruby"):
1266
- self.tree.generateImpliedEndTags()
1267
- if self.tree.openElements[-1].name != "ruby":
1268
- self.parser.parseError()
1269
- self.tree.insertElement(token)
1270
-
1271
- def startTagMath(self, token):
1272
- self.tree.reconstructActiveFormattingElements()
1273
- self.parser.adjustMathMLAttributes(token)
1274
- self.parser.adjustForeignAttributes(token)
1275
- token["namespace"] = namespaces["mathml"]
1276
- self.tree.insertElement(token)
1277
- # Need to get the parse error right for the case where the token
1278
- # has a namespace not equal to the xmlns attribute
1279
- if token["selfClosing"]:
1280
- self.tree.openElements.pop()
1281
- token["selfClosingAcknowledged"] = True
1282
-
1283
- def startTagSvg(self, token):
1284
- self.tree.reconstructActiveFormattingElements()
1285
- self.parser.adjustSVGAttributes(token)
1286
- self.parser.adjustForeignAttributes(token)
1287
- token["namespace"] = namespaces["svg"]
1288
- self.tree.insertElement(token)
1289
- # Need to get the parse error right for the case where the token
1290
- # has a namespace not equal to the xmlns attribute
1291
- if token["selfClosing"]:
1292
- self.tree.openElements.pop()
1293
- token["selfClosingAcknowledged"] = True
1294
-
1295
- def startTagMisplaced(self, token):
1296
- """ Elements that should be children of other elements that have a
1297
- different insertion mode; here they are ignored
1298
- "caption", "col", "colgroup", "frame", "frameset", "head",
1299
- "option", "optgroup", "tbody", "td", "tfoot", "th", "thead",
1300
- "tr", "noscript"
1301
- """
1302
- self.parser.parseError("unexpected-start-tag-ignored", {"name": token["name"]})
1303
-
1304
- def startTagOther(self, token):
1305
- self.tree.reconstructActiveFormattingElements()
1306
- self.tree.insertElement(token)
1307
-
1308
- def endTagP(self, token):
1309
- if not self.tree.elementInScope("p", variant="button"):
1310
- self.startTagCloseP(impliedTagToken("p", "StartTag"))
1311
- self.parser.parseError("unexpected-end-tag", {"name": "p"})
1312
- self.endTagP(impliedTagToken("p", "EndTag"))
1313
- else:
1314
- self.tree.generateImpliedEndTags("p")
1315
- if self.tree.openElements[-1].name != "p":
1316
- self.parser.parseError("unexpected-end-tag", {"name": "p"})
1317
- node = self.tree.openElements.pop()
1318
- while node.name != "p":
1319
- node = self.tree.openElements.pop()
1320
-
1321
- def endTagBody(self, token):
1322
- if not self.tree.elementInScope("body"):
1323
- self.parser.parseError()
1324
- return
1325
- elif self.tree.openElements[-1].name != "body":
1326
- for node in self.tree.openElements[2:]:
1327
- if node.name not in frozenset(("dd", "dt", "li", "optgroup",
1328
- "option", "p", "rp", "rt",
1329
- "tbody", "td", "tfoot",
1330
- "th", "thead", "tr", "body",
1331
- "html")):
1332
- # Not sure this is the correct name for the parse error
1333
- self.parser.parseError(
1334
- "expected-one-end-tag-but-got-another",
1335
- {"gotName": "body", "expectedName": node.name})
1336
- break
1337
- self.parser.phase = self.parser.phases["afterBody"]
1338
-
1339
- def endTagHtml(self, token):
1340
- # We repeat the test for the body end tag token being ignored here
1341
- if self.tree.elementInScope("body"):
1342
- self.endTagBody(impliedTagToken("body"))
1343
- return token
1344
-
1345
- def endTagBlock(self, token):
1346
- # Put us back in the right whitespace handling mode
1347
- if token["name"] == "pre":
1348
- self.processSpaceCharacters = self.processSpaceCharactersNonPre
1349
- inScope = self.tree.elementInScope(token["name"])
1350
- if inScope:
1351
- self.tree.generateImpliedEndTags()
1352
- if self.tree.openElements[-1].name != token["name"]:
1353
- self.parser.parseError("end-tag-too-early", {"name": token["name"]})
1354
- if inScope:
1355
- node = self.tree.openElements.pop()
1356
- while node.name != token["name"]:
1357
- node = self.tree.openElements.pop()
1358
-
1359
- def endTagForm(self, token):
1360
- node = self.tree.formPointer
1361
- self.tree.formPointer = None
1362
- if node is None or not self.tree.elementInScope(node):
1363
- self.parser.parseError("unexpected-end-tag",
1364
- {"name": "form"})
1365
- else:
1366
- self.tree.generateImpliedEndTags()
1367
- if self.tree.openElements[-1] != node:
1368
- self.parser.parseError("end-tag-too-early-ignored",
1369
- {"name": "form"})
1370
- self.tree.openElements.remove(node)
1371
-
1372
- def endTagListItem(self, token):
1373
- if token["name"] == "li":
1374
- variant = "list"
1375
- else:
1376
- variant = None
1377
- if not self.tree.elementInScope(token["name"], variant=variant):
1378
- self.parser.parseError("unexpected-end-tag", {"name": token["name"]})
1379
- else:
1380
- self.tree.generateImpliedEndTags(exclude=token["name"])
1381
- if self.tree.openElements[-1].name != token["name"]:
1382
- self.parser.parseError(
1383
- "end-tag-too-early",
1384
- {"name": token["name"]})
1385
- node = self.tree.openElements.pop()
1386
- while node.name != token["name"]:
1387
- node = self.tree.openElements.pop()
1388
-
1389
- def endTagHeading(self, token):
1390
- for item in headingElements:
1391
- if self.tree.elementInScope(item):
1392
- self.tree.generateImpliedEndTags()
1393
- break
1394
- if self.tree.openElements[-1].name != token["name"]:
1395
- self.parser.parseError("end-tag-too-early", {"name": token["name"]})
1396
-
1397
- for item in headingElements:
1398
- if self.tree.elementInScope(item):
1399
- item = self.tree.openElements.pop()
1400
- while item.name not in headingElements:
1401
- item = self.tree.openElements.pop()
1402
- break
1403
-
1404
- def endTagFormatting(self, token):
1405
- """The much-feared adoption agency algorithm"""
1406
- # http://svn.whatwg.org/webapps/complete.html#adoptionAgency revision 7867
1407
- # XXX Better parseError messages appreciated.
1408
-
1409
- # Step 1
1410
- outerLoopCounter = 0
1411
-
1412
- # Step 2
1413
- while outerLoopCounter < 8:
1414
-
1415
- # Step 3
1416
- outerLoopCounter += 1
1417
-
1418
- # Step 4:
1419
-
1420
- # Let the formatting element be the last element in
1421
- # the list of active formatting elements that:
1422
- # - is between the end of the list and the last scope
1423
- # marker in the list, if any, or the start of the list
1424
- # otherwise, and
1425
- # - has the same tag name as the token.
1426
- formattingElement = self.tree.elementInActiveFormattingElements(
1427
- token["name"])
1428
- if (not formattingElement or
1429
- (formattingElement in self.tree.openElements and
1430
- not self.tree.elementInScope(formattingElement.name))):
1431
- # If there is no such node, then abort these steps
1432
- # and instead act as described in the "any other
1433
- # end tag" entry below.
1434
- self.endTagOther(token)
1435
- return
1436
-
1437
- # Otherwise, if there is such a node, but that node is
1438
- # not in the stack of open elements, then this is a
1439
- # parse error; remove the element from the list, and
1440
- # abort these steps.
1441
- elif formattingElement not in self.tree.openElements:
1442
- self.parser.parseError("adoption-agency-1.2", {"name": token["name"]})
1443
- self.tree.activeFormattingElements.remove(formattingElement)
1444
- return
1445
-
1446
- # Otherwise, if there is such a node, and that node is
1447
- # also in the stack of open elements, but the element
1448
- # is not in scope, then this is a parse error; ignore
1449
- # the token, and abort these steps.
1450
- elif not self.tree.elementInScope(formattingElement.name):
1451
- self.parser.parseError("adoption-agency-4.4", {"name": token["name"]})
1452
- return
1453
-
1454
- # Otherwise, there is a formatting element and that
1455
- # element is in the stack and is in scope. If the
1456
- # element is not the current node, this is a parse
1457
- # error. In any case, proceed with the algorithm as
1458
- # written in the following steps.
1459
- else:
1460
- if formattingElement != self.tree.openElements[-1]:
1461
- self.parser.parseError("adoption-agency-1.3", {"name": token["name"]})
1462
-
1463
- # Step 5:
1464
-
1465
- # Let the furthest block be the topmost node in the
1466
- # stack of open elements that is lower in the stack
1467
- # than the formatting element, and is an element in
1468
- # the special category. There might not be one.
1469
- afeIndex = self.tree.openElements.index(formattingElement)
1470
- furthestBlock = None
1471
- for element in self.tree.openElements[afeIndex:]:
1472
- if element.nameTuple in specialElements:
1473
- furthestBlock = element
1474
- break
1475
-
1476
- # Step 6:
1477
-
1478
- # If there is no furthest block, then the UA must
1479
- # first pop all the nodes from the bottom of the stack
1480
- # of open elements, from the current node up to and
1481
- # including the formatting element, then remove the
1482
- # formatting element from the list of active
1483
- # formatting elements, and finally abort these steps.
1484
- if furthestBlock is None:
1485
- element = self.tree.openElements.pop()
1486
- while element != formattingElement:
1487
- element = self.tree.openElements.pop()
1488
- self.tree.activeFormattingElements.remove(element)
1489
- return
1490
-
1491
- # Step 7
1492
- commonAncestor = self.tree.openElements[afeIndex - 1]
1493
-
1494
- # Step 8:
1495
- # The bookmark is supposed to help us identify where to reinsert
1496
- # nodes in step 15. We have to ensure that we reinsert nodes after
1497
- # the node before the active formatting element. Note the bookmark
1498
- # can move in step 9.7
1499
- bookmark = self.tree.activeFormattingElements.index(formattingElement)
1500
-
1501
- # Step 9
1502
- lastNode = node = furthestBlock
1503
- innerLoopCounter = 0
1504
-
1505
- index = self.tree.openElements.index(node)
1506
- while innerLoopCounter < 3:
1507
- innerLoopCounter += 1
1508
- # Node is element before node in open elements
1509
- index -= 1
1510
- node = self.tree.openElements[index]
1511
- if node not in self.tree.activeFormattingElements:
1512
- self.tree.openElements.remove(node)
1513
- continue
1514
- # Step 9.6
1515
- if node == formattingElement:
1516
- break
1517
- # Step 9.7
1518
- if lastNode == furthestBlock:
1519
- bookmark = self.tree.activeFormattingElements.index(node) + 1
1520
- # Step 9.8
1521
- clone = node.cloneNode()
1522
- # Replace node with clone
1523
- self.tree.activeFormattingElements[
1524
- self.tree.activeFormattingElements.index(node)] = clone
1525
- self.tree.openElements[
1526
- self.tree.openElements.index(node)] = clone
1527
- node = clone
1528
- # Step 9.9
1529
- # Remove lastNode from its parents, if any
1530
- if lastNode.parent:
1531
- lastNode.parent.removeChild(lastNode)
1532
- node.appendChild(lastNode)
1533
- # Step 9.10
1534
- lastNode = node
1535
-
1536
- # Step 10
1537
- # Foster parent lastNode if commonAncestor is a
1538
- # table, tbody, tfoot, thead, or tr we need to foster
1539
- # parent the lastNode
1540
- if lastNode.parent:
1541
- lastNode.parent.removeChild(lastNode)
1542
-
1543
- if commonAncestor.name in frozenset(("table", "tbody", "tfoot", "thead", "tr")):
1544
- parent, insertBefore = self.tree.getTableMisnestedNodePosition()
1545
- parent.insertBefore(lastNode, insertBefore)
1546
- else:
1547
- commonAncestor.appendChild(lastNode)
1548
-
1549
- # Step 11
1550
- clone = formattingElement.cloneNode()
1551
-
1552
- # Step 12
1553
- furthestBlock.reparentChildren(clone)
1554
-
1555
- # Step 13
1556
- furthestBlock.appendChild(clone)
1557
-
1558
- # Step 14
1559
- self.tree.activeFormattingElements.remove(formattingElement)
1560
- self.tree.activeFormattingElements.insert(bookmark, clone)
1561
-
1562
- # Step 15
1563
- self.tree.openElements.remove(formattingElement)
1564
- self.tree.openElements.insert(
1565
- self.tree.openElements.index(furthestBlock) + 1, clone)
1566
-
1567
- def endTagAppletMarqueeObject(self, token):
1568
- if self.tree.elementInScope(token["name"]):
1569
- self.tree.generateImpliedEndTags()
1570
- if self.tree.openElements[-1].name != token["name"]:
1571
- self.parser.parseError("end-tag-too-early", {"name": token["name"]})
1572
-
1573
- if self.tree.elementInScope(token["name"]):
1574
- element = self.tree.openElements.pop()
1575
- while element.name != token["name"]:
1576
- element = self.tree.openElements.pop()
1577
- self.tree.clearActiveFormattingElements()
1578
-
1579
- def endTagBr(self, token):
1580
- self.parser.parseError("unexpected-end-tag-treated-as",
1581
- {"originalName": "br", "newName": "br element"})
1582
- self.tree.reconstructActiveFormattingElements()
1583
- self.tree.insertElement(impliedTagToken("br", "StartTag"))
1584
- self.tree.openElements.pop()
1585
-
1586
- def endTagOther(self, token):
1587
- for node in self.tree.openElements[::-1]:
1588
- if node.name == token["name"]:
1589
- self.tree.generateImpliedEndTags(exclude=token["name"])
1590
- if self.tree.openElements[-1].name != token["name"]:
1591
- self.parser.parseError("unexpected-end-tag", {"name": token["name"]})
1592
- while self.tree.openElements.pop() != node:
1593
- pass
1594
- break
1595
- else:
1596
- if node.nameTuple in specialElements:
1597
- self.parser.parseError("unexpected-end-tag", {"name": token["name"]})
1598
- break
1599
-
1600
- startTagHandler = _utils.MethodDispatcher([
1601
- ("html", Phase.startTagHtml),
1602
- (("base", "basefont", "bgsound", "command", "link", "meta",
1603
- "script", "style", "title"),
1604
- startTagProcessInHead),
1605
- ("body", startTagBody),
1606
- ("frameset", startTagFrameset),
1607
- (("address", "article", "aside", "blockquote", "center", "details",
1608
- "dir", "div", "dl", "fieldset", "figcaption", "figure",
1609
- "footer", "header", "hgroup", "main", "menu", "nav", "ol", "p",
1610
- "section", "summary", "ul"),
1611
- startTagCloseP),
1612
- (headingElements, startTagHeading),
1613
- (("pre", "listing"), startTagPreListing),
1614
- ("form", startTagForm),
1615
- (("li", "dd", "dt"), startTagListItem),
1616
- ("plaintext", startTagPlaintext),
1617
- ("a", startTagA),
1618
- (("b", "big", "code", "em", "font", "i", "s", "small", "strike",
1619
- "strong", "tt", "u"), startTagFormatting),
1620
- ("nobr", startTagNobr),
1621
- ("button", startTagButton),
1622
- (("applet", "marquee", "object"), startTagAppletMarqueeObject),
1623
- ("xmp", startTagXmp),
1624
- ("table", startTagTable),
1625
- (("area", "br", "embed", "img", "keygen", "wbr"),
1626
- startTagVoidFormatting),
1627
- (("param", "source", "track"), startTagParamSource),
1628
- ("input", startTagInput),
1629
- ("hr", startTagHr),
1630
- ("image", startTagImage),
1631
- ("isindex", startTagIsIndex),
1632
- ("textarea", startTagTextarea),
1633
- ("iframe", startTagIFrame),
1634
- ("noscript", startTagNoscript),
1635
- (("noembed", "noframes"), startTagRawtext),
1636
- ("select", startTagSelect),
1637
- (("rp", "rt"), startTagRpRt),
1638
- (("option", "optgroup"), startTagOpt),
1639
- (("math"), startTagMath),
1640
- (("svg"), startTagSvg),
1641
- (("caption", "col", "colgroup", "frame", "head",
1642
- "tbody", "td", "tfoot", "th", "thead",
1643
- "tr"), startTagMisplaced)
1644
- ])
1645
- startTagHandler.default = startTagOther
1646
-
1647
- endTagHandler = _utils.MethodDispatcher([
1648
- ("body", endTagBody),
1649
- ("html", endTagHtml),
1650
- (("address", "article", "aside", "blockquote", "button", "center",
1651
- "details", "dialog", "dir", "div", "dl", "fieldset", "figcaption", "figure",
1652
- "footer", "header", "hgroup", "listing", "main", "menu", "nav", "ol", "pre",
1653
- "section", "summary", "ul"), endTagBlock),
1654
- ("form", endTagForm),
1655
- ("p", endTagP),
1656
- (("dd", "dt", "li"), endTagListItem),
1657
- (headingElements, endTagHeading),
1658
- (("a", "b", "big", "code", "em", "font", "i", "nobr", "s", "small",
1659
- "strike", "strong", "tt", "u"), endTagFormatting),
1660
- (("applet", "marquee", "object"), endTagAppletMarqueeObject),
1661
- ("br", endTagBr),
1662
- ])
1663
- endTagHandler.default = endTagOther
1664
-
1665
- class TextPhase(Phase):
1666
- __slots__ = tuple()
1667
-
1668
- def processCharacters(self, token):
1669
- self.tree.insertText(token["data"])
1670
-
1671
- def processEOF(self):
1672
- self.parser.parseError("expected-named-closing-tag-but-got-eof",
1673
- {"name": self.tree.openElements[-1].name})
1674
- self.tree.openElements.pop()
1675
- self.parser.phase = self.parser.originalPhase
1676
- return True
1677
-
1678
- def startTagOther(self, token):
1679
- assert False, "Tried to process start tag %s in RCDATA/RAWTEXT mode" % token['name']
1680
-
1681
- def endTagScript(self, token):
1682
- node = self.tree.openElements.pop()
1683
- assert node.name == "script"
1684
- self.parser.phase = self.parser.originalPhase
1685
- # The rest of this method is all stuff that only happens if
1686
- # document.write works
1687
-
1688
- def endTagOther(self, token):
1689
- self.tree.openElements.pop()
1690
- self.parser.phase = self.parser.originalPhase
1691
-
1692
- startTagHandler = _utils.MethodDispatcher([])
1693
- startTagHandler.default = startTagOther
1694
- endTagHandler = _utils.MethodDispatcher([
1695
- ("script", endTagScript)])
1696
- endTagHandler.default = endTagOther
1697
-
1698
- class InTablePhase(Phase):
1699
- # http://www.whatwg.org/specs/web-apps/current-work/#in-table
1700
- __slots__ = tuple()
1701
-
1702
- # helper methods
1703
- def clearStackToTableContext(self):
1704
- # "clear the stack back to a table context"
1705
- while self.tree.openElements[-1].name not in ("table", "html"):
1706
- # self.parser.parseError("unexpected-implied-end-tag-in-table",
1707
- # {"name": self.tree.openElements[-1].name})
1708
- self.tree.openElements.pop()
1709
- # When the current node is <html> it's an innerHTML case
1710
-
1711
- # processing methods
1712
- def processEOF(self):
1713
- if self.tree.openElements[-1].name != "html":
1714
- self.parser.parseError("eof-in-table")
1715
- else:
1716
- assert self.parser.innerHTML
1717
- # Stop parsing
1718
-
1719
- def processSpaceCharacters(self, token):
1720
- originalPhase = self.parser.phase
1721
- self.parser.phase = self.parser.phases["inTableText"]
1722
- self.parser.phase.originalPhase = originalPhase
1723
- self.parser.phase.processSpaceCharacters(token)
1724
-
1725
- def processCharacters(self, token):
1726
- originalPhase = self.parser.phase
1727
- self.parser.phase = self.parser.phases["inTableText"]
1728
- self.parser.phase.originalPhase = originalPhase
1729
- self.parser.phase.processCharacters(token)
1730
-
1731
- def insertText(self, token):
1732
- # If we get here there must be at least one non-whitespace character
1733
- # Do the table magic!
1734
- self.tree.insertFromTable = True
1735
- self.parser.phases["inBody"].processCharacters(token)
1736
- self.tree.insertFromTable = False
1737
-
1738
- def startTagCaption(self, token):
1739
- self.clearStackToTableContext()
1740
- self.tree.activeFormattingElements.append(Marker)
1741
- self.tree.insertElement(token)
1742
- self.parser.phase = self.parser.phases["inCaption"]
1743
-
1744
- def startTagColgroup(self, token):
1745
- self.clearStackToTableContext()
1746
- self.tree.insertElement(token)
1747
- self.parser.phase = self.parser.phases["inColumnGroup"]
1748
-
1749
- def startTagCol(self, token):
1750
- self.startTagColgroup(impliedTagToken("colgroup", "StartTag"))
1751
- return token
1752
-
1753
- def startTagRowGroup(self, token):
1754
- self.clearStackToTableContext()
1755
- self.tree.insertElement(token)
1756
- self.parser.phase = self.parser.phases["inTableBody"]
1757
-
1758
- def startTagImplyTbody(self, token):
1759
- self.startTagRowGroup(impliedTagToken("tbody", "StartTag"))
1760
- return token
1761
-
1762
- def startTagTable(self, token):
1763
- self.parser.parseError("unexpected-start-tag-implies-end-tag",
1764
- {"startName": "table", "endName": "table"})
1765
- self.parser.phase.processEndTag(impliedTagToken("table"))
1766
- if not self.parser.innerHTML:
1767
- return token
1768
-
1769
- def startTagStyleScript(self, token):
1770
- return self.parser.phases["inHead"].processStartTag(token)
1771
-
1772
- def startTagInput(self, token):
1773
- if ("type" in token["data"] and
1774
- token["data"]["type"].translate(asciiUpper2Lower) == "hidden"):
1775
- self.parser.parseError("unexpected-hidden-input-in-table")
1776
- self.tree.insertElement(token)
1777
- # XXX associate with form
1778
- self.tree.openElements.pop()
1779
- else:
1780
- self.startTagOther(token)
1781
-
1782
- def startTagForm(self, token):
1783
- self.parser.parseError("unexpected-form-in-table")
1784
- if self.tree.formPointer is None:
1785
- self.tree.insertElement(token)
1786
- self.tree.formPointer = self.tree.openElements[-1]
1787
- self.tree.openElements.pop()
1788
-
1789
- def startTagOther(self, token):
1790
- self.parser.parseError("unexpected-start-tag-implies-table-voodoo", {"name": token["name"]})
1791
- # Do the table magic!
1792
- self.tree.insertFromTable = True
1793
- self.parser.phases["inBody"].processStartTag(token)
1794
- self.tree.insertFromTable = False
1795
-
1796
- def endTagTable(self, token):
1797
- if self.tree.elementInScope("table", variant="table"):
1798
- self.tree.generateImpliedEndTags()
1799
- if self.tree.openElements[-1].name != "table":
1800
- self.parser.parseError("end-tag-too-early-named",
1801
- {"gotName": "table",
1802
- "expectedName": self.tree.openElements[-1].name})
1803
- while self.tree.openElements[-1].name != "table":
1804
- self.tree.openElements.pop()
1805
- self.tree.openElements.pop()
1806
- self.parser.resetInsertionMode()
1807
- else:
1808
- # innerHTML case
1809
- assert self.parser.innerHTML
1810
- self.parser.parseError()
1811
-
1812
- def endTagIgnore(self, token):
1813
- self.parser.parseError("unexpected-end-tag", {"name": token["name"]})
1814
-
1815
- def endTagOther(self, token):
1816
- self.parser.parseError("unexpected-end-tag-implies-table-voodoo", {"name": token["name"]})
1817
- # Do the table magic!
1818
- self.tree.insertFromTable = True
1819
- self.parser.phases["inBody"].processEndTag(token)
1820
- self.tree.insertFromTable = False
1821
-
1822
- startTagHandler = _utils.MethodDispatcher([
1823
- ("html", Phase.startTagHtml),
1824
- ("caption", startTagCaption),
1825
- ("colgroup", startTagColgroup),
1826
- ("col", startTagCol),
1827
- (("tbody", "tfoot", "thead"), startTagRowGroup),
1828
- (("td", "th", "tr"), startTagImplyTbody),
1829
- ("table", startTagTable),
1830
- (("style", "script"), startTagStyleScript),
1831
- ("input", startTagInput),
1832
- ("form", startTagForm)
1833
- ])
1834
- startTagHandler.default = startTagOther
1835
-
1836
- endTagHandler = _utils.MethodDispatcher([
1837
- ("table", endTagTable),
1838
- (("body", "caption", "col", "colgroup", "html", "tbody", "td",
1839
- "tfoot", "th", "thead", "tr"), endTagIgnore)
1840
- ])
1841
- endTagHandler.default = endTagOther
1842
-
1843
- class InTableTextPhase(Phase):
1844
- __slots__ = ("originalPhase", "characterTokens")
1845
-
1846
- def __init__(self, *args, **kwargs):
1847
- super(InTableTextPhase, self).__init__(*args, **kwargs)
1848
- self.originalPhase = None
1849
- self.characterTokens = []
1850
-
1851
- def flushCharacters(self):
1852
- data = "".join([item["data"] for item in self.characterTokens])
1853
- if any([item not in spaceCharacters for item in data]):
1854
- token = {"type": tokenTypes["Characters"], "data": data}
1855
- self.parser.phases["inTable"].insertText(token)
1856
- elif data:
1857
- self.tree.insertText(data)
1858
- self.characterTokens = []
1859
-
1860
- def processComment(self, token):
1861
- self.flushCharacters()
1862
- self.parser.phase = self.originalPhase
1863
- return token
1864
-
1865
- def processEOF(self):
1866
- self.flushCharacters()
1867
- self.parser.phase = self.originalPhase
1868
- return True
1869
-
1870
- def processCharacters(self, token):
1871
- if token["data"] == "\u0000":
1872
- return
1873
- self.characterTokens.append(token)
1874
-
1875
- def processSpaceCharacters(self, token):
1876
- # pretty sure we should never reach here
1877
- self.characterTokens.append(token)
1878
- # assert False
1879
-
1880
- def processStartTag(self, token):
1881
- self.flushCharacters()
1882
- self.parser.phase = self.originalPhase
1883
- return token
1884
-
1885
- def processEndTag(self, token):
1886
- self.flushCharacters()
1887
- self.parser.phase = self.originalPhase
1888
- return token
1889
-
1890
- class InCaptionPhase(Phase):
1891
- # http://www.whatwg.org/specs/web-apps/current-work/#in-caption
1892
- __slots__ = tuple()
1893
-
1894
- def ignoreEndTagCaption(self):
1895
- return not self.tree.elementInScope("caption", variant="table")
1896
-
1897
- def processEOF(self):
1898
- self.parser.phases["inBody"].processEOF()
1899
-
1900
- def processCharacters(self, token):
1901
- return self.parser.phases["inBody"].processCharacters(token)
1902
-
1903
- def startTagTableElement(self, token):
1904
- self.parser.parseError()
1905
- # XXX Have to duplicate logic here to find out if the tag is ignored
1906
- ignoreEndTag = self.ignoreEndTagCaption()
1907
- self.parser.phase.processEndTag(impliedTagToken("caption"))
1908
- if not ignoreEndTag:
1909
- return token
1910
-
1911
- def startTagOther(self, token):
1912
- return self.parser.phases["inBody"].processStartTag(token)
1913
-
1914
- def endTagCaption(self, token):
1915
- if not self.ignoreEndTagCaption():
1916
- # AT this code is quite similar to endTagTable in "InTable"
1917
- self.tree.generateImpliedEndTags()
1918
- if self.tree.openElements[-1].name != "caption":
1919
- self.parser.parseError("expected-one-end-tag-but-got-another",
1920
- {"gotName": "caption",
1921
- "expectedName": self.tree.openElements[-1].name})
1922
- while self.tree.openElements[-1].name != "caption":
1923
- self.tree.openElements.pop()
1924
- self.tree.openElements.pop()
1925
- self.tree.clearActiveFormattingElements()
1926
- self.parser.phase = self.parser.phases["inTable"]
1927
- else:
1928
- # innerHTML case
1929
- assert self.parser.innerHTML
1930
- self.parser.parseError()
1931
-
1932
- def endTagTable(self, token):
1933
- self.parser.parseError()
1934
- ignoreEndTag = self.ignoreEndTagCaption()
1935
- self.parser.phase.processEndTag(impliedTagToken("caption"))
1936
- if not ignoreEndTag:
1937
- return token
1938
-
1939
- def endTagIgnore(self, token):
1940
- self.parser.parseError("unexpected-end-tag", {"name": token["name"]})
1941
-
1942
- def endTagOther(self, token):
1943
- return self.parser.phases["inBody"].processEndTag(token)
1944
-
1945
- startTagHandler = _utils.MethodDispatcher([
1946
- ("html", Phase.startTagHtml),
1947
- (("caption", "col", "colgroup", "tbody", "td", "tfoot", "th",
1948
- "thead", "tr"), startTagTableElement)
1949
- ])
1950
- startTagHandler.default = startTagOther
1951
-
1952
- endTagHandler = _utils.MethodDispatcher([
1953
- ("caption", endTagCaption),
1954
- ("table", endTagTable),
1955
- (("body", "col", "colgroup", "html", "tbody", "td", "tfoot", "th",
1956
- "thead", "tr"), endTagIgnore)
1957
- ])
1958
- endTagHandler.default = endTagOther
1959
-
1960
- class InColumnGroupPhase(Phase):
1961
- # http://www.whatwg.org/specs/web-apps/current-work/#in-column
1962
- __slots__ = tuple()
1963
-
1964
- def ignoreEndTagColgroup(self):
1965
- return self.tree.openElements[-1].name == "html"
1966
-
1967
- def processEOF(self):
1968
- if self.tree.openElements[-1].name == "html":
1969
- assert self.parser.innerHTML
1970
- return
1971
- else:
1972
- ignoreEndTag = self.ignoreEndTagColgroup()
1973
- self.endTagColgroup(impliedTagToken("colgroup"))
1974
- if not ignoreEndTag:
1975
- return True
1976
-
1977
- def processCharacters(self, token):
1978
- ignoreEndTag = self.ignoreEndTagColgroup()
1979
- self.endTagColgroup(impliedTagToken("colgroup"))
1980
- if not ignoreEndTag:
1981
- return token
1982
-
1983
- def startTagCol(self, token):
1984
- self.tree.insertElement(token)
1985
- self.tree.openElements.pop()
1986
- token["selfClosingAcknowledged"] = True
1987
-
1988
- def startTagOther(self, token):
1989
- ignoreEndTag = self.ignoreEndTagColgroup()
1990
- self.endTagColgroup(impliedTagToken("colgroup"))
1991
- if not ignoreEndTag:
1992
- return token
1993
-
1994
- def endTagColgroup(self, token):
1995
- if self.ignoreEndTagColgroup():
1996
- # innerHTML case
1997
- assert self.parser.innerHTML
1998
- self.parser.parseError()
1999
- else:
2000
- self.tree.openElements.pop()
2001
- self.parser.phase = self.parser.phases["inTable"]
2002
-
2003
- def endTagCol(self, token):
2004
- self.parser.parseError("no-end-tag", {"name": "col"})
2005
-
2006
- def endTagOther(self, token):
2007
- ignoreEndTag = self.ignoreEndTagColgroup()
2008
- self.endTagColgroup(impliedTagToken("colgroup"))
2009
- if not ignoreEndTag:
2010
- return token
2011
-
2012
- startTagHandler = _utils.MethodDispatcher([
2013
- ("html", Phase.startTagHtml),
2014
- ("col", startTagCol)
2015
- ])
2016
- startTagHandler.default = startTagOther
2017
-
2018
- endTagHandler = _utils.MethodDispatcher([
2019
- ("colgroup", endTagColgroup),
2020
- ("col", endTagCol)
2021
- ])
2022
- endTagHandler.default = endTagOther
2023
-
2024
- class InTableBodyPhase(Phase):
2025
- # http://www.whatwg.org/specs/web-apps/current-work/#in-table0
2026
- __slots__ = tuple()
2027
-
2028
- # helper methods
2029
- def clearStackToTableBodyContext(self):
2030
- while self.tree.openElements[-1].name not in ("tbody", "tfoot",
2031
- "thead", "html"):
2032
- # self.parser.parseError("unexpected-implied-end-tag-in-table",
2033
- # {"name": self.tree.openElements[-1].name})
2034
- self.tree.openElements.pop()
2035
- if self.tree.openElements[-1].name == "html":
2036
- assert self.parser.innerHTML
2037
-
2038
- # the rest
2039
- def processEOF(self):
2040
- self.parser.phases["inTable"].processEOF()
2041
-
2042
- def processSpaceCharacters(self, token):
2043
- return self.parser.phases["inTable"].processSpaceCharacters(token)
2044
-
2045
- def processCharacters(self, token):
2046
- return self.parser.phases["inTable"].processCharacters(token)
2047
-
2048
- def startTagTr(self, token):
2049
- self.clearStackToTableBodyContext()
2050
- self.tree.insertElement(token)
2051
- self.parser.phase = self.parser.phases["inRow"]
2052
-
2053
- def startTagTableCell(self, token):
2054
- self.parser.parseError("unexpected-cell-in-table-body",
2055
- {"name": token["name"]})
2056
- self.startTagTr(impliedTagToken("tr", "StartTag"))
2057
- return token
2058
-
2059
- def startTagTableOther(self, token):
2060
- # XXX AT Any ideas on how to share this with endTagTable?
2061
- if (self.tree.elementInScope("tbody", variant="table") or
2062
- self.tree.elementInScope("thead", variant="table") or
2063
- self.tree.elementInScope("tfoot", variant="table")):
2064
- self.clearStackToTableBodyContext()
2065
- self.endTagTableRowGroup(
2066
- impliedTagToken(self.tree.openElements[-1].name))
2067
- return token
2068
- else:
2069
- # innerHTML case
2070
- assert self.parser.innerHTML
2071
- self.parser.parseError()
2072
-
2073
- def startTagOther(self, token):
2074
- return self.parser.phases["inTable"].processStartTag(token)
2075
-
2076
- def endTagTableRowGroup(self, token):
2077
- if self.tree.elementInScope(token["name"], variant="table"):
2078
- self.clearStackToTableBodyContext()
2079
- self.tree.openElements.pop()
2080
- self.parser.phase = self.parser.phases["inTable"]
2081
- else:
2082
- self.parser.parseError("unexpected-end-tag-in-table-body",
2083
- {"name": token["name"]})
2084
-
2085
- def endTagTable(self, token):
2086
- if (self.tree.elementInScope("tbody", variant="table") or
2087
- self.tree.elementInScope("thead", variant="table") or
2088
- self.tree.elementInScope("tfoot", variant="table")):
2089
- self.clearStackToTableBodyContext()
2090
- self.endTagTableRowGroup(
2091
- impliedTagToken(self.tree.openElements[-1].name))
2092
- return token
2093
- else:
2094
- # innerHTML case
2095
- assert self.parser.innerHTML
2096
- self.parser.parseError()
2097
-
2098
- def endTagIgnore(self, token):
2099
- self.parser.parseError("unexpected-end-tag-in-table-body",
2100
- {"name": token["name"]})
2101
-
2102
- def endTagOther(self, token):
2103
- return self.parser.phases["inTable"].processEndTag(token)
2104
-
2105
- startTagHandler = _utils.MethodDispatcher([
2106
- ("html", Phase.startTagHtml),
2107
- ("tr", startTagTr),
2108
- (("td", "th"), startTagTableCell),
2109
- (("caption", "col", "colgroup", "tbody", "tfoot", "thead"),
2110
- startTagTableOther)
2111
- ])
2112
- startTagHandler.default = startTagOther
2113
-
2114
- endTagHandler = _utils.MethodDispatcher([
2115
- (("tbody", "tfoot", "thead"), endTagTableRowGroup),
2116
- ("table", endTagTable),
2117
- (("body", "caption", "col", "colgroup", "html", "td", "th",
2118
- "tr"), endTagIgnore)
2119
- ])
2120
- endTagHandler.default = endTagOther
2121
-
2122
- class InRowPhase(Phase):
2123
- # http://www.whatwg.org/specs/web-apps/current-work/#in-row
2124
- __slots__ = tuple()
2125
-
2126
- # helper methods (XXX unify this with other table helper methods)
2127
- def clearStackToTableRowContext(self):
2128
- while self.tree.openElements[-1].name not in ("tr", "html"):
2129
- self.parser.parseError("unexpected-implied-end-tag-in-table-row",
2130
- {"name": self.tree.openElements[-1].name})
2131
- self.tree.openElements.pop()
2132
-
2133
- def ignoreEndTagTr(self):
2134
- return not self.tree.elementInScope("tr", variant="table")
2135
-
2136
- # the rest
2137
- def processEOF(self):
2138
- self.parser.phases["inTable"].processEOF()
2139
-
2140
- def processSpaceCharacters(self, token):
2141
- return self.parser.phases["inTable"].processSpaceCharacters(token)
2142
-
2143
- def processCharacters(self, token):
2144
- return self.parser.phases["inTable"].processCharacters(token)
2145
-
2146
- def startTagTableCell(self, token):
2147
- self.clearStackToTableRowContext()
2148
- self.tree.insertElement(token)
2149
- self.parser.phase = self.parser.phases["inCell"]
2150
- self.tree.activeFormattingElements.append(Marker)
2151
-
2152
- def startTagTableOther(self, token):
2153
- ignoreEndTag = self.ignoreEndTagTr()
2154
- self.endTagTr(impliedTagToken("tr"))
2155
- # XXX how are we sure it's always ignored in the innerHTML case?
2156
- if not ignoreEndTag:
2157
- return token
2158
-
2159
- def startTagOther(self, token):
2160
- return self.parser.phases["inTable"].processStartTag(token)
2161
-
2162
- def endTagTr(self, token):
2163
- if not self.ignoreEndTagTr():
2164
- self.clearStackToTableRowContext()
2165
- self.tree.openElements.pop()
2166
- self.parser.phase = self.parser.phases["inTableBody"]
2167
- else:
2168
- # innerHTML case
2169
- assert self.parser.innerHTML
2170
- self.parser.parseError()
2171
-
2172
- def endTagTable(self, token):
2173
- ignoreEndTag = self.ignoreEndTagTr()
2174
- self.endTagTr(impliedTagToken("tr"))
2175
- # Reprocess the current tag if the tr end tag was not ignored
2176
- # XXX how are we sure it's always ignored in the innerHTML case?
2177
- if not ignoreEndTag:
2178
- return token
2179
-
2180
- def endTagTableRowGroup(self, token):
2181
- if self.tree.elementInScope(token["name"], variant="table"):
2182
- self.endTagTr(impliedTagToken("tr"))
2183
- return token
2184
- else:
2185
- self.parser.parseError()
2186
-
2187
- def endTagIgnore(self, token):
2188
- self.parser.parseError("unexpected-end-tag-in-table-row",
2189
- {"name": token["name"]})
2190
-
2191
- def endTagOther(self, token):
2192
- return self.parser.phases["inTable"].processEndTag(token)
2193
-
2194
- startTagHandler = _utils.MethodDispatcher([
2195
- ("html", Phase.startTagHtml),
2196
- (("td", "th"), startTagTableCell),
2197
- (("caption", "col", "colgroup", "tbody", "tfoot", "thead",
2198
- "tr"), startTagTableOther)
2199
- ])
2200
- startTagHandler.default = startTagOther
2201
-
2202
- endTagHandler = _utils.MethodDispatcher([
2203
- ("tr", endTagTr),
2204
- ("table", endTagTable),
2205
- (("tbody", "tfoot", "thead"), endTagTableRowGroup),
2206
- (("body", "caption", "col", "colgroup", "html", "td", "th"),
2207
- endTagIgnore)
2208
- ])
2209
- endTagHandler.default = endTagOther
2210
-
2211
- class InCellPhase(Phase):
2212
- # http://www.whatwg.org/specs/web-apps/current-work/#in-cell
2213
- __slots__ = tuple()
2214
-
2215
- # helper
2216
- def closeCell(self):
2217
- if self.tree.elementInScope("td", variant="table"):
2218
- self.endTagTableCell(impliedTagToken("td"))
2219
- elif self.tree.elementInScope("th", variant="table"):
2220
- self.endTagTableCell(impliedTagToken("th"))
2221
-
2222
- # the rest
2223
- def processEOF(self):
2224
- self.parser.phases["inBody"].processEOF()
2225
-
2226
- def processCharacters(self, token):
2227
- return self.parser.phases["inBody"].processCharacters(token)
2228
-
2229
- def startTagTableOther(self, token):
2230
- if (self.tree.elementInScope("td", variant="table") or
2231
- self.tree.elementInScope("th", variant="table")):
2232
- self.closeCell()
2233
- return token
2234
- else:
2235
- # innerHTML case
2236
- assert self.parser.innerHTML
2237
- self.parser.parseError()
2238
-
2239
- def startTagOther(self, token):
2240
- return self.parser.phases["inBody"].processStartTag(token)
2241
-
2242
- def endTagTableCell(self, token):
2243
- if self.tree.elementInScope(token["name"], variant="table"):
2244
- self.tree.generateImpliedEndTags(token["name"])
2245
- if self.tree.openElements[-1].name != token["name"]:
2246
- self.parser.parseError("unexpected-cell-end-tag",
2247
- {"name": token["name"]})
2248
- while True:
2249
- node = self.tree.openElements.pop()
2250
- if node.name == token["name"]:
2251
- break
2252
- else:
2253
- self.tree.openElements.pop()
2254
- self.tree.clearActiveFormattingElements()
2255
- self.parser.phase = self.parser.phases["inRow"]
2256
- else:
2257
- self.parser.parseError("unexpected-end-tag", {"name": token["name"]})
2258
-
2259
- def endTagIgnore(self, token):
2260
- self.parser.parseError("unexpected-end-tag", {"name": token["name"]})
2261
-
2262
- def endTagImply(self, token):
2263
- if self.tree.elementInScope(token["name"], variant="table"):
2264
- self.closeCell()
2265
- return token
2266
- else:
2267
- # sometimes innerHTML case
2268
- self.parser.parseError()
2269
-
2270
- def endTagOther(self, token):
2271
- return self.parser.phases["inBody"].processEndTag(token)
2272
-
2273
- startTagHandler = _utils.MethodDispatcher([
2274
- ("html", Phase.startTagHtml),
2275
- (("caption", "col", "colgroup", "tbody", "td", "tfoot", "th",
2276
- "thead", "tr"), startTagTableOther)
2277
- ])
2278
- startTagHandler.default = startTagOther
2279
-
2280
- endTagHandler = _utils.MethodDispatcher([
2281
- (("td", "th"), endTagTableCell),
2282
- (("body", "caption", "col", "colgroup", "html"), endTagIgnore),
2283
- (("table", "tbody", "tfoot", "thead", "tr"), endTagImply)
2284
- ])
2285
- endTagHandler.default = endTagOther
2286
-
2287
- class InSelectPhase(Phase):
2288
- __slots__ = tuple()
2289
-
2290
- # http://www.whatwg.org/specs/web-apps/current-work/#in-select
2291
- def processEOF(self):
2292
- if self.tree.openElements[-1].name != "html":
2293
- self.parser.parseError("eof-in-select")
2294
- else:
2295
- assert self.parser.innerHTML
2296
-
2297
- def processCharacters(self, token):
2298
- if token["data"] == "\u0000":
2299
- return
2300
- self.tree.insertText(token["data"])
2301
-
2302
- def startTagOption(self, token):
2303
- # We need to imply </option> if <option> is the current node.
2304
- if self.tree.openElements[-1].name == "option":
2305
- self.tree.openElements.pop()
2306
- self.tree.insertElement(token)
2307
-
2308
- def startTagOptgroup(self, token):
2309
- if self.tree.openElements[-1].name == "option":
2310
- self.tree.openElements.pop()
2311
- if self.tree.openElements[-1].name == "optgroup":
2312
- self.tree.openElements.pop()
2313
- self.tree.insertElement(token)
2314
-
2315
- def startTagSelect(self, token):
2316
- self.parser.parseError("unexpected-select-in-select")
2317
- self.endTagSelect(impliedTagToken("select"))
2318
-
2319
- def startTagInput(self, token):
2320
- self.parser.parseError("unexpected-input-in-select")
2321
- if self.tree.elementInScope("select", variant="select"):
2322
- self.endTagSelect(impliedTagToken("select"))
2323
- return token
2324
- else:
2325
- assert self.parser.innerHTML
2326
-
2327
- def startTagScript(self, token):
2328
- return self.parser.phases["inHead"].processStartTag(token)
2329
-
2330
- def startTagOther(self, token):
2331
- self.parser.parseError("unexpected-start-tag-in-select",
2332
- {"name": token["name"]})
2333
-
2334
- def endTagOption(self, token):
2335
- if self.tree.openElements[-1].name == "option":
2336
- self.tree.openElements.pop()
2337
- else:
2338
- self.parser.parseError("unexpected-end-tag-in-select",
2339
- {"name": "option"})
2340
-
2341
- def endTagOptgroup(self, token):
2342
- # </optgroup> implicitly closes <option>
2343
- if (self.tree.openElements[-1].name == "option" and
2344
- self.tree.openElements[-2].name == "optgroup"):
2345
- self.tree.openElements.pop()
2346
- # It also closes </optgroup>
2347
- if self.tree.openElements[-1].name == "optgroup":
2348
- self.tree.openElements.pop()
2349
- # But nothing else
2350
- else:
2351
- self.parser.parseError("unexpected-end-tag-in-select",
2352
- {"name": "optgroup"})
2353
-
2354
- def endTagSelect(self, token):
2355
- if self.tree.elementInScope("select", variant="select"):
2356
- node = self.tree.openElements.pop()
2357
- while node.name != "select":
2358
- node = self.tree.openElements.pop()
2359
- self.parser.resetInsertionMode()
2360
- else:
2361
- # innerHTML case
2362
- assert self.parser.innerHTML
2363
- self.parser.parseError()
2364
-
2365
- def endTagOther(self, token):
2366
- self.parser.parseError("unexpected-end-tag-in-select",
2367
- {"name": token["name"]})
2368
-
2369
- startTagHandler = _utils.MethodDispatcher([
2370
- ("html", Phase.startTagHtml),
2371
- ("option", startTagOption),
2372
- ("optgroup", startTagOptgroup),
2373
- ("select", startTagSelect),
2374
- (("input", "keygen", "textarea"), startTagInput),
2375
- ("script", startTagScript)
2376
- ])
2377
- startTagHandler.default = startTagOther
2378
-
2379
- endTagHandler = _utils.MethodDispatcher([
2380
- ("option", endTagOption),
2381
- ("optgroup", endTagOptgroup),
2382
- ("select", endTagSelect)
2383
- ])
2384
- endTagHandler.default = endTagOther
2385
-
2386
- class InSelectInTablePhase(Phase):
2387
- __slots__ = tuple()
2388
-
2389
- def processEOF(self):
2390
- self.parser.phases["inSelect"].processEOF()
2391
-
2392
- def processCharacters(self, token):
2393
- return self.parser.phases["inSelect"].processCharacters(token)
2394
-
2395
- def startTagTable(self, token):
2396
- self.parser.parseError("unexpected-table-element-start-tag-in-select-in-table", {"name": token["name"]})
2397
- self.endTagOther(impliedTagToken("select"))
2398
- return token
2399
-
2400
- def startTagOther(self, token):
2401
- return self.parser.phases["inSelect"].processStartTag(token)
2402
-
2403
- def endTagTable(self, token):
2404
- self.parser.parseError("unexpected-table-element-end-tag-in-select-in-table", {"name": token["name"]})
2405
- if self.tree.elementInScope(token["name"], variant="table"):
2406
- self.endTagOther(impliedTagToken("select"))
2407
- return token
2408
-
2409
- def endTagOther(self, token):
2410
- return self.parser.phases["inSelect"].processEndTag(token)
2411
-
2412
- startTagHandler = _utils.MethodDispatcher([
2413
- (("caption", "table", "tbody", "tfoot", "thead", "tr", "td", "th"),
2414
- startTagTable)
2415
- ])
2416
- startTagHandler.default = startTagOther
2417
-
2418
- endTagHandler = _utils.MethodDispatcher([
2419
- (("caption", "table", "tbody", "tfoot", "thead", "tr", "td", "th"),
2420
- endTagTable)
2421
- ])
2422
- endTagHandler.default = endTagOther
2423
-
2424
- class InForeignContentPhase(Phase):
2425
- __slots__ = tuple()
2426
-
2427
- breakoutElements = frozenset(["b", "big", "blockquote", "body", "br",
2428
- "center", "code", "dd", "div", "dl", "dt",
2429
- "em", "embed", "h1", "h2", "h3",
2430
- "h4", "h5", "h6", "head", "hr", "i", "img",
2431
- "li", "listing", "menu", "meta", "nobr",
2432
- "ol", "p", "pre", "ruby", "s", "small",
2433
- "span", "strong", "strike", "sub", "sup",
2434
- "table", "tt", "u", "ul", "var"])
2435
-
2436
- def adjustSVGTagNames(self, token):
2437
- replacements = {"altglyph": "altGlyph",
2438
- "altglyphdef": "altGlyphDef",
2439
- "altglyphitem": "altGlyphItem",
2440
- "animatecolor": "animateColor",
2441
- "animatemotion": "animateMotion",
2442
- "animatetransform": "animateTransform",
2443
- "clippath": "clipPath",
2444
- "feblend": "feBlend",
2445
- "fecolormatrix": "feColorMatrix",
2446
- "fecomponenttransfer": "feComponentTransfer",
2447
- "fecomposite": "feComposite",
2448
- "feconvolvematrix": "feConvolveMatrix",
2449
- "fediffuselighting": "feDiffuseLighting",
2450
- "fedisplacementmap": "feDisplacementMap",
2451
- "fedistantlight": "feDistantLight",
2452
- "feflood": "feFlood",
2453
- "fefunca": "feFuncA",
2454
- "fefuncb": "feFuncB",
2455
- "fefuncg": "feFuncG",
2456
- "fefuncr": "feFuncR",
2457
- "fegaussianblur": "feGaussianBlur",
2458
- "feimage": "feImage",
2459
- "femerge": "feMerge",
2460
- "femergenode": "feMergeNode",
2461
- "femorphology": "feMorphology",
2462
- "feoffset": "feOffset",
2463
- "fepointlight": "fePointLight",
2464
- "fespecularlighting": "feSpecularLighting",
2465
- "fespotlight": "feSpotLight",
2466
- "fetile": "feTile",
2467
- "feturbulence": "feTurbulence",
2468
- "foreignobject": "foreignObject",
2469
- "glyphref": "glyphRef",
2470
- "lineargradient": "linearGradient",
2471
- "radialgradient": "radialGradient",
2472
- "textpath": "textPath"}
2473
-
2474
- if token["name"] in replacements:
2475
- token["name"] = replacements[token["name"]]
2476
-
2477
- def processCharacters(self, token):
2478
- if token["data"] == "\u0000":
2479
- token["data"] = "\uFFFD"
2480
- elif (self.parser.framesetOK and
2481
- any(char not in spaceCharacters for char in token["data"])):
2482
- self.parser.framesetOK = False
2483
- Phase.processCharacters(self, token)
2484
-
2485
- def processStartTag(self, token):
2486
- currentNode = self.tree.openElements[-1]
2487
- if (token["name"] in self.breakoutElements or
2488
- (token["name"] == "font" and
2489
- set(token["data"].keys()) & {"color", "face", "size"})):
2490
- self.parser.parseError("unexpected-html-element-in-foreign-content",
2491
- {"name": token["name"]})
2492
- while (self.tree.openElements[-1].namespace !=
2493
- self.tree.defaultNamespace and
2494
- not self.parser.isHTMLIntegrationPoint(self.tree.openElements[-1]) and
2495
- not self.parser.isMathMLTextIntegrationPoint(self.tree.openElements[-1])):
2496
- self.tree.openElements.pop()
2497
- return token
2498
-
2499
- else:
2500
- if currentNode.namespace == namespaces["mathml"]:
2501
- self.parser.adjustMathMLAttributes(token)
2502
- elif currentNode.namespace == namespaces["svg"]:
2503
- self.adjustSVGTagNames(token)
2504
- self.parser.adjustSVGAttributes(token)
2505
- self.parser.adjustForeignAttributes(token)
2506
- token["namespace"] = currentNode.namespace
2507
- self.tree.insertElement(token)
2508
- if token["selfClosing"]:
2509
- self.tree.openElements.pop()
2510
- token["selfClosingAcknowledged"] = True
2511
-
2512
- def processEndTag(self, token):
2513
- nodeIndex = len(self.tree.openElements) - 1
2514
- node = self.tree.openElements[-1]
2515
- if node.name.translate(asciiUpper2Lower) != token["name"]:
2516
- self.parser.parseError("unexpected-end-tag", {"name": token["name"]})
2517
-
2518
- while True:
2519
- if node.name.translate(asciiUpper2Lower) == token["name"]:
2520
- # XXX this isn't in the spec but it seems necessary
2521
- if self.parser.phase == self.parser.phases["inTableText"]:
2522
- self.parser.phase.flushCharacters()
2523
- self.parser.phase = self.parser.phase.originalPhase
2524
- while self.tree.openElements.pop() != node:
2525
- assert self.tree.openElements
2526
- new_token = None
2527
- break
2528
- nodeIndex -= 1
2529
-
2530
- node = self.tree.openElements[nodeIndex]
2531
- if node.namespace != self.tree.defaultNamespace:
2532
- continue
2533
- else:
2534
- new_token = self.parser.phase.processEndTag(token)
2535
- break
2536
- return new_token
2537
-
2538
- class AfterBodyPhase(Phase):
2539
- __slots__ = tuple()
2540
-
2541
- def processEOF(self):
2542
- # Stop parsing
2543
- pass
2544
-
2545
- def processComment(self, token):
2546
- # This is needed because data is to be appended to the <html> element
2547
- # here and not to whatever is currently open.
2548
- self.tree.insertComment(token, self.tree.openElements[0])
2549
-
2550
- def processCharacters(self, token):
2551
- self.parser.parseError("unexpected-char-after-body")
2552
- self.parser.phase = self.parser.phases["inBody"]
2553
- return token
2554
-
2555
- def startTagHtml(self, token):
2556
- return self.parser.phases["inBody"].processStartTag(token)
2557
-
2558
- def startTagOther(self, token):
2559
- self.parser.parseError("unexpected-start-tag-after-body",
2560
- {"name": token["name"]})
2561
- self.parser.phase = self.parser.phases["inBody"]
2562
- return token
2563
-
2564
- def endTagHtml(self, name):
2565
- if self.parser.innerHTML:
2566
- self.parser.parseError("unexpected-end-tag-after-body-innerhtml")
2567
- else:
2568
- self.parser.phase = self.parser.phases["afterAfterBody"]
2569
-
2570
- def endTagOther(self, token):
2571
- self.parser.parseError("unexpected-end-tag-after-body",
2572
- {"name": token["name"]})
2573
- self.parser.phase = self.parser.phases["inBody"]
2574
- return token
2575
-
2576
- startTagHandler = _utils.MethodDispatcher([
2577
- ("html", startTagHtml)
2578
- ])
2579
- startTagHandler.default = startTagOther
2580
-
2581
- endTagHandler = _utils.MethodDispatcher([("html", endTagHtml)])
2582
- endTagHandler.default = endTagOther
2583
-
2584
- class InFramesetPhase(Phase):
2585
- # http://www.whatwg.org/specs/web-apps/current-work/#in-frameset
2586
- __slots__ = tuple()
2587
-
2588
- def processEOF(self):
2589
- if self.tree.openElements[-1].name != "html":
2590
- self.parser.parseError("eof-in-frameset")
2591
- else:
2592
- assert self.parser.innerHTML
2593
-
2594
- def processCharacters(self, token):
2595
- self.parser.parseError("unexpected-char-in-frameset")
2596
-
2597
- def startTagFrameset(self, token):
2598
- self.tree.insertElement(token)
2599
-
2600
- def startTagFrame(self, token):
2601
- self.tree.insertElement(token)
2602
- self.tree.openElements.pop()
2603
-
2604
- def startTagNoframes(self, token):
2605
- return self.parser.phases["inBody"].processStartTag(token)
2606
-
2607
- def startTagOther(self, token):
2608
- self.parser.parseError("unexpected-start-tag-in-frameset",
2609
- {"name": token["name"]})
2610
-
2611
- def endTagFrameset(self, token):
2612
- if self.tree.openElements[-1].name == "html":
2613
- # innerHTML case
2614
- self.parser.parseError("unexpected-frameset-in-frameset-innerhtml")
2615
- else:
2616
- self.tree.openElements.pop()
2617
- if (not self.parser.innerHTML and
2618
- self.tree.openElements[-1].name != "frameset"):
2619
- # If we're not in innerHTML mode and the current node is not a
2620
- # "frameset" element (anymore) then switch.
2621
- self.parser.phase = self.parser.phases["afterFrameset"]
2622
-
2623
- def endTagOther(self, token):
2624
- self.parser.parseError("unexpected-end-tag-in-frameset",
2625
- {"name": token["name"]})
2626
-
2627
- startTagHandler = _utils.MethodDispatcher([
2628
- ("html", Phase.startTagHtml),
2629
- ("frameset", startTagFrameset),
2630
- ("frame", startTagFrame),
2631
- ("noframes", startTagNoframes)
2632
- ])
2633
- startTagHandler.default = startTagOther
2634
-
2635
- endTagHandler = _utils.MethodDispatcher([
2636
- ("frameset", endTagFrameset)
2637
- ])
2638
- endTagHandler.default = endTagOther
2639
-
2640
- class AfterFramesetPhase(Phase):
2641
- # http://www.whatwg.org/specs/web-apps/current-work/#after3
2642
- __slots__ = tuple()
2643
-
2644
- def processEOF(self):
2645
- # Stop parsing
2646
- pass
2647
-
2648
- def processCharacters(self, token):
2649
- self.parser.parseError("unexpected-char-after-frameset")
2650
-
2651
- def startTagNoframes(self, token):
2652
- return self.parser.phases["inHead"].processStartTag(token)
2653
-
2654
- def startTagOther(self, token):
2655
- self.parser.parseError("unexpected-start-tag-after-frameset",
2656
- {"name": token["name"]})
2657
-
2658
- def endTagHtml(self, token):
2659
- self.parser.phase = self.parser.phases["afterAfterFrameset"]
2660
-
2661
- def endTagOther(self, token):
2662
- self.parser.parseError("unexpected-end-tag-after-frameset",
2663
- {"name": token["name"]})
2664
-
2665
- startTagHandler = _utils.MethodDispatcher([
2666
- ("html", Phase.startTagHtml),
2667
- ("noframes", startTagNoframes)
2668
- ])
2669
- startTagHandler.default = startTagOther
2670
-
2671
- endTagHandler = _utils.MethodDispatcher([
2672
- ("html", endTagHtml)
2673
- ])
2674
- endTagHandler.default = endTagOther
2675
-
2676
- class AfterAfterBodyPhase(Phase):
2677
- __slots__ = tuple()
2678
-
2679
- def processEOF(self):
2680
- pass
2681
-
2682
- def processComment(self, token):
2683
- self.tree.insertComment(token, self.tree.document)
2684
-
2685
- def processSpaceCharacters(self, token):
2686
- return self.parser.phases["inBody"].processSpaceCharacters(token)
2687
-
2688
- def processCharacters(self, token):
2689
- self.parser.parseError("expected-eof-but-got-char")
2690
- self.parser.phase = self.parser.phases["inBody"]
2691
- return token
2692
-
2693
- def startTagHtml(self, token):
2694
- return self.parser.phases["inBody"].processStartTag(token)
2695
-
2696
- def startTagOther(self, token):
2697
- self.parser.parseError("expected-eof-but-got-start-tag",
2698
- {"name": token["name"]})
2699
- self.parser.phase = self.parser.phases["inBody"]
2700
- return token
2701
-
2702
- def processEndTag(self, token):
2703
- self.parser.parseError("expected-eof-but-got-end-tag",
2704
- {"name": token["name"]})
2705
- self.parser.phase = self.parser.phases["inBody"]
2706
- return token
2707
-
2708
- startTagHandler = _utils.MethodDispatcher([
2709
- ("html", startTagHtml)
2710
- ])
2711
- startTagHandler.default = startTagOther
2712
-
2713
- class AfterAfterFramesetPhase(Phase):
2714
- __slots__ = tuple()
2715
-
2716
- def processEOF(self):
2717
- pass
2718
-
2719
- def processComment(self, token):
2720
- self.tree.insertComment(token, self.tree.document)
2721
-
2722
- def processSpaceCharacters(self, token):
2723
- return self.parser.phases["inBody"].processSpaceCharacters(token)
2724
-
2725
- def processCharacters(self, token):
2726
- self.parser.parseError("expected-eof-but-got-char")
2727
-
2728
- def startTagHtml(self, token):
2729
- return self.parser.phases["inBody"].processStartTag(token)
2730
-
2731
- def startTagNoFrames(self, token):
2732
- return self.parser.phases["inHead"].processStartTag(token)
2733
-
2734
- def startTagOther(self, token):
2735
- self.parser.parseError("expected-eof-but-got-start-tag",
2736
- {"name": token["name"]})
2737
-
2738
- def processEndTag(self, token):
2739
- self.parser.parseError("expected-eof-but-got-end-tag",
2740
- {"name": token["name"]})
2741
-
2742
- startTagHandler = _utils.MethodDispatcher([
2743
- ("html", startTagHtml),
2744
- ("noframes", startTagNoFrames)
2745
- ])
2746
- startTagHandler.default = startTagOther
2747
-
2748
- # pylint:enable=unused-argument
2749
-
2750
- return {
2751
- "initial": InitialPhase,
2752
- "beforeHtml": BeforeHtmlPhase,
2753
- "beforeHead": BeforeHeadPhase,
2754
- "inHead": InHeadPhase,
2755
- "inHeadNoscript": InHeadNoscriptPhase,
2756
- "afterHead": AfterHeadPhase,
2757
- "inBody": InBodyPhase,
2758
- "text": TextPhase,
2759
- "inTable": InTablePhase,
2760
- "inTableText": InTableTextPhase,
2761
- "inCaption": InCaptionPhase,
2762
- "inColumnGroup": InColumnGroupPhase,
2763
- "inTableBody": InTableBodyPhase,
2764
- "inRow": InRowPhase,
2765
- "inCell": InCellPhase,
2766
- "inSelect": InSelectPhase,
2767
- "inSelectInTable": InSelectInTablePhase,
2768
- "inForeignContent": InForeignContentPhase,
2769
- "afterBody": AfterBodyPhase,
2770
- "inFrameset": InFramesetPhase,
2771
- "afterFrameset": AfterFramesetPhase,
2772
- "afterAfterBody": AfterAfterBodyPhase,
2773
- "afterAfterFrameset": AfterAfterFramesetPhase,
2774
- # XXX after after frameset
2775
- }
2776
-
2777
-
2778
- def adjust_attributes(token, replacements):
2779
- needs_adjustment = viewkeys(token['data']) & viewkeys(replacements)
2780
- if needs_adjustment:
2781
- token['data'] = type(token['data'])((replacements.get(k, k), v)
2782
- for k, v in token['data'].items())
2783
-
2784
-
2785
- def impliedTagToken(name, type="EndTag", attributes=None,
2786
- selfClosing=False):
2787
- if attributes is None:
2788
- attributes = {}
2789
- return {"type": tokenTypes[type], "name": name, "data": attributes,
2790
- "selfClosing": selfClosing}
2791
-
2792
-
2793
- class ParseError(Exception):
2794
- """Error in parsed document"""
2795
- pass