ErisPulse 2.5.0.dev2__tar.gz → 2.5.1__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.
Files changed (181) hide show
  1. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/PKG-INFO +269 -137
  2. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/README.md +261 -134
  3. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/pyproject.toml +10 -3
  4. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/adapter.py +19 -9
  5. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/adapter.pyi +2 -2
  6. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/adapter.py +22 -11
  7. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/constants.py +23 -0
  8. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/__init__.py +83 -7
  9. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/__init__.pyi +11 -5
  10. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/locales/en.py +16 -0
  11. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/locales/ja.py +16 -0
  12. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/locales/ru.py +16 -0
  13. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/locales/zh_cn.py +16 -0
  14. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/locales/zh_tw.py +16 -0
  15. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/logger.py +34 -12
  16. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/logger.pyi +10 -6
  17. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/router.py +22 -12
  18. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/storage.py +293 -9
  19. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/storage.pyi +40 -3
  20. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/loaders/__init__.py +4 -0
  21. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/loaders/__init__.pyi +1 -0
  22. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/loaders/adapter.py +28 -0
  23. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/loaders/adapter.pyi +1 -0
  24. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/loaders/bases/loader.py +32 -1
  25. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/loaders/module.py +27 -4
  26. erispulse-2.5.1/src/ErisPulse/loaders/strict.py +297 -0
  27. erispulse-2.5.1/src/ErisPulse/loaders/strict.pyi +119 -0
  28. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/runtime/frame_config.py +6 -0
  29. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/runtime/frame_config.pyi +1 -1
  30. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/sdk.py +63 -1
  31. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/sdk.pyi +1 -0
  32. erispulse-2.5.1/src/ErisPulse/web_status/4xx.png +0 -0
  33. erispulse-2.5.1/src/ErisPulse/web_status/5xx.png +0 -0
  34. erispulse-2.5.1/src/ErisPulse/web_status/unknow.png +0 -0
  35. erispulse-2.5.0.dev2/src/ErisPulse/web_status/4xx.png +0 -0
  36. erispulse-2.5.0.dev2/src/ErisPulse/web_status/5xx.png +0 -0
  37. erispulse-2.5.0.dev2/src/ErisPulse/web_status/unknow.png +0 -0
  38. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/.gitignore +0 -0
  39. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/LICENSE +0 -0
  40. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/__init__.py +0 -0
  41. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/__init__.pyi +0 -0
  42. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/base.py +0 -0
  43. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/base.pyi +0 -0
  44. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/cli.py +0 -0
  45. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/cli.pyi +0 -0
  46. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/__init__.py +0 -0
  47. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/__init__.pyi +0 -0
  48. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/create.py +0 -0
  49. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/create.pyi +0 -0
  50. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/init.py +0 -0
  51. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/init.pyi +0 -0
  52. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/install.py +0 -0
  53. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/install.pyi +0 -0
  54. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/language.py +0 -0
  55. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/language.pyi +0 -0
  56. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/list.py +0 -0
  57. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/list.pyi +0 -0
  58. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/list_remote.py +0 -0
  59. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/list_remote.pyi +0 -0
  60. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/run.py +0 -0
  61. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/run.pyi +0 -0
  62. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/self_update.py +0 -0
  63. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/self_update.pyi +0 -0
  64. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/uninstall.py +0 -0
  65. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/uninstall.pyi +0 -0
  66. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/upgrade.py +0 -0
  67. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/commands/upgrade.pyi +0 -0
  68. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/console.py +0 -0
  69. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/console.pyi +0 -0
  70. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/__init__.py +0 -0
  71. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/__init__.pyi +0 -0
  72. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/locales/__init__.py +0 -0
  73. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/locales/__init__.pyi +0 -0
  74. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/locales/en.py +0 -0
  75. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/locales/en.pyi +0 -0
  76. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/locales/ja.py +0 -0
  77. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/locales/ja.pyi +0 -0
  78. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/locales/ru.py +0 -0
  79. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/locales/ru.pyi +0 -0
  80. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/locales/zh_cn.py +0 -0
  81. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/locales/zh_cn.pyi +0 -0
  82. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/locales/zh_tw.py +0 -0
  83. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/i18n/locales/zh_tw.pyi +0 -0
  84. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/registry.py +0 -0
  85. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/registry.pyi +0 -0
  86. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/utils/__init__.py +0 -0
  87. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/utils/__init__.pyi +0 -0
  88. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/utils/display.py +0 -0
  89. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/utils/display.pyi +0 -0
  90. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/utils/file_watcher.py +0 -0
  91. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/utils/file_watcher.pyi +0 -0
  92. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/utils/package_manager.py +0 -0
  93. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/CLI/utils/package_manager.pyi +0 -0
  94. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/__init__.py +0 -0
  95. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/__init__.pyi +0 -0
  96. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/client.py +0 -0
  97. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/client.pyi +0 -0
  98. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/errors.py +0 -0
  99. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/errors.pyi +0 -0
  100. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/manager.py +0 -0
  101. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/manager.pyi +0 -0
  102. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/module.py +0 -0
  103. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/module.pyi +0 -0
  104. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/router.py +0 -0
  105. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/router.pyi +0 -0
  106. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/storage.py +0 -0
  107. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/storage.pyi +0 -0
  108. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/websocket.py +0 -0
  109. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Bases/websocket.pyi +0 -0
  110. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/__init__.py +0 -0
  111. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/__init__.pyi +0 -0
  112. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/base.py +0 -0
  113. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/base.pyi +0 -0
  114. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/command.py +0 -0
  115. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/command.pyi +0 -0
  116. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/message.py +0 -0
  117. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/message.pyi +0 -0
  118. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/message_builder.py +0 -0
  119. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/message_builder.pyi +0 -0
  120. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/meta.py +0 -0
  121. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/meta.pyi +0 -0
  122. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/notice.py +0 -0
  123. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/notice.pyi +0 -0
  124. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/request.py +0 -0
  125. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/request.pyi +0 -0
  126. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/session_type.py +0 -0
  127. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/session_type.pyi +0 -0
  128. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/wrapper.py +0 -0
  129. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/Event/wrapper.pyi +0 -0
  130. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/__init__.py +0 -0
  131. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/__init__.pyi +0 -0
  132. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/adapter.pyi +3 -3
  133. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/client.py +0 -0
  134. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/client.pyi +0 -0
  135. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/config.py +0 -0
  136. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/config.pyi +0 -0
  137. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/constants.pyi +0 -0
  138. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/constants.py +0 -0
  139. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/constants.pyi +0 -0
  140. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/locales/__init__.py +0 -0
  141. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/locales/__init__.pyi +0 -0
  142. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/locales/en.pyi +0 -0
  143. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/locales/ja.pyi +0 -0
  144. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/locales/ru.pyi +0 -0
  145. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/locales/zh_cn.pyi +0 -0
  146. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/i18n/locales/zh_tw.pyi +0 -0
  147. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/lifecycle.py +0 -0
  148. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/lifecycle.pyi +0 -0
  149. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/module.py +0 -0
  150. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/module.pyi +0 -0
  151. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/Core/router.pyi +0 -0
  152. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/__init__.py +0 -0
  153. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/__init__.pyi +0 -0
  154. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/__main__.py +0 -0
  155. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/__main__.pyi +0 -0
  156. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/finders/__init__.py +0 -0
  157. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/finders/__init__.pyi +0 -0
  158. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/finders/adapter.py +0 -0
  159. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/finders/adapter.pyi +0 -0
  160. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/finders/bases/__init__.py +0 -0
  161. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/finders/bases/__init__.pyi +0 -0
  162. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/finders/bases/finder.py +0 -0
  163. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/finders/bases/finder.pyi +0 -0
  164. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/finders/module.py +0 -0
  165. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/finders/module.pyi +0 -0
  166. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/loaders/bases/__init__.py +0 -0
  167. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/loaders/bases/__init__.pyi +0 -0
  168. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/loaders/bases/loader.pyi +1 -1
  169. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/loaders/module.pyi +0 -0
  170. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/loaders/strategy.py +0 -0
  171. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/loaders/strategy.pyi +0 -0
  172. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/runtime/__init__.py +0 -0
  173. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/runtime/__init__.pyi +0 -0
  174. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/runtime/config_schema.py +0 -0
  175. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/runtime/config_schema.pyi +0 -0
  176. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/runtime/context.py +0 -0
  177. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/runtime/context.pyi +0 -0
  178. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/runtime/exceptions.py +0 -0
  179. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/runtime/exceptions.pyi +0 -0
  180. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/web_status/__init__.py +0 -0
  181. {erispulse-2.5.0.dev2 → erispulse-2.5.1}/src/ErisPulse/web_status/__init__.pyi +0 -0
@@ -1,8 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ErisPulse
3
- Version: 2.5.0.dev2
3
+ Version: 2.5.1
4
4
  Summary: ErisPulse 是一个模块化、可扩展的异步 Python SDK 框架,主要用于构建高效、可维护的机器人应用程序。
5
- Author-email: ErisDev <erisdev@88.com>
5
+ Project-URL: Homepage, https://github.com/ErisPulse/ErisPulse
6
+ Project-URL: Documentation, https://www.erisdev.com#docs
7
+ Project-URL: Repository, https://github.com/ErisPulse/ErisPulse
8
+ Project-URL: Issues, https://github.com/ErisPulse/ErisPulse/issues
9
+ Project-URL: Bug Tracker, https://github.com/ErisPulse/ErisPulse/blob/main/docs/en/bug-tracker.md
10
+ Project-URL: Changelog, https://github.com/ErisPulse/ErisPulse/blob/main/CHANGELOG.md
11
+ Author: ErisDev
6
12
  Maintainer-email: "艾莉丝·格雷拉特(WSu2059)" <wsu2059@qq.com>
7
13
  License: MIT License
8
14
 
@@ -44,7 +50,6 @@ Classifier: Typing :: Typed
44
50
  Requires-Python: >=3.10
45
51
  Requires-Dist: aiohttp>=3.9.0
46
52
  Requires-Dist: fastapi>=0.116.1
47
- Requires-Dist: pip>=23.0
48
53
  Requires-Dist: rich>=13.0.0
49
54
  Requires-Dist: toml>=0.10.2
50
55
  Requires-Dist: uvicorn>=0.30.0
@@ -62,39 +67,104 @@ Requires-Dist: pytest-xdist>=3.0.0; extra == 'test'
62
67
  Requires-Dist: pytest>=7.0.0; extra == 'test'
63
68
  Description-Content-Type: text/markdown
64
69
 
70
+ <img src=".github/assets/mascot-hero.png" align="right" width="300" alt="ErisPulse" style="margin-left: 24px; margin-bottom: 16px; border-radius: 12px;" />
71
+
72
+ **English** | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md) | [日本語](README.ja.md) | [Русский](README.ru.md)
73
+
74
+ # ErisPulse
75
+
76
+ **Write once, deploy on multiple platforms.**
77
+
78
+ Event-driven multi-platform chatbot development framework.
79
+
80
+ Based on the OneBot12 standard interface, write once and deploy on multiple platforms. Flexible plugin system, hot reload support, and a complete developer toolchain, suitable for scenarios ranging from simple chatbots to complex automation systems.
81
+
82
+ <p>
83
+ <a href="https://pypi.org/project/ErisPulse/"><img src="https://img.shields.io/pypi/v/ErisPulse?style=for-the-badge&logo=pypi&logoColor=white" alt="PyPI"></a>
84
+ <a href="https://pypi.org/project/ErisPulse/"><img src="https://img.shields.io/badge/Python-3.10+-FFD43B?style=for-the-badge&logo=python&logoColor=blue" alt="Python"></a>
85
+ <a href="https://hub.docker.com/r/erispulse/erispulse"><img src="https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white" alt="Docker"></a>
86
+ <a href="https://github.com/ErisPulse/ErisPulse/blob/main/LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue?style=for-the-badge" alt="License"></a>
87
+ <a href="https://github.com/ErisPulse/ErisPulse"><img src="https://img.shields.io/github/stars/ErisPulse/ErisPulse?style=for-the-badge&logo=github&color=brightgreen" alt="Stars"></a>
88
+ <a href="https://pepy.tech/project/ErisPulse"><img src="https://img.shields.io/pepy/dt/ErisPulse?style=for-the-badge&color=blue" alt="Downloads"></a>
89
+ <a href="https://github.com/astral-sh/ruff"><img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json&style=for-the-badge" alt="Ruff"></a>
90
+ <a href="https://socket.dev/pypi/package/erispulse"><img src="https://img.shields.io/badge/Socket-Secure-2ea043?style=for-the-badge&logo=socket&logoColor=white" alt="Socket"></a>
91
+ <a href="https://www.erisdev.com"><img src="https://img.shields.io/badge/文档-erisdev.com-FF6B9D?style=for-the-badge&logo=bookstack&logoColor=white" alt="文档"></a>
92
+ <a href="https://www.erisdev.com/#market"><img src="https://img.shields.io/badge/模块市场-erisdev.com-C724B1?style=for-the-badge&logo=webpack&logoColor=white" alt="模块市场"></a>
93
+ <a href="https://github.com/ErisPulse/ErisPulse/discussions"><img src="https://img.shields.io/badge/GitHub-Discussions-181717?style=for-the-badge&logo=github" alt="讨论"></a>
94
+ </p>
95
+
96
+ <br clear="both">
97
+
98
+ ---
99
+
100
+ <div align="center">
101
+
102
+ ### Core Features
103
+
104
+ </div>
105
+
65
106
  <table>
66
107
  <tr>
67
- <td width="35%" valign="middle" align="center">
108
+ <td width="33%" align="center" valign="top">
109
+ <br/>
110
+
111
+ <img src=".github/assets/icon/icon_event_driven.png.png" width="50" alt="Event-driven Architecture" />
68
112
 
69
- <img src=".github/assets/mascot-hero.png" width="320" alt="ErisPulse" />
113
+ ### Event-driven Architecture
114
+
115
+ A clear event model based on the OneBot12 standard, making message handling logic more intuitive and efficient
70
116
 
71
117
  </td>
72
- <td valign="middle">
118
+ <td width="33%" align="center" valign="top">
119
+ <br/>
73
120
 
74
- > **English** | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md) | [日本語](README.ja.md) | [Русский](README.ru.md)
121
+ <img src=".github/assets/icon/icon_cross_platform.png.png" width="50" alt="Cross-platform Compatibility" />
75
122
 
76
- > 🎉 **v2.5.0-dev.1 now supports multiple languages!** The framework core and CLI interface now have built-in support for Chinese (Simplified/Traditional), English, Japanese, and Russian, automatically switching based on your system language!
123
+ ### Cross-platform Compatibility
77
124
 
78
- # ErisPulse
125
+ Write plugins once and use them on all platforms, no need to repeat development for different platforms
126
+
127
+ </td>
128
+ <td width="33%" align="center" valign="top">
129
+ <br/>
130
+
131
+ <img src=".github/assets/icon/icon_modular.png" width="50" alt="Modular Design" />
132
+
133
+ ### Modular Design
79
134
 
80
- **Event-driven multi-platform robot development framework**
135
+ A flexible plugin system, easy to extend and integrate, supports hot-plug module management
136
+
137
+ </td>
138
+ </tr>
139
+ <tr>
140
+ <td width="33%" align="center" valign="top">
141
+ <br/>
81
142
 
82
- Based on the OneBot12 standard interface, write once, deploy across multiple platforms. A flexible plugin system, hot-reload support, and a complete developer toolchain, suitable for various scenarios from simple chatbots to complex automation systems.
143
+ <img src=".github/assets/icon/icon_hot_reload.png" width="50" alt="Hot Reload" />
144
+
145
+ ### Hot Reload
146
+
147
+ Reload code without restarting during development
148
+
149
+ </td>
150
+ <td width="33%" align="center" valign="top">
151
+ <br/>
152
+
153
+ <img src=".github/assets/icon/icon_ai_assist.png" width="50" alt="AI Assistance" />
154
+
155
+ ### AI Assistance
156
+
157
+ AI-assisted development brings requirements directly to usable modules
158
+
159
+ </td>
160
+ <td width="33%" align="center" valign="top">
161
+ <br/>
83
162
 
84
- > Supports Vibe Coding workflow, letting AI directly generate usable modules — [View](docs/en/quick-start.md)
163
+ <img src=".github/assets/icon/icon_lightweight.png" width="50" alt="Concise and Elegant" />
85
164
 
86
- [![PyPI](https://img.shields.io/pypi/v/ErisPulse?style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ErisPulse/)
87
- [![Python](https://img.shields.io/badge/Python-3.10+-FFD43B?style=for-the-badge&logo=python&logoColor=blue)](https://pypi.org/project/ErisPulse/)
88
- [![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white)](https://hub.docker.com/r/erispulse/erispulse)
89
- [![License](https://img.shields.io/badge/License-MIT-blue?style=for-the-badge)](https://github.com/ErisPulse/ErisPulse/blob/main/LICENSE)
90
- [![Stars](https://img.shields.io/github/stars/ErisPulse/ErisPulse?style=for-the-badge&logo=github&color=brightgreen)](https://github.com/ErisPulse/ErisPulse)
91
- [![Downloads](https://img.shields.io/pepy/dt/ErisPulse?style=for-the-badge&color=blue)](https://pypi.org/project/ErisPulse/)
92
- [![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json&style=for-the-badge)](https://github.com/astral-sh/ruff)
93
- [![Socket](https://img.shields.io/badge/Socket-Secure-2ea043?style=for-the-badge&logo=socket&logoColor=white)](https://socket.dev/pypi/package/erispulse)
165
+ ### Concise and Elegant
94
166
 
95
- [![Documentation](https://img.shields.io/badge/Documentation-erisdev.com-FF6B9D?style=for-the-badge&logo=bookstack&logoColor=white)](https://www.erisdev.com)
96
- [![Module Market](https://img.shields.io/badge/Module%20Market-erisdev.com-C724B1?style=for-the-badge&logo=webpack&logoColor=white)](https://www.erisdev.com/#market)
97
- [![Discussion](https://img.shields.io/badge/GitHub-Discussions-181717?style=for-the-badge&logo=github)](https://github.com/ErisPulse/ErisPulse/discussions)
167
+ Intuitive API design, making code as light and readable as feathers
98
168
 
99
169
  </td>
100
170
  </tr>
@@ -102,46 +172,112 @@ Based on the OneBot12 standard interface, write once, deploy across multiple pla
102
172
 
103
173
  ---
104
174
 
105
- <div align="center">
175
+ ## The Same Code. Multiple Platforms.
106
176
 
107
- ### Core Features
177
+ *Exactly the same command handlers. Different platforms. No business logic changes required.*
108
178
 
109
- </div>
179
+ <table>
180
+ <tr>
181
+ <td align="center" width="33%">
182
+
183
+ **Kook**
184
+
185
+ <img src=".github/assets/demo-kook.png" alt="Kook Demo" />
186
+
187
+ </td>
188
+ <td align="center" width="33%">
189
+
190
+ **QQ**
191
+
192
+ <img src=".github/assets/demo-qq.png" alt="QQ Demo" />
193
+
194
+ </td>
195
+ <td align="center" width="33%">
196
+
197
+ **Yunhu**
198
+
199
+ <img src=".github/assets/demo-yunhu.png" alt="Yunhu Demo" />
200
+
201
+ </td>
202
+ </tr>
203
+ </table>
204
+
205
+ ---
206
+
207
+ ## Ecosystem
208
+
209
+ ErisPulse is more than just a framework. Install and start, no need to reinvent the wheel from scratch.
110
210
 
111
211
  <table>
112
212
  <tr>
113
- <td width="50%" align="center" valign="top">
114
- <br/>
213
+ <td align="center" width="25%">
115
214
 
116
- ### ⚡ Event-driven Architecture
215
+ **Framework**
117
216
 
118
- A clear event model based on the OneBot12 standard, making message handling logic more intuitive and efficient
217
+ Core runtime
218
+
219
+ Unified event & message model
119
220
 
120
221
  </td>
121
- <td width="50%" align="center" valign="top">
122
- <br/>
222
+ <td align="center" width="25%">
223
+
224
+ **Dashboard**
225
+
226
+ Visual management
227
+
228
+ Plugins · Logs · Configuration
229
+
230
+ [Online Demo →](https://dashdemo.erisdev.com/)
231
+
232
+ </td>
233
+ <td align="center" width="25%">
123
234
 
124
- ### 🌐 Cross-platform Compatibility
235
+ **AI Builder**
125
236
 
126
- Write plugin modules once and use them across all platforms, without repetitive development for different platforms
237
+ Natural language usable modules
238
+
239
+ [Experience Now →](https://www.erisdev.com/#builder)
240
+
241
+ </td>
242
+ <td align="center" width="25%">
243
+
244
+ **Module Market**
245
+
246
+ Ready-to-use plugins
247
+
248
+ [Explore Modules →](https://www.erisdev.com/#market)
127
249
 
128
250
  </td>
129
251
  </tr>
130
252
  <tr>
131
- <td width="50%" align="center" valign="top">
132
- <br/>
253
+ <td align="center" width="25%">
133
254
 
134
- ### 🧩 Modular Design
255
+ **Adapters**
135
256
 
136
- A flexible plugin system, easy to extend and integrate, supporting hot-swappable module management
257
+ Access to 15+ platforms
137
258
 
138
259
  </td>
139
- <td width="50%" align="center" valign="top">
140
- <br/>
260
+ <td align="center" width="25%">
261
+
262
+ **Documentation**
263
+
264
+ [erisdev.com](https://www.erisdev.com)
265
+
266
+ </td>
267
+ <td align="center" width="25%">
268
+
269
+ **Docker**
270
+
271
+ Multi-architecture support
272
+
273
+ `erispulse/erispulse`
274
+
275
+ </td>
276
+ <td align="center" width="25%">
141
277
 
142
- ### 🔄 Hot-reload Support
278
+ **CLI**
143
279
 
144
- Reload code without restarting during development, greatly improving development iteration efficiency
280
+ `epsdk` scaffolding tool
145
281
 
146
282
  </td>
147
283
  </tr>
@@ -149,11 +285,27 @@ Reload code without restarting during development, greatly improving development
149
285
 
150
286
  ---
151
287
 
288
+ ## Project Origin
289
+
290
+ ErisPulse was not born to be a framework.
291
+
292
+ It originated from **Amer** — a project for message interconnection and synchronization between different platforms.
293
+
294
+ As the number of connected platforms increased, we began maintaining the asynchronous version of **ryunhusdk2**, gradually abstracting a unified event model and adapter system.
295
+
296
+ These practices eventually evolved into today's ErisPulse.
297
+
298
+ Its goal has never changed:
299
+
300
+ **Let developers focus on business, not platform differences.**
301
+
302
+ ---
303
+
152
304
  ### Quick Start
153
305
 
154
306
  #### One-click Installation Script (Recommended)
155
307
 
156
- The installation script automatically detects your environment (Docker, Python, uv), guides you to choose the most suitable installation method, and supports multiple languages (Chinese/English/Japanese/Russian/Traditional Chinese).
308
+ The installation script automatically detects your environment (Docker, Python, uv), guides you to choose the most suitable installation method, and supports multiple languages (Chinese/English/日本語/Русский/繁體中文).
157
309
 
158
310
  Windows (PowerShell):
159
311
  ```powershell
@@ -199,7 +351,7 @@ If Docker Hub is inaccessible, you can use GitHub Container Registry:
199
351
  docker pull ghcr.io/erispulse/erispulse:latest
200
352
  ```
201
353
 
202
- When using the ghcr.io image, modify the `docker-compose.yml` file's image:
354
+ When using the ghcr.io image, you need to modify the `docker-compose.yml` image:
203
355
  ```yaml
204
356
  image: ghcr.io/erispulse/erispulse:latest
205
357
  ```
@@ -219,7 +371,7 @@ ERISPULSE_DASHBOARD_TOKEN=your-token docker compose up -d
219
371
 
220
372
  > The image includes the ErisPulse framework and Dashboard management panel, supporting `linux/amd64` and `linux/arm64` architectures.
221
373
 
222
- After startup, visit `http://<host>:<port>/Dashboard`, and use the set token as the password to log in to the Dashboard management panel.
374
+ After starting, visit `http://<host>:<port>/Dashboard` and use the set token as the password to log in to the Dashboard management panel.
223
375
 
224
376
  </details>
225
377
 
@@ -229,14 +381,14 @@ After startup, visit `http://<host>:<port>/Dashboard`, and use the set token as
229
381
  Set `ERISPULSE_CHANNEL=dev` to use the pre-release version:
230
382
 
231
383
  ```bash
232
- # Method 1: Use environment variable (Recommended)
384
+ # Method 1: Using environment variables (recommended)
233
385
  ERISPULSE_CHANNEL=dev ERISPULSE_DASHBOARD_TOKEN=your-token docker compose up -d
234
386
 
235
- # Method 2: Build dev image
387
+ # Method 2: Building dev image
236
388
  ERISPULSE_BUILD_TARGET=dev docker compose up -d --build
237
389
  ```
238
390
 
239
- To automatically update to the latest version at startup (regardless of stable or dev), explicitly set `ERISPULSE_UPDATE_ON_START=true`:
391
+ To ensure automatic update to the latest version at startup (regardless of stable or dev), explicitly set `ERISPULSE_UPDATE_ON_START=true`:
240
392
 
241
393
  ```bash
242
394
  ERISPULSE_CHANNEL=dev ERISPULSE_UPDATE_ON_START=true docker compose up -d
@@ -253,27 +405,29 @@ docker pull erispulse/erispulse:dev
253
405
  <details>
254
406
  <summary>Docker Environment Variables</summary>
255
407
 
256
- | Variable | Default Value | Description |
408
+ | Variable | Default | Description |
257
409
  |------|--------|------|
258
- | `ERISPULSE_CHANNEL` | `stable` | Version channel: `stable` (stable version) or `dev` (pre-release version) |
410
+ | `ERISPULSE_CHANNEL` | `stable` | Version channel: `stable` (stable) or `dev` (pre-release) |
259
411
  | `ERISPULSE_UPDATE_ON_START` | `false` | Whether to automatically update to the latest version when the container starts (must be explicitly enabled) |
260
412
  | `ERISPULSE_DASHBOARD_TOKEN` | empty | Dashboard login token |
261
413
  | `ERISPULSE_PORT` | `8000` | Dashboard port mapping |
262
414
  | `TZ` | `Asia/Shanghai` | Container timezone |
263
415
 
264
- > Setting `ERISPULSE_UPDATE_ON_START=true` ensures that even if the image is outdated, the container will automatically fetch the latest version at startup.
416
+ > Setting `ERISPULSE_UPDATE_ON_START=true` ensures that even if the image is old, the container will automatically fetch the latest version at startup.
265
417
 
266
418
  </details>
267
419
 
268
420
  #### 1Panel App Store
269
421
 
270
- Install ErisPulse one-click via the [1Panel](https://1panel.cn) app store, see [ErisPulse-1Panel](https://github.com/ErisPulse/ErisPulse-1Panel).
422
+ Install ErisPulse with one click via the [1Panel](https://1panel.cn) app store, see [ErisPulse-1Panel](https://github.com/ErisPulse/ErisPulse-1Panel).
271
423
 
272
424
  ```bash
273
425
  bash <(curl -sL https://get-1panel.erisdev.com/install.sh)
274
426
  ```
275
427
 
276
- #### Using pip Installation
428
+ ErisPulse is available in the 1Panel third-party app store, and can be installed using the [okxlin/appstore](https://github.com/okxlin/appstore) third-party repository.
429
+
430
+ #### Install Using pip
277
431
 
278
432
  ```bash
279
433
  pip install ErisPulse
@@ -281,58 +435,6 @@ pip install ErisPulse
281
435
 
282
436
  > You can also use the one-click installation script above, which automatically detects the environment and guides configuration.
283
437
 
284
- #### Running Effect
285
-
286
- ##### Dashboard:
287
-
288
- [![Live Demo](https://img.shields.io/badge/Live%20Demo-Dashboard-FF6B9D?style=for-the-badge&logo=github&logoColor=white)](https://dashdemo.erisdev.com/)
289
-
290
- > 💡 Experience the live demo dashboard online: [DashDemo](https://dashdemo.erisdev.com/)
291
-
292
- <table>
293
- <tr>
294
- <td width="50%">
295
-
296
- <img src=".github/assets/docs/dashboard.png" alt="Dashboard Demo" />
297
-
298
- </td>
299
- <td width="50%">
300
-
301
- <video src="https://github.com/user-attachments/assets/157191c4-9a84-433c-b311-0c57e3a21151" controls width="100%"></video>
302
-
303
- </td>
304
- </tr>
305
- </table>
306
-
307
-
308
- ##### Same code, multiple platform responses:
309
-
310
- <table>
311
- <tr>
312
- <td align="center" width="33%">
313
-
314
- **Kook**
315
-
316
- <img src=".github/assets/demo-kook.png" alt="Kook Demo" />
317
-
318
- </td>
319
- <td align="center" width="33%">
320
-
321
- **QQ**
322
-
323
- <img src=".github/assets/demo-qq.png" alt="QQ Demo" />
324
-
325
- </td>
326
- <td align="center" width="33%">
327
-
328
- **Yunhu**
329
-
330
- <img src=".github/assets/demo-yunhu.png" alt="Yunhu Demo" />
331
-
332
- </td>
333
- </tr>
334
- </table>
335
-
336
438
  #### Initialize Project
337
439
 
338
440
  ```bash
@@ -343,28 +445,28 @@ epsdk init
343
445
  epsdk init -q -n my_bot
344
446
  ```
345
447
 
346
- #### Create First Robot
448
+ #### Create Your First Bot
347
449
 
348
- Create `main.py` file:
450
+ Create a `main.py` file:
349
451
 
350
452
  <table>
351
453
  <tr>
352
454
  <td width="50%" valign="top">
353
455
 
354
- **Command Handler**
456
+ **Command Handlers**
355
457
 
356
458
  ```python
357
459
  from ErisPulse import sdk
358
460
  from ErisPulse.Core.Event import command
359
461
 
360
- @command("hello", help="Send greeting message")
462
+ @command("hello", help="Send a greeting message")
361
463
  async def hello_handler(event):
362
464
  user_name = event.get_user_nickname() or "friend"
363
465
  await event.reply(f"Hello, {user_name}!")
364
466
 
365
- @command("ping", help="Test if the robot is online")
467
+ @command("ping", help="Test if the bot is online")
366
468
  async def ping_handler(event):
367
- await event.reply("Pong! The robot is running normally.")
469
+ await event.reply("Pong! The bot is running normally.")
368
470
 
369
471
  if __name__ == "__main__":
370
472
  import asyncio
@@ -378,13 +480,13 @@ if __name__ == "__main__":
378
480
 
379
481
  Send `/hello`
380
482
 
381
- Robot replies: `Hello, {username}!`
483
+ Bot replies: `Hello, {username}!`
382
484
 
383
485
  ---
384
486
 
385
487
  Send `/ping`
386
488
 
387
- Robot replies: `Pong! The robot is running normally.`
489
+ Bot replies: `Pong! The bot is running normally.`
388
490
 
389
491
  ---
390
492
 
@@ -392,7 +494,7 @@ Robot replies: `Pong! The robot is running normally.`
392
494
 
393
495
  ```bash
394
496
  epsdk run main.py
395
- # Or development mode
497
+ # or development mode
396
498
  epsdk run main.py --reload
397
499
  ```
398
500
 
@@ -400,13 +502,13 @@ epsdk run main.py --reload
400
502
  </tr>
401
503
  </table>
402
504
 
403
- For more detailed instructions, please refer to:
505
+ For more detailed instructions, see:
404
506
  - [Quick Start Guide](docs/en/quick-start.md)
405
- - [Getting Started Guide](docs/en/getting-started.md)
507
+ - [Getting Started Guide](docs/en/getting-started/)
406
508
 
407
509
  #### Multi-turn Conversation Example
408
510
 
409
- ErisPulse includes a powerful multi-turn conversation engine, making it easy to implement guided operations, information collection, and other interactive scenarios:
511
+ ErisPulse includes a powerful multi-turn conversation engine, easily enabling guided operations, information collection, and other interactive scenarios:
410
512
 
411
513
  ```python
412
514
  from ErisPulse.Core.Event import command, request
@@ -426,7 +528,7 @@ async def register_handler(event):
426
528
  ])
427
529
 
428
530
  if data and await conv.confirm(f"Confirm registration? Name: {data['name']}, Age: {data['age']}"):
429
- # Use SendDSL to actively push notifications
531
+ # Push notifications using SendDSL
430
532
  await sdk.adapter.get(event.get_platform()).Send.To(
431
533
  "user", event.get_user_id()
432
534
  ).Text(f"Registration successful! Welcome {data['name']}")
@@ -440,18 +542,18 @@ async def handle_friend_request(event):
440
542
  # Approve the request
441
543
  result = await event.approve()
442
544
  if result.get("status") == "ok":
443
- await event.reply(f"Friend request approved automatically, welcome {user_name}")
545
+ await event.reply(f"Friend request automatically approved, welcome {user_name}")
444
546
  ```
445
547
 
446
548
  <details>
447
- <summary>See more Conversation API (branching/joining/selection/persistence)</summary>
549
+ <summary>See More Conversation API (Branching / Selection / Persistence)</summary>
448
550
 
449
551
  ```python
450
552
  @command("quiz")
451
553
  async def quiz_handler(event):
452
554
  conv = event.conversation(timeout=30)
453
555
 
454
- # Multiple-choice question
556
+ # Multiple choice question
455
557
  answer = await conv.choose("Who is the creator of Python?", [
456
558
  "Guido van Rossum",
457
559
  "James Gosling",
@@ -469,10 +571,10 @@ async def quiz_handler(event):
469
571
  async def menu_handler(event):
470
572
  conv = event.conversation(timeout=60)
471
573
 
472
- # Branching, build complex interaction flow
574
+ # Branching, building complex interaction flows
473
575
  @conv.branch("main")
474
576
  async def main_menu():
475
- await conv.say("=== Main Menu ===\n1. Personal Information\n2. Settings\n3. Exit")
577
+ await conv.say("=== Main Menu ===\n1. Personal Info\n2. Settings\n3. Exit")
476
578
  resp = await conv.wait()
477
579
  if resp and resp.get_text().strip() == "1":
478
580
  await conv.goto("profile")
@@ -493,50 +595,72 @@ See [Conversation Multi-turn Dialogue](docs/en/advanced/conversation.md)
493
595
 
494
596
  ---
495
597
 
496
- ### Supported Adapters
598
+ ## Supported Platforms
497
599
 
498
- We welcome your contributions to adapters!
600
+ We welcome contributions to adapters!
499
601
 
500
602
  | Adapter | Description |
501
603
  |--------|------|
502
- | <img src=".github/assets/adapter_logo/kook.svg" height="20" alt="Kook" /> [Kook](https://github.com/shanfishapp/ErisPulse-KookAdapter) | Kook (Kahei La) instant messaging platform |
604
+ | <img src=".github/assets/adapter_logo/kook.svg" height="20" alt="Kook" /> [Kook](https://github.com/shanfishapp/ErisPulse-KookAdapter) | Kook (Kaihei La) instant messaging platform |
503
605
  | <img src=".github/assets/adapter_logo/matrix.svg" height="20" alt="Matrix" /> [Matrix](https://github.com/ErisPulse/ErisPulse-MatrixAdapter) | Matrix decentralized communication protocol |
504
606
  | <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot11](https://github.com/ErisPulse/ErisPulse-OneBot11Adapter) | OneBot v11 general robot protocol |
505
607
  | <img src=".github/assets/adapter_logo/onebot.png" height="20" alt="OneBot" /> [OneBot12](https://github.com/ErisPulse/ErisPulse-OneBot12Adapter) | OneBot v12 standard protocol |
506
- | <img src=".github/assets/adapter_logo/qqbot.svg" height="20" alt="QQ" /> [QQ](https://github.com/ErisPulse/ErisPulse-QQBotAdapter) | Official QQ robot platform |
608
+ | <img src=".github/assets/adapter_logo/qqbot.svg" height="20" alt="QQ" /> [QQ](https://github.com/ErisPulse/ErisPulse-QQBotAdapter) | Official QQ bot platform |
507
609
  | <img src=".github/assets/adapter_logo/sandbox.png" height="20" alt="Sandbox" /> [Sandbox](https://github.com/ErisPulse/ErisPulse-SandboxAdapter) | Web-based debugging, no need to connect to real platforms |
508
610
  | <img src=".github/assets/adapter_logo/telegram.svg" height="20" alt="Telegram" /> [Telegram](https://github.com/ErisPulse/ErisPulse-TelegramAdapter) | Global instant messaging platform |
509
611
  | <img src=".github/assets/adapter_logo/email.svg" height="20" alt="Email" /> [Email](https://github.com/ErisPulse/ErisPulse-EmailAdapter) | Email protocol adapter for sending and receiving |
510
612
  | <img src=".github/assets/adapter_logo/yunhu.png" height="20" alt="Yunhu" /> [Yunhu](https://github.com/ErisPulse/ErisPulse-YunhuAdapter) | Enterprise-level instant messaging platform (robot access) |
511
- | [Yunhu User](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) | Access adapter based on the Yunhu user protocol |
613
+ | <img src=".github/assets/adapter_logo/yunhu.png" height="20" alt="Yunhu" /> [Yunhu User](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) | Access adapter based on Yunhu user protocol |
512
614
  | [Flower Maple Cafe](https://github.com/ErisPulse/ErisPulse-Ideaura/) | Allons! \(・ω・) / |
513
615
  | <img src=".github/assets/adapter_logo/discord.svg" height="20" alt="Discord" /> [Discord](https://github.com/ErisPulse/ErisPulse-DiscordAdapter) | Global community communication platform, supports servers, channels, and private messages |
514
616
  | <img src=".github/assets/adapter_logo/webhook.svg" height="20" alt="Webhook" /> [Webhook](https://github.com/ErisPulse/ErisPulse-WebhookAdapter) | General HTTP bridge adapter, connects to any system |
515
- | <img src=".github/assets/adapter_logo/wechatmp.png" height="20" alt="WechatMp" /> [WeChat Official Account](https://github.com/ErisPulse/ErisPulse-WechatMpAdapter) | Official WeChat Official Account platform |
617
+ | <img src=".github/assets/adapter_logo/wechatmp.svg" height="20" alt="WechatMp" /> [WeChat Official Account](https://github.com/ErisPulse/ErisPulse-WechatMpAdapter) | Official WeChat Official Account platform |
516
618
 
517
619
  See [Adapter Details](docs/en/platform-guide/README.md)
518
620
 
519
621
  ---
520
622
 
521
- ### Application Scenarios
623
+ ### Use Cases
522
624
 
523
625
  <div align="center">
524
626
 
525
- | Multi-platform Robot | Chat Assistant | Automation Tool | Message Forwarding |
627
+ | Multi-platform Bot | Chat Assistant | Automation Tool | Message Forwarding |
526
628
  |:---:|:---:|:---:|:---:|
527
- | Deploy robots with the same functionality across multiple platforms | Integrate AI chat modules for entertainment and interaction | Message notifications, task management, data collection | Cross-platform message synchronization and forwarding |
629
+ | Deploy identical bots on multiple platforms | Integrate AI chat modules for entertainment and interaction | Message notification, task management, data collection | Cross-platform message synchronization and forwarding |
528
630
 
529
631
  </div>
530
632
 
531
633
  ---
532
634
 
533
- ### Contribution Guide
635
+ ## Community
636
+
637
+ Join the ErisPulse community to exchange and build the ecosystem with developers.
638
+
639
+ ### Yunhu
640
+
641
+ Group ID: `635409929`
642
+
643
+ Join the group chat:
644
+
645
+ https://yhfx.jwznb.com/share?key=VWJL4fTWXepa&ts=1781889199
646
+
647
+ ### QQ Group
534
648
 
535
- The health of the ErisPulse project still needs your contribution! We welcome various forms of contributions:
649
+ https://qm.qq.com/q/TOwnCmypcy
650
+
651
+ ### Telegram
652
+
653
+ https://t.me/ErisPulse
654
+
655
+ ---
656
+
657
+ ### Contribution Guidelines
658
+
659
+ The health of the ErisPulse project still needs your contribution! We welcome all forms of contributions:
536
660
 
537
661
  1. **Report Issues** — Submit bug reports in [GitHub Issues](https://github.com/ErisPulse/ErisPulse/issues)
538
- 2. **Feature Requests** — Propose new ideas through [Community Discussions](https://github.com/ErisPulse/ErisPulse/discussions)
539
- 3. **Code Contributions** — Read [Code Style](docs/en/styleguide/) and [Contribution Guide](CONTRIBUTING.md) before submitting PRs
662
+ 2. **Feature Requests** — Propose new ideas via [Community Discussions](https://github.com/ErisPulse/ErisPulse/discussions)
663
+ 3. **Code Contributions** — Please read the [Code Style](docs/en/styleguide/) and [Contribution Guidelines](CONTRIBUTING.md) before submitting a PR
540
664
  4. **Documentation Improvements** — Help improve documentation and example code
541
665
 
542
666
  [Join Community Discussions](https://github.com/ErisPulse/ErisPulse/discussions)
@@ -555,6 +679,14 @@ The health of the ErisPulse project still needs your contribution! We welcome va
555
679
 
556
680
  <img src=".github/assets/thanks.png" width="200" alt="Thanks" />
557
681
 
558
- This project is partially based on [sdkFrame](https://github.com/runoneall/sdkFrame) · The core adapter standardization layer is based on the [OneBot12 specification](https://12.onebot.dev/) · Thank you to all developers and authors who have contributed to the open-source community
682
+ This project is partially based on code from [sdkFrame](https://github.com/runoneall/sdkFrame).
683
+
684
+ The core adapter standardization layer references and benefits from the [OneBot12 specification](https://12.onebot.dev/).
685
+
686
+ Special thanks to the Yunhu ecosystem and community.
687
+
688
+ The early exploration and growth of ErisPulse would not have been possible without the support of the Yunhu developer community, where many ideas, adapters, and practical experiences originated.
689
+
690
+ We also thank all developers and project authors who have contributed to ErisPulse, OneBot, and the open-source community.
559
691
 
560
692
  </div>