vibego 0.2.35__tar.gz → 0.2.37__tar.gz

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.

Potentially problematic release.


This version of vibego might be problematic. Click here for more details.

Files changed (464) hide show
  1. {vibego-0.2.35 → vibego-0.2.37}/PKG-INFO +1 -1
  2. {vibego-0.2.35 → vibego-0.2.37}/bot.py +154 -57
  3. {vibego-0.2.35 → vibego-0.2.37}/pyproject.toml +2 -2
  4. vibego-0.2.37/tests/test_markdown_guard.py +92 -0
  5. {vibego-0.2.35 → vibego-0.2.37}/tests/test_telegram_markdown_renderer.py +39 -1
  6. {vibego-0.2.35 → vibego-0.2.37}/vibego.egg-info/PKG-INFO +1 -1
  7. {vibego-0.2.35 → vibego-0.2.37}/vibego_cli/__init__.py +1 -1
  8. vibego-0.2.35/tests/test_markdown_guard.py +0 -43
  9. {vibego-0.2.35 → vibego-0.2.37}/MANIFEST.in +0 -0
  10. {vibego-0.2.35 → vibego-0.2.37}/README.md +0 -0
  11. {vibego-0.2.35 → vibego-0.2.37}/config/projects.json.example +0 -0
  12. {vibego-0.2.35 → vibego-0.2.37}/logging_setup.py +0 -0
  13. {vibego-0.2.35 → vibego-0.2.37}/master.py +0 -0
  14. {vibego-0.2.35 → vibego-0.2.37}/project_repository.py +0 -0
  15. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/__init__.py +0 -0
  16. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/__main__.py +0 -0
  17. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/__pip-runner__.py +0 -0
  18. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/__init__.py +0 -0
  19. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/build_env.py +0 -0
  20. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cache.py +0 -0
  21. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/__init__.py +0 -0
  22. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/autocompletion.py +0 -0
  23. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/base_command.py +0 -0
  24. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/cmdoptions.py +0 -0
  25. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/command_context.py +0 -0
  26. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/index_command.py +0 -0
  27. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/main.py +0 -0
  28. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/main_parser.py +0 -0
  29. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/parser.py +0 -0
  30. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/progress_bars.py +0 -0
  31. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/req_command.py +0 -0
  32. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/spinners.py +0 -0
  33. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/cli/status_codes.py +0 -0
  34. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/__init__.py +0 -0
  35. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/cache.py +0 -0
  36. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/check.py +0 -0
  37. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/completion.py +0 -0
  38. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/configuration.py +0 -0
  39. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/debug.py +0 -0
  40. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/download.py +0 -0
  41. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/freeze.py +0 -0
  42. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/hash.py +0 -0
  43. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/help.py +0 -0
  44. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/index.py +0 -0
  45. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/inspect.py +0 -0
  46. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/install.py +0 -0
  47. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/list.py +0 -0
  48. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/lock.py +0 -0
  49. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/search.py +0 -0
  50. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/show.py +0 -0
  51. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/uninstall.py +0 -0
  52. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/commands/wheel.py +0 -0
  53. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/configuration.py +0 -0
  54. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/__init__.py +0 -0
  55. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/base.py +0 -0
  56. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/installed.py +0 -0
  57. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/sdist.py +0 -0
  58. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/distributions/wheel.py +0 -0
  59. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/exceptions.py +0 -0
  60. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/__init__.py +0 -0
  61. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/collector.py +0 -0
  62. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/package_finder.py +0 -0
  63. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/index/sources.py +0 -0
  64. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/__init__.py +0 -0
  65. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/_distutils.py +0 -0
  66. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/_sysconfig.py +0 -0
  67. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/locations/base.py +0 -0
  68. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/main.py +0 -0
  69. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/__init__.py +0 -0
  70. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/_json.py +0 -0
  71. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/base.py +0 -0
  72. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/__init__.py +0 -0
  73. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_compat.py +0 -0
  74. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_dists.py +0 -0
  75. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/importlib/_envs.py +0 -0
  76. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/metadata/pkg_resources.py +0 -0
  77. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/__init__.py +0 -0
  78. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/candidate.py +0 -0
  79. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/direct_url.py +0 -0
  80. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/format_control.py +0 -0
  81. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/index.py +0 -0
  82. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/installation_report.py +0 -0
  83. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/link.py +0 -0
  84. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/pylock.py +0 -0
  85. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/scheme.py +0 -0
  86. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/search_scope.py +0 -0
  87. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/selection_prefs.py +0 -0
  88. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/target_python.py +0 -0
  89. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/models/wheel.py +0 -0
  90. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/__init__.py +0 -0
  91. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/auth.py +0 -0
  92. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/cache.py +0 -0
  93. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/download.py +0 -0
  94. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/lazy_wheel.py +0 -0
  95. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/session.py +0 -0
  96. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/utils.py +0 -0
  97. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/network/xmlrpc.py +0 -0
  98. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/__init__.py +0 -0
  99. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/__init__.py +0 -0
  100. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/build_tracker.py +0 -0
  101. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata.py +0 -0
  102. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata_editable.py +0 -0
  103. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/metadata_legacy.py +0 -0
  104. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel.py +0 -0
  105. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel_editable.py +0 -0
  106. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/build/wheel_legacy.py +0 -0
  107. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/check.py +0 -0
  108. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/freeze.py +0 -0
  109. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/__init__.py +0 -0
  110. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/editable_legacy.py +0 -0
  111. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/install/wheel.py +0 -0
  112. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/operations/prepare.py +0 -0
  113. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/pyproject.py +0 -0
  114. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/__init__.py +0 -0
  115. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/constructors.py +0 -0
  116. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_dependency_group.py +0 -0
  117. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_file.py +0 -0
  118. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_install.py +0 -0
  119. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_set.py +0 -0
  120. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/req/req_uninstall.py +0 -0
  121. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/__init__.py +0 -0
  122. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/base.py +0 -0
  123. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/legacy/__init__.py +0 -0
  124. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/legacy/resolver.py +0 -0
  125. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/__init__.py +0 -0
  126. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/base.py +0 -0
  127. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/candidates.py +0 -0
  128. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/factory.py +0 -0
  129. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py +0 -0
  130. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/provider.py +0 -0
  131. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/reporter.py +0 -0
  132. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/requirements.py +0 -0
  133. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/resolution/resolvelib/resolver.py +0 -0
  134. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/self_outdated_check.py +0 -0
  135. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/__init__.py +0 -0
  136. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/_jaraco_text.py +0 -0
  137. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/_log.py +0 -0
  138. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/appdirs.py +0 -0
  139. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/compat.py +0 -0
  140. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/compatibility_tags.py +0 -0
  141. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/datetime.py +0 -0
  142. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/deprecation.py +0 -0
  143. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/direct_url_helpers.py +0 -0
  144. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/egg_link.py +0 -0
  145. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/entrypoints.py +0 -0
  146. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/filesystem.py +0 -0
  147. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/filetypes.py +0 -0
  148. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/glibc.py +0 -0
  149. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/hashes.py +0 -0
  150. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/logging.py +0 -0
  151. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/misc.py +0 -0
  152. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/packaging.py +0 -0
  153. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/retry.py +0 -0
  154. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/setuptools_build.py +0 -0
  155. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/subprocess.py +0 -0
  156. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/temp_dir.py +0 -0
  157. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/unpacking.py +0 -0
  158. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/urls.py +0 -0
  159. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/virtualenv.py +0 -0
  160. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/utils/wheel.py +0 -0
  161. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/__init__.py +0 -0
  162. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/bazaar.py +0 -0
  163. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/git.py +0 -0
  164. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/mercurial.py +0 -0
  165. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/subversion.py +0 -0
  166. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/vcs/versioncontrol.py +0 -0
  167. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_internal/wheel_builder.py +0 -0
  168. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/__init__.py +0 -0
  169. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/__init__.py +0 -0
  170. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/_cmd.py +0 -0
  171. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/adapter.py +0 -0
  172. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/cache.py +0 -0
  173. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/__init__.py +0 -0
  174. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py +0 -0
  175. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py +0 -0
  176. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/controller.py +0 -0
  177. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/filewrapper.py +0 -0
  178. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/heuristics.py +0 -0
  179. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/serialize.py +0 -0
  180. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/cachecontrol/wrapper.py +0 -0
  181. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/__init__.py +0 -0
  182. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/__main__.py +0 -0
  183. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/certifi/core.py +0 -0
  184. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__init__.py +0 -0
  185. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/__main__.py +0 -0
  186. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_implementation.py +0 -0
  187. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_lint_dependency_groups.py +0 -0
  188. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_pip_wrapper.py +0 -0
  189. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/dependency_groups/_toml_compat.py +0 -0
  190. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/__init__.py +0 -0
  191. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/compat.py +0 -0
  192. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/resources.py +0 -0
  193. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/scripts.py +0 -0
  194. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distlib/util.py +0 -0
  195. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/__init__.py +0 -0
  196. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/__main__.py +0 -0
  197. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/distro/distro.py +0 -0
  198. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/__init__.py +0 -0
  199. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/codec.py +0 -0
  200. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/compat.py +0 -0
  201. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/core.py +0 -0
  202. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/idnadata.py +0 -0
  203. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/intranges.py +0 -0
  204. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/package_data.py +0 -0
  205. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/idna/uts46data.py +0 -0
  206. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/__init__.py +0 -0
  207. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/exceptions.py +0 -0
  208. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/ext.py +0 -0
  209. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/msgpack/fallback.py +0 -0
  210. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/__init__.py +0 -0
  211. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_elffile.py +0 -0
  212. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_manylinux.py +0 -0
  213. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_musllinux.py +0 -0
  214. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_parser.py +0 -0
  215. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_structures.py +0 -0
  216. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/_tokenizer.py +0 -0
  217. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/__init__.py +0 -0
  218. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/licenses/_spdx.py +0 -0
  219. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/markers.py +0 -0
  220. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/metadata.py +0 -0
  221. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/requirements.py +0 -0
  222. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/specifiers.py +0 -0
  223. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/tags.py +0 -0
  224. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/utils.py +0 -0
  225. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/packaging/version.py +0 -0
  226. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pkg_resources/__init__.py +0 -0
  227. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/__init__.py +0 -0
  228. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/__main__.py +0 -0
  229. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/android.py +0 -0
  230. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/api.py +0 -0
  231. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/macos.py +0 -0
  232. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/unix.py +0 -0
  233. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/version.py +0 -0
  234. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/platformdirs/windows.py +0 -0
  235. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/__init__.py +0 -0
  236. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/__main__.py +0 -0
  237. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/console.py +0 -0
  238. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/filter.py +0 -0
  239. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/filters/__init__.py +0 -0
  240. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatter.py +0 -0
  241. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/__init__.py +0 -0
  242. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/formatters/_mapping.py +0 -0
  243. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexer.py +0 -0
  244. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/__init__.py +0 -0
  245. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/_mapping.py +0 -0
  246. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/lexers/python.py +0 -0
  247. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/modeline.py +0 -0
  248. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/plugin.py +0 -0
  249. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/regexopt.py +0 -0
  250. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/scanner.py +0 -0
  251. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/sphinxext.py +0 -0
  252. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/style.py +0 -0
  253. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/styles/__init__.py +0 -0
  254. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/styles/_mapping.py +0 -0
  255. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/token.py +0 -0
  256. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/unistring.py +0 -0
  257. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pygments/util.py +0 -0
  258. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/__init__.py +0 -0
  259. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_impl.py +0 -0
  260. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py +0 -0
  261. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py +0 -0
  262. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/__init__.py +0 -0
  263. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/__version__.py +0 -0
  264. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/_internal_utils.py +0 -0
  265. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/adapters.py +0 -0
  266. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/api.py +0 -0
  267. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/auth.py +0 -0
  268. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/certs.py +0 -0
  269. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/compat.py +0 -0
  270. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/cookies.py +0 -0
  271. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/exceptions.py +0 -0
  272. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/help.py +0 -0
  273. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/hooks.py +0 -0
  274. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/models.py +0 -0
  275. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/packages.py +0 -0
  276. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/sessions.py +0 -0
  277. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/status_codes.py +0 -0
  278. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/structures.py +0 -0
  279. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/requests/utils.py +0 -0
  280. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/__init__.py +0 -0
  281. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/providers.py +0 -0
  282. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/reporters.py +0 -0
  283. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/__init__.py +0 -0
  284. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/abstract.py +0 -0
  285. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/criterion.py +0 -0
  286. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/exceptions.py +0 -0
  287. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/resolvers/resolution.py +0 -0
  288. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/resolvelib/structs.py +0 -0
  289. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/__init__.py +0 -0
  290. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/__main__.py +0 -0
  291. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_cell_widths.py +0 -0
  292. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_emoji_codes.py +0 -0
  293. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_emoji_replace.py +0 -0
  294. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_export_format.py +0 -0
  295. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_extension.py +0 -0
  296. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_fileno.py +0 -0
  297. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_inspect.py +0 -0
  298. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_log_render.py +0 -0
  299. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_loop.py +0 -0
  300. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_null_file.py +0 -0
  301. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_palettes.py +0 -0
  302. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_pick.py +0 -0
  303. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_ratio.py +0 -0
  304. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_spinners.py +0 -0
  305. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_stack.py +0 -0
  306. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_timer.py +0 -0
  307. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_win32_console.py +0 -0
  308. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_windows.py +0 -0
  309. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_windows_renderer.py +0 -0
  310. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/_wrap.py +0 -0
  311. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/abc.py +0 -0
  312. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/align.py +0 -0
  313. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/ansi.py +0 -0
  314. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/bar.py +0 -0
  315. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/box.py +0 -0
  316. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/cells.py +0 -0
  317. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/color.py +0 -0
  318. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/color_triplet.py +0 -0
  319. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/columns.py +0 -0
  320. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/console.py +0 -0
  321. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/constrain.py +0 -0
  322. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/containers.py +0 -0
  323. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/control.py +0 -0
  324. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/default_styles.py +0 -0
  325. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/diagnose.py +0 -0
  326. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/emoji.py +0 -0
  327. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/errors.py +0 -0
  328. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/file_proxy.py +0 -0
  329. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/filesize.py +0 -0
  330. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/highlighter.py +0 -0
  331. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/json.py +0 -0
  332. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/jupyter.py +0 -0
  333. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/layout.py +0 -0
  334. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/live.py +0 -0
  335. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/live_render.py +0 -0
  336. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/logging.py +0 -0
  337. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/markup.py +0 -0
  338. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/measure.py +0 -0
  339. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/padding.py +0 -0
  340. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/pager.py +0 -0
  341. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/palette.py +0 -0
  342. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/panel.py +0 -0
  343. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/pretty.py +0 -0
  344. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/progress.py +0 -0
  345. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/progress_bar.py +0 -0
  346. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/prompt.py +0 -0
  347. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/protocol.py +0 -0
  348. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/region.py +0 -0
  349. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/repr.py +0 -0
  350. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/rule.py +0 -0
  351. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/scope.py +0 -0
  352. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/screen.py +0 -0
  353. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/segment.py +0 -0
  354. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/spinner.py +0 -0
  355. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/status.py +0 -0
  356. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/style.py +0 -0
  357. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/styled.py +0 -0
  358. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/syntax.py +0 -0
  359. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/table.py +0 -0
  360. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/terminal_theme.py +0 -0
  361. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/text.py +0 -0
  362. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/theme.py +0 -0
  363. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/themes.py +0 -0
  364. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/traceback.py +0 -0
  365. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/rich/tree.py +0 -0
  366. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/__init__.py +0 -0
  367. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_parser.py +0 -0
  368. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_re.py +0 -0
  369. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli/_types.py +0 -0
  370. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli_w/__init__.py +0 -0
  371. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/tomli_w/_writer.py +0 -0
  372. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/__init__.py +0 -0
  373. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_api.py +0 -0
  374. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_macos.py +0 -0
  375. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_openssl.py +0 -0
  376. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_ssl_constants.py +0 -0
  377. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/truststore/_windows.py +0 -0
  378. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/__init__.py +0 -0
  379. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/_collections.py +0 -0
  380. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/_version.py +0 -0
  381. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/connection.py +0 -0
  382. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/connectionpool.py +0 -0
  383. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/__init__.py +0 -0
  384. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py +0 -0
  385. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py +0 -0
  386. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py +0 -0
  387. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py +0 -0
  388. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/appengine.py +0 -0
  389. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py +0 -0
  390. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py +0 -0
  391. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/securetransport.py +0 -0
  392. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/contrib/socks.py +0 -0
  393. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/exceptions.py +0 -0
  394. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/fields.py +0 -0
  395. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/filepost.py +0 -0
  396. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/__init__.py +0 -0
  397. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py +0 -0
  398. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py +0 -0
  399. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py +0 -0
  400. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/packages/six.py +0 -0
  401. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/poolmanager.py +0 -0
  402. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/request.py +0 -0
  403. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/response.py +0 -0
  404. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/__init__.py +0 -0
  405. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/connection.py +0 -0
  406. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/proxy.py +0 -0
  407. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/queue.py +0 -0
  408. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/request.py +0 -0
  409. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/response.py +0 -0
  410. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/retry.py +0 -0
  411. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssl_.py +0 -0
  412. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py +0 -0
  413. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/ssltransport.py +0 -0
  414. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/timeout.py +0 -0
  415. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/url.py +0 -0
  416. {vibego-0.2.35 → vibego-0.2.37}/scripts/.venv/lib/python3.14/site-packages/pip/_vendor/urllib3/util/wait.py +0 -0
  417. {vibego-0.2.35 → vibego-0.2.37}/scripts/__init__.py +0 -0
  418. {vibego-0.2.35 → vibego-0.2.37}/scripts/bump_version.sh +0 -0
  419. {vibego-0.2.35 → vibego-0.2.37}/scripts/log_writer.py +0 -0
  420. {vibego-0.2.35 → vibego-0.2.37}/scripts/master_healthcheck.py +0 -0
  421. {vibego-0.2.35 → vibego-0.2.37}/scripts/models/claudecode.sh +0 -0
  422. {vibego-0.2.35 → vibego-0.2.37}/scripts/models/codex.sh +0 -0
  423. {vibego-0.2.35 → vibego-0.2.37}/scripts/models/common.sh +0 -0
  424. {vibego-0.2.35 → vibego-0.2.37}/scripts/models/gemini.sh +0 -0
  425. {vibego-0.2.35 → vibego-0.2.37}/scripts/publish.sh +0 -0
  426. {vibego-0.2.35 → vibego-0.2.37}/scripts/requirements.txt +0 -0
  427. {vibego-0.2.35 → vibego-0.2.37}/scripts/run_bot.sh +0 -0
  428. {vibego-0.2.35 → vibego-0.2.37}/scripts/start.sh +0 -0
  429. {vibego-0.2.35 → vibego-0.2.37}/scripts/start_tmux_codex.sh +0 -0
  430. {vibego-0.2.35 → vibego-0.2.37}/scripts/stop_all.sh +0 -0
  431. {vibego-0.2.35 → vibego-0.2.37}/scripts/stop_bot.sh +0 -0
  432. {vibego-0.2.35 → vibego-0.2.37}/scripts/test_deps_check.sh +0 -0
  433. {vibego-0.2.35 → vibego-0.2.37}/setup.cfg +0 -0
  434. {vibego-0.2.35 → vibego-0.2.37}/tasks/__init__.py +0 -0
  435. {vibego-0.2.35 → vibego-0.2.37}/tasks/commands.py +0 -0
  436. {vibego-0.2.35 → vibego-0.2.37}/tasks/constants.py +0 -0
  437. {vibego-0.2.35 → vibego-0.2.37}/tasks/fsm.py +0 -0
  438. {vibego-0.2.35 → vibego-0.2.37}/tasks/models.py +0 -0
  439. {vibego-0.2.35 → vibego-0.2.37}/tasks/service.py +0 -0
  440. {vibego-0.2.35 → vibego-0.2.37}/telegram_markdown/__init__.py +0 -0
  441. {vibego-0.2.35 → vibego-0.2.37}/tests/test_auto_compact.py +0 -0
  442. {vibego-0.2.35 → vibego-0.2.37}/tests/test_chat_menu_buttons.py +0 -0
  443. {vibego-0.2.35 → vibego-0.2.37}/tests/test_claudecode_jsonl.py +0 -0
  444. {vibego-0.2.35 → vibego-0.2.37}/tests/test_long_poll_mechanism.py +0 -0
  445. {vibego-0.2.35 → vibego-0.2.37}/tests/test_master_project_management.py +0 -0
  446. {vibego-0.2.35 → vibego-0.2.37}/tests/test_master_restart.py +0 -0
  447. {vibego-0.2.35 → vibego-0.2.37}/tests/test_numbered_reply_inputs.py +0 -0
  448. {vibego-0.2.35 → vibego-0.2.37}/tests/test_plan_progress.py +0 -0
  449. {vibego-0.2.35 → vibego-0.2.37}/tests/test_task_create_flow.py +0 -0
  450. {vibego-0.2.35 → vibego-0.2.37}/tests/test_task_description.py +0 -0
  451. {vibego-0.2.35 → vibego-0.2.37}/tests/test_task_detail_back.py +0 -0
  452. {vibego-0.2.35 → vibego-0.2.37}/tests/test_task_list_entry.py +0 -0
  453. {vibego-0.2.35 → vibego-0.2.37}/tests/test_unescape_markdown.py +0 -0
  454. {vibego-0.2.35 → vibego-0.2.37}/tests/test_version_display.py +0 -0
  455. {vibego-0.2.35 → vibego-0.2.37}/vibego.egg-info/SOURCES.txt +0 -0
  456. {vibego-0.2.35 → vibego-0.2.37}/vibego.egg-info/dependency_links.txt +0 -0
  457. {vibego-0.2.35 → vibego-0.2.37}/vibego.egg-info/entry_points.txt +0 -0
  458. {vibego-0.2.35 → vibego-0.2.37}/vibego.egg-info/requires.txt +0 -0
  459. {vibego-0.2.35 → vibego-0.2.37}/vibego.egg-info/top_level.txt +0 -0
  460. {vibego-0.2.35 → vibego-0.2.37}/vibego_cli/__main__.py +0 -0
  461. {vibego-0.2.35 → vibego-0.2.37}/vibego_cli/config.py +0 -0
  462. {vibego-0.2.35 → vibego-0.2.37}/vibego_cli/data/worker_requirements.txt +0 -0
  463. {vibego-0.2.35 → vibego-0.2.37}/vibego_cli/deps.py +0 -0
  464. {vibego-0.2.35 → vibego-0.2.37}/vibego_cli/main.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibego
3
- Version: 0.2.35
3
+ Version: 0.2.37
4
4
  Summary: vibego CLI:用于初始化与管理 Telegram Master Bot 的工具
5
5
  Author: Hypha
6
6
  License-Expression: LicenseRef-Proprietary
@@ -482,6 +482,11 @@ _ESCAPED_CODE_BLOCK_PATTERN = re.compile(
482
482
  re.DOTALL
483
483
  )
484
484
 
485
+ _OPTIMIZE_CHECKBOX_PATTERN = re.compile(r"\\\[\s+\\\]")
486
+ _OPTIMIZE_DOT_PATTERN = re.compile(
487
+ r"(?P<prefix>[0-9A-Za-z\u4e00-\u9fff])\\\.(?=(?:\s|$|[)\]\u3002\uff0c\uff1b\uff1a\uff01\uff1f]))"
488
+ )
489
+
485
490
 
486
491
  def _is_already_escaped(text: str) -> bool:
487
492
  """检测文本是否已经包含 MarkdownV2 转义字符。
@@ -534,68 +539,46 @@ def _unescape_markdown_v2(text: str) -> str:
534
539
  return re.sub(r"\\([_*\[\]()~`>#+=|{}.!:-])", r"\1", text)
535
540
 
536
541
 
537
- def _unescape_if_already_escaped(text: str) -> str:
538
- """智能检测并清理预转义文本,特别保护代码块。
539
-
540
- 改进的分段处理策略:
541
- 1. 先识别已转义的代码块(\`\`\`...\`\`\` 和 \`...\`)
542
- 2. 对这些代码块先反转义边界反引号,变成正常代码块
543
- 3. 然后用正常的 CODE_SEGMENT_RE 识别代码块
544
- 4. 只对非代码块的普通文本进行反转义
545
- 5. 代码块内容保持转义状态(因为是代码本身)
546
- 6. 重新组合所有段落
547
-
548
- Args:
549
- text: 待处理的文本
550
-
551
- Returns:
552
- 处理后的文本(如未检测到预转义,返回原文本)
553
- """
542
+ def _force_unescape_markdown(text: str) -> str:
543
+ """强制移除 MarkdownV2 转义,同时保护代码块语法不被破坏。"""
554
544
  if not text:
555
545
  return text
556
546
 
557
- # 快速检测:如果没有任何转义字符,直接返回
558
- if not _is_already_escaped(text):
559
- return text
560
-
561
- # 第一步:处理已转义的代码块,将边界反引号反转义
562
- # 这样后续可以用正常的 CODE_SEGMENT_RE 识别它们
563
547
  processed = text
564
-
565
- # 先标记所有已转义的代码块,用占位符替换
566
548
  code_blocks: list[str] = []
567
549
 
568
550
  def _preserve_code_block(match: re.Match[str]) -> str:
569
- """保存代码块并返回占位符"""
551
+ """临时替换代码块,防止内部字符被错误反转义。"""
570
552
  block = match.group(0)
571
- # 代码块边界的反引号需要反转义,但内容保持不变
572
- # 例如:\`\`\`bash\npython -m vibego\_cli\`\`\`
573
- # -> ```bash\npython -m vibego\_cli```
574
553
  if block.startswith(r"\`\`\`"):
575
- # 多行代码块
576
- unescaped_block = block.replace(r"\`", "`", 6) # 只替换前后各3个反引号
554
+ # 多行代码块保留内容,只修复边界反引号
555
+ unescaped_block = block.replace(r"\`", "`", 6)
577
556
  else:
578
- # 单行代码块
579
- unescaped_block = block.replace(r"\`", "`", 2) # 只替换前后各1个反引号
557
+ # 单行代码块同理处理首尾反引号
558
+ unescaped_block = block.replace(r"\`", "`", 2)
580
559
 
581
560
  placeholder = f"__CODE_BLOCK_{len(code_blocks)}__"
582
561
  code_blocks.append(unescaped_block)
583
562
  return placeholder
584
563
 
585
564
  processed = _ESCAPED_CODE_BLOCK_PATTERN.sub(_preserve_code_block, processed)
565
+ processed = _unescape_markdown_v2(processed)
586
566
 
587
- # 第二步:对非代码块部分进行反转义
588
- if _is_already_escaped(processed):
589
- processed = _unescape_markdown_v2(processed)
590
-
591
- # 第三步:恢复代码块
592
- for i, block in enumerate(code_blocks):
593
- placeholder = f"__CODE_BLOCK_{i}__"
594
- processed = processed.replace(placeholder, block)
567
+ for index, block in enumerate(code_blocks):
568
+ processed = processed.replace(f"__CODE_BLOCK_{index}__", block)
595
569
 
596
570
  return processed
597
571
 
598
572
 
573
+ def _unescape_if_already_escaped(text: str) -> str:
574
+ """智能检测并清理预转义文本,必要时触发强制反转义。"""
575
+ if not text:
576
+ return text
577
+ if not _is_already_escaped(text):
578
+ return text
579
+ return _force_unescape_markdown(text)
580
+
581
+
599
582
  def _prepare_model_payload(text: str) -> str:
600
583
  if _IS_MARKDOWN_V2:
601
584
  cleaned = _unescape_if_already_escaped(text)
@@ -605,6 +588,47 @@ def _prepare_model_payload(text: str) -> str:
605
588
  return text
606
589
 
607
590
 
591
+ def _optimize_markdown_v2_payload(payload: str) -> str:
592
+ """在保留 MarkdownV2 合法性的前提下,移除常见的冗余反斜杠。"""
593
+
594
+ if not payload or "\\" not in payload:
595
+ return payload
596
+
597
+ preserved_segments: list[str] = []
598
+
599
+ def _preserve(segment: re.Match[str]) -> str:
600
+ placeholder = f"__OPT_CODE_BLOCK_{len(preserved_segments)}__"
601
+ preserved_segments.append(segment.group(0))
602
+ return placeholder
603
+
604
+ stripped = CODE_SEGMENT_RE.sub(_preserve, payload)
605
+ stripped = _OPTIMIZE_CHECKBOX_PATTERN.sub("[ ]", stripped)
606
+
607
+ def _dot_replacer(match: re.Match[str]) -> str:
608
+ prefix = match.group("prefix")
609
+ return f"{prefix}."
610
+
611
+ stripped = _OPTIMIZE_DOT_PATTERN.sub(_dot_replacer, stripped)
612
+
613
+ for index, segment in enumerate(preserved_segments):
614
+ stripped = stripped.replace(f"__OPT_CODE_BLOCK_{index}__", segment)
615
+
616
+ return stripped
617
+
618
+
619
+ def _prepare_model_payload_variants(text: str) -> tuple[str, Optional[str]]:
620
+ """返回首选与备用的 MarkdownV2 内容,首选尽量减少转义。"""
621
+
622
+ strict_payload = _prepare_model_payload(text)
623
+ if not _IS_MARKDOWN_V2:
624
+ return strict_payload, None
625
+
626
+ optimized_payload = _optimize_markdown_v2_payload(strict_payload)
627
+ if optimized_payload != strict_payload:
628
+ return optimized_payload, strict_payload
629
+ return strict_payload, None
630
+
631
+
608
632
  def _extract_bad_request_message(exc: TelegramBadRequest) -> str:
609
633
  message = getattr(exc, "message", None)
610
634
  if not message:
@@ -658,6 +682,7 @@ async def _send_with_markdown_guard(
658
682
  sender: Callable[[str], Awaitable[None]],
659
683
  *,
660
684
  raw_sender: Optional[Callable[[str], Awaitable[None]]] = None,
685
+ fallback_payload: Optional[str] = None,
661
686
  ) -> str:
662
687
  try:
663
688
  await sender(text)
@@ -666,6 +691,19 @@ async def _send_with_markdown_guard(
666
691
  if not _is_markdown_parse_error(exc):
667
692
  raise
668
693
 
694
+ if fallback_payload and fallback_payload != text:
695
+ try:
696
+ await sender(fallback_payload)
697
+ worker_log.debug(
698
+ "Markdown 优化回退为严格转义版本",
699
+ extra={"length": len(fallback_payload)},
700
+ )
701
+ return fallback_payload
702
+ except TelegramBadRequest as fallback_exc:
703
+ if not _is_markdown_parse_error(fallback_exc):
704
+ raise
705
+ exc = fallback_exc
706
+
669
707
  sanitized: Optional[str]
670
708
  if _IS_MARKDOWN_V2:
671
709
  sanitized = _escape_markdown_v2(text)
@@ -695,7 +733,7 @@ async def _send_with_markdown_guard(
695
733
  raise
696
734
 
697
735
  # Markdown 彻底失败时退回纯文本发送,需要先清理 MarkdownV2 转义符号
698
- fallback_payload = _unescape_if_already_escaped(text)
736
+ fallback_payload = _force_unescape_markdown(text)
699
737
  if fallback_payload != text:
700
738
  worker_log.debug(
701
739
  "Markdown 降级为纯文本发送,已移除转义符号",
@@ -762,7 +800,11 @@ async def reply_large_text(
762
800
  """
763
801
  bot = current_bot()
764
802
  parse_mode_value = parse_mode if parse_mode is not None else _parse_mode_value()
765
- prepared = text if preformatted else _prepare_model_payload(text)
803
+ if preformatted:
804
+ prepared = text
805
+ fallback_payload = None
806
+ else:
807
+ prepared, fallback_payload = _prepare_model_payload_variants(text)
766
808
 
767
809
  async def _send_formatted_message(payload: str) -> None:
768
810
  await bot.send_message(
@@ -779,6 +821,7 @@ async def reply_large_text(
779
821
  prepared,
780
822
  _send_formatted_message,
781
823
  raw_sender=_send_raw_message,
824
+ fallback_payload=fallback_payload,
782
825
  )
783
826
 
784
827
  worker_log.info(
@@ -797,10 +840,12 @@ async def reply_large_text(
797
840
  f"内容较长,已生成附件 `{attachment_name}`,请下载查看全文。"
798
841
  )
799
842
 
843
+ summary_prepared, summary_fallback = _prepare_model_payload_variants(summary_text)
800
844
  delivered_summary = await _send_with_markdown_guard(
801
- summary_text,
845
+ summary_prepared,
802
846
  _send_formatted_message,
803
847
  raw_sender=_send_raw_message,
848
+ fallback_payload=summary_fallback,
804
849
  )
805
850
 
806
851
  document = BufferedInputFile(text.encode("utf-8"), filename=attachment_name)
@@ -1514,7 +1559,7 @@ async def _broadcast_worker_keyboard(bot: Bot) -> None:
1514
1559
  continue
1515
1560
 
1516
1561
  parse_mode = _parse_mode_value()
1517
- prepared = _prepare_model_payload(text)
1562
+ prepared, fallback_payload = _prepare_model_payload_variants(text)
1518
1563
 
1519
1564
  async def _send_formatted(payload: str) -> None:
1520
1565
  await bot.send_message(
@@ -1537,6 +1582,7 @@ async def _broadcast_worker_keyboard(bot: Bot) -> None:
1537
1582
  prepared,
1538
1583
  _send_formatted,
1539
1584
  raw_sender=_send_raw,
1585
+ fallback_payload=fallback_payload,
1540
1586
  )
1541
1587
  except TelegramForbiddenError as exc:
1542
1588
  worker_log.warning("推送任务列表被拒绝:%s", exc, extra={**_session_extra(), "chat": chat_id})
@@ -2794,13 +2840,32 @@ async def _answer_with_markdown(
2794
2840
  *,
2795
2841
  reply_markup: InlineKeyboardMarkup | ReplyKeyboardMarkup | None = None,
2796
2842
  ) -> Optional[Message]:
2797
- prepared = _prepare_model_payload(text)
2798
- try:
2799
- sent = await message.answer(
2800
- prepared,
2843
+ prepared, fallback_payload = _prepare_model_payload_variants(text)
2844
+ sent_message: Optional[Message] = None
2845
+
2846
+ async def _send(payload: str) -> None:
2847
+ nonlocal sent_message
2848
+ sent_message = await message.answer(
2849
+ payload,
2801
2850
  parse_mode=_parse_mode_value(),
2802
2851
  reply_markup=reply_markup,
2803
2852
  )
2853
+
2854
+ async def _send_raw(payload: str) -> None:
2855
+ nonlocal sent_message
2856
+ sent_message = await message.answer(
2857
+ payload,
2858
+ parse_mode=None,
2859
+ reply_markup=reply_markup,
2860
+ )
2861
+
2862
+ try:
2863
+ await _send_with_markdown_guard(
2864
+ prepared,
2865
+ _send,
2866
+ raw_sender=_send_raw,
2867
+ fallback_payload=fallback_payload,
2868
+ )
2804
2869
  except TelegramBadRequest as exc:
2805
2870
  worker_log.warning(
2806
2871
  "发送消息失败:%s",
@@ -2808,7 +2873,7 @@ async def _answer_with_markdown(
2808
2873
  extra={"chat": getattr(message.chat, "id", None)},
2809
2874
  )
2810
2875
  return None
2811
- return sent
2876
+ return sent_message
2812
2877
 
2813
2878
 
2814
2879
  async def _edit_message_with_markdown(
@@ -2817,11 +2882,27 @@ async def _edit_message_with_markdown(
2817
2882
  *,
2818
2883
  reply_markup: InlineKeyboardMarkup | None = None,
2819
2884
  ) -> None:
2820
- prepared = _prepare_model_payload(text)
2821
- await callback.message.edit_text(
2885
+ prepared, fallback_payload = _prepare_model_payload_variants(text)
2886
+
2887
+ async def _send(payload: str) -> None:
2888
+ await callback.message.edit_text(
2889
+ payload,
2890
+ parse_mode=_parse_mode_value(),
2891
+ reply_markup=reply_markup,
2892
+ )
2893
+
2894
+ async def _send_raw(payload: str) -> None:
2895
+ await callback.message.edit_text(
2896
+ payload,
2897
+ parse_mode=None,
2898
+ reply_markup=reply_markup,
2899
+ )
2900
+
2901
+ await _send_with_markdown_guard(
2822
2902
  prepared,
2823
- parse_mode=_parse_mode_value(),
2824
- reply_markup=reply_markup,
2903
+ _send,
2904
+ raw_sender=_send_raw,
2905
+ fallback_payload=fallback_payload,
2825
2906
  )
2826
2907
 
2827
2908
 
@@ -2833,13 +2914,29 @@ async def _try_edit_message(
2833
2914
  ) -> bool:
2834
2915
  if message is None:
2835
2916
  return False
2836
- prepared = _prepare_model_payload(text)
2837
- try:
2917
+ prepared, fallback_payload = _prepare_model_payload_variants(text)
2918
+
2919
+ async def _send(payload: str) -> None:
2838
2920
  await message.edit_text(
2839
- prepared,
2921
+ payload,
2840
2922
  parse_mode=_parse_mode_value(),
2841
2923
  reply_markup=reply_markup,
2842
2924
  )
2925
+
2926
+ async def _send_raw(payload: str) -> None:
2927
+ await message.edit_text(
2928
+ payload,
2929
+ parse_mode=None,
2930
+ reply_markup=reply_markup,
2931
+ )
2932
+
2933
+ try:
2934
+ await _send_with_markdown_guard(
2935
+ prepared,
2936
+ _send,
2937
+ raw_sender=_send_raw,
2938
+ fallback_payload=fallback_payload,
2939
+ )
2843
2940
  return True
2844
2941
  except TelegramBadRequest as exc:
2845
2942
  worker_log.info(
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "vibego"
7
- version = "0.2.35"
7
+ version = "0.2.37"
8
8
  description = "vibego CLI:用于初始化与管理 Telegram Master Bot 的工具"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
@@ -42,7 +42,7 @@ include = ["vibego_cli", "tasks", "scripts", "telegram_markdown"]
42
42
  "scripts" = ["*.sh", "models/*.sh"]
43
43
 
44
44
  [tool.bumpversion]
45
- current_version = "0.2.35"
45
+ current_version = "0.2.37"
46
46
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)"
47
47
  serialize = ["{major}.{minor}.{patch}"]
48
48
  search = "{current_version}"
@@ -0,0 +1,92 @@
1
+ """验证 Markdown 降级为纯文本时的反转义逻辑。"""
2
+
3
+ from __future__ import annotations
4
+
5
+ import pytest
6
+ from aiogram.exceptions import TelegramBadRequest
7
+ from aiogram.methods.base import TelegramMethod
8
+
9
+ import bot
10
+
11
+
12
+ @pytest.mark.asyncio()
13
+ async def test_markdown_guard_plain_fallback_removes_escapes() -> None:
14
+ """确保回退纯文本时不会残留 MarkdownV2 转义反斜杠。"""
15
+
16
+ delivered: list[str] = []
17
+
18
+ class _DummyMethod(TelegramMethod):
19
+ """构造最小化的 TelegramMethod 以便创建异常对象。"""
20
+
21
+ __returning__ = bool
22
+
23
+ @property
24
+ def __api_method__(self) -> str:
25
+ return "testMethod"
26
+
27
+ def build_response(self, data, bot): # pragma: no cover - 测试不会触发
28
+ return True
29
+
30
+ def build_request(self, bot): # pragma: no cover - 测试不会触发
31
+ return "testMethod", {}
32
+
33
+ async def _failing_sender(_: str) -> None:
34
+ raise TelegramBadRequest(_DummyMethod(), "Bad Request: can't parse entities")
35
+
36
+ async def _raw_sender(payload: str) -> None:
37
+ delivered.append(payload)
38
+
39
+ original = "测试 \\_Markdown\\_ 转义"
40
+ result = await bot._send_with_markdown_guard(original, _failing_sender, raw_sender=_raw_sender)
41
+
42
+ assert delivered and delivered[0] == "测试 _Markdown_ 转义"
43
+ assert result == "测试 _Markdown_ 转义"
44
+
45
+
46
+ @pytest.mark.asyncio()
47
+ @pytest.mark.parametrize(
48
+ ("original", "expected"),
49
+ [
50
+ ("条目 A\\)", "条目 A)"),
51
+ ("任务编码:/TASK\\_0022", "任务编码:/TASK_0022"),
52
+ ("配置文件 config\\.json", "配置文件 config.json"),
53
+ ("版本号 3\\.11\\.4", "版本号 3.11.4"),
54
+ ("保留连字符 use\\-case", "保留连字符 use-case"),
55
+ ("强调 \\*重要\\*", "强调 *重要*"),
56
+ ("变量 \\_value\\_", "变量 _value_"),
57
+ ("选项 A\\|B", "选项 A|B"),
58
+ ("集合 \\{a, b\\}", "集合 {a, b}"),
59
+ ("说明 test\\.", "说明 test."),
60
+ ],
61
+ )
62
+ async def test_markdown_guard_plain_fallback_force_unescape(
63
+ original: str,
64
+ expected: str,
65
+ ) -> None:
66
+ """验证强制反转义可处理只有单个转义符的场景。"""
67
+
68
+ delivered: list[str] = []
69
+
70
+ class _DummyMethod(TelegramMethod):
71
+ __returning__ = bool
72
+
73
+ @property
74
+ def __api_method__(self) -> str:
75
+ return "testMethod"
76
+
77
+ def build_response(self, data, bot): # pragma: no cover - 测试不会触发
78
+ return True
79
+
80
+ def build_request(self, bot): # pragma: no cover - 测试不会触发
81
+ return "testMethod", {}
82
+
83
+ async def _failing_sender(_: str) -> None:
84
+ raise TelegramBadRequest(_DummyMethod(), "Bad Request: can't parse entities")
85
+
86
+ async def _raw_sender(payload: str) -> None:
87
+ delivered.append(payload)
88
+
89
+ result = await bot._send_with_markdown_guard(original, _failing_sender, raw_sender=_raw_sender)
90
+
91
+ assert delivered and delivered[0] == expected
92
+ assert result == expected
@@ -1,5 +1,6 @@
1
- from pathlib import Path
2
1
  import sys
2
+ import os
3
+ from pathlib import Path
3
4
 
4
5
  sys.path.append(str(Path(__file__).resolve().parents[1]))
5
6
 
@@ -7,6 +8,10 @@ import pytest
7
8
 
8
9
  from telegram_markdown import render_markdown_to_telegram
9
10
 
11
+ os.environ.setdefault("BOT_TOKEN", "dummy")
12
+
13
+ from bot import _prepare_model_payload, _prepare_model_payload_variants # noqa: E402
14
+
10
15
 
11
16
  @pytest.mark.parametrize(
12
17
  "source, expected",
@@ -56,3 +61,36 @@ def test_render_blockquote() -> None:
56
61
  def test_render_link() -> None:
57
62
  markdown = "[link](https://example.com/path?a=1&b=2)"
58
63
  assert render_markdown_to_telegram(markdown) == "[link](https://example.com/path?a=1&b=2)"
64
+
65
+
66
+ @pytest.mark.parametrize(
67
+ "text, expect_primary, expect_change",
68
+ [
69
+ ("A. 采用方案", "A. 采用方案", True),
70
+ ("示例.\n第二行", "示例.\n第二行", True),
71
+ ("- [ ] 待办事项", "- [ ] 待办事项", True),
72
+ ("- [ ] 待办事项\n- [ ] 第二条", "- [ ] 待办事项\n- [ ] 第二条", True),
73
+ ("任务编码:/TASK_0023", None, False),
74
+ ("纯文本,无需转义", None, False),
75
+ ("带内联代码 `A.` 示例", None, False),
76
+ ("```\nA. print\n```", None, False),
77
+ ("段落结束. 继续下一句", "段落结束. 继续下一句", True),
78
+ ("- [ ] 包含句点. 并继续", "- [ ] 包含句点. 并继续", True),
79
+ ],
80
+ )
81
+ def test_prepare_model_payload_variants(text: str, expect_primary: str | None, expect_change: bool) -> None:
82
+ primary, fallback = _prepare_model_payload_variants(text)
83
+ strict = _prepare_model_payload(text)
84
+ if expect_primary is not None:
85
+ assert primary == expect_primary
86
+ else:
87
+ assert primary == strict
88
+ if expect_change:
89
+ assert fallback is not None
90
+ assert fallback != primary
91
+ assert fallback == strict
92
+ else:
93
+ if fallback is None:
94
+ assert primary == strict
95
+ else:
96
+ assert fallback == primary == strict
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibego
3
- Version: 0.2.35
3
+ Version: 0.2.37
4
4
  Summary: vibego CLI:用于初始化与管理 Telegram Master Bot 的工具
5
5
  Author: Hypha
6
6
  License-Expression: LicenseRef-Proprietary
@@ -7,6 +7,6 @@ from __future__ import annotations
7
7
 
8
8
  __all__ = ["main", "__version__"]
9
9
 
10
- __version__ = "0.2.35"
10
+ __version__ = "0.2.37"
11
11
 
12
12
  from .main import main # noqa: E402
@@ -1,43 +0,0 @@
1
- """验证 Markdown 降级为纯文本时的反转义逻辑。"""
2
-
3
- from __future__ import annotations
4
-
5
- import pytest
6
- from aiogram.exceptions import TelegramBadRequest
7
- from aiogram.methods.base import TelegramMethod
8
-
9
- import bot
10
-
11
-
12
- @pytest.mark.asyncio()
13
- async def test_markdown_guard_plain_fallback_removes_escapes() -> None:
14
- """确保回退纯文本时不会残留 MarkdownV2 转义反斜杠。"""
15
-
16
- delivered: list[str] = []
17
-
18
- class _DummyMethod(TelegramMethod):
19
- """构造最小化的 TelegramMethod 以便创建异常对象。"""
20
-
21
- __returning__ = bool
22
-
23
- @property
24
- def __api_method__(self) -> str:
25
- return "testMethod"
26
-
27
- def build_response(self, data, bot): # pragma: no cover - 测试不会触发
28
- return True
29
-
30
- def build_request(self, bot): # pragma: no cover - 测试不会触发
31
- return "testMethod", {}
32
-
33
- async def _failing_sender(_: str) -> None:
34
- raise TelegramBadRequest(_DummyMethod(), "Bad Request: can't parse entities")
35
-
36
- async def _raw_sender(payload: str) -> None:
37
- delivered.append(payload)
38
-
39
- original = "测试 \\_Markdown\\_ 转义"
40
- result = await bot._send_with_markdown_guard(original, _failing_sender, raw_sender=_raw_sender)
41
-
42
- assert delivered and delivered[0] == "测试 _Markdown_ 转义"
43
- assert result == "测试 _Markdown_ 转义"
File without changes
File without changes
File without changes
File without changes
File without changes