ErisPulse 2.6.1.dev0__tar.gz → 2.6.2__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 (201) hide show
  1. erispulse-2.6.2/PKG-INFO +290 -0
  2. erispulse-2.6.2/README.pypi.md +219 -0
  3. erispulse-2.6.2/pyproject.toml +335 -0
  4. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/base.py +2 -2
  5. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/cli.py +56 -11
  6. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/cli.pyi +8 -0
  7. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/create.py +9 -4
  8. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/init.py +12 -14
  9. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/init.pyi +2 -2
  10. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/install.py +4 -4
  11. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/list.py +16 -11
  12. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/run.py +17 -11
  13. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/run.pyi +1 -1
  14. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/self_update.py +10 -12
  15. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/self_update.pyi +3 -3
  16. erispulse-2.6.2/src/ErisPulse/CLI/commands/types.py +543 -0
  17. erispulse-2.6.2/src/ErisPulse/CLI/commands/types.pyi +148 -0
  18. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/upgrade.py +7 -8
  19. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/console.py +25 -1
  20. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/console.pyi +17 -1
  21. erispulse-2.6.2/src/ErisPulse/CLI/hints.py +135 -0
  22. erispulse-2.6.2/src/ErisPulse/CLI/hints.pyi +71 -0
  23. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/__init__.py +3 -3
  24. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/locales/en.py +40 -0
  25. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/locales/ja.py +40 -0
  26. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/locales/ru.py +40 -0
  27. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/locales/zh_cn.py +40 -0
  28. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/locales/zh_tw.py +40 -0
  29. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/registry.py +9 -9
  30. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/registry.pyi +8 -9
  31. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/utils/display.py +9 -8
  32. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/utils/display.pyi +5 -4
  33. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/utils/file_watcher.py +6 -5
  34. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/utils/file_watcher.pyi +1 -0
  35. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/utils/package_manager.py +132 -86
  36. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/utils/package_manager.pyi +43 -29
  37. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/adapter.py +170 -61
  38. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/adapter.pyi +108 -33
  39. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/client.py +1 -2
  40. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/client.pyi +1 -2
  41. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/errors.py +6 -5
  42. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/kv_builder.py +18 -21
  43. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/module.py +4 -3
  44. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/module.pyi +1 -1
  45. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/router.py +7 -6
  46. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/router.pyi +2 -3
  47. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/send_builder.py +9 -11
  48. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/send_builder.pyi +2 -1
  49. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/send_rules.py +3 -3
  50. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/storage.py +3 -9
  51. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/websocket.py +3 -3
  52. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/__init__.py +24 -20
  53. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/__init__.pyi +11 -6
  54. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/base.py +9 -10
  55. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/base.pyi +3 -3
  56. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/command.py +42 -39
  57. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/command.pyi +3 -3
  58. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/message.py +4 -3
  59. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/message.pyi +3 -3
  60. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/meta.py +4 -3
  61. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/meta.pyi +3 -3
  62. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/notice.py +6 -5
  63. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/notice.pyi +3 -3
  64. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/request.py +4 -3
  65. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/request.pyi +3 -3
  66. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/session_type.py +61 -48
  67. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/session_type.pyi +11 -3
  68. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/wrapper.py +144 -71
  69. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/wrapper.pyi +86 -38
  70. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/__init__.pyi +20 -9
  71. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/adapter.py +64 -35
  72. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/adapter.pyi +23 -4
  73. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/assets/__init__.py +10 -14
  74. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/assets/__init__.pyi +4 -5
  75. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/client.py +21 -15
  76. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/client.pyi +3 -2
  77. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/config.py +134 -24
  78. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/config.pyi +2 -0
  79. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/constants.py +8 -7
  80. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/constants.pyi +1 -1
  81. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/__init__.py +5 -6
  82. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/locales/en.py +1 -0
  83. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/locales/ja.py +1 -0
  84. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/locales/ru.py +1 -0
  85. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/locales/zh_cn.py +1 -0
  86. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/locales/zh_tw.py +1 -0
  87. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/lifecycle.py +5 -8
  88. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/lifecycle.pyi +2 -3
  89. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/logger.py +11 -14
  90. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/logger.pyi +3 -2
  91. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/master.py +4 -7
  92. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/master.pyi +4 -2
  93. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/module.py +29 -16
  94. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/module.pyi +10 -4
  95. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/router.py +59 -50
  96. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/router.pyi +8 -9
  97. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/storage.py +70 -65
  98. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/storage.pyi +4 -2
  99. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/__init__.pyi +2 -1
  100. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/finders/adapter.py +7 -6
  101. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/finders/adapter.pyi +6 -6
  102. erispulse-2.6.2/src/ErisPulse/finders/bases/finder.py +393 -0
  103. erispulse-2.6.2/src/ErisPulse/finders/bases/finder.pyi +66 -0
  104. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/finders/module.py +7 -6
  105. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/finders/module.pyi +6 -6
  106. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/adapter.py +5 -5
  107. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/adapter.pyi +1 -1
  108. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/bases/loader.py +3 -3
  109. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/module.py +22 -29
  110. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/module.pyi +1 -4
  111. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/runtime/__init__.py +30 -28
  112. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/runtime/__init__.pyi +2 -1
  113. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/runtime/config_schema.py +8 -10
  114. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/runtime/config_schema.pyi +2 -1
  115. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/runtime/exceptions.py +11 -11
  116. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/runtime/exceptions.pyi +7 -7
  117. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/runtime/frame_config.py +18 -18
  118. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/runtime/frame_config.pyi +13 -13
  119. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/runtime/hints.py +35 -34
  120. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/runtime/hints.pyi +20 -19
  121. erispulse-2.6.2/src/ErisPulse/runtime/tasks.py +63 -0
  122. erispulse-2.6.2/src/ErisPulse/runtime/tasks.pyi +41 -0
  123. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/sdk.py +72 -29
  124. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/sdk.pyi +31 -7
  125. erispulse-2.6.1.dev0/PKG-INFO +0 -718
  126. erispulse-2.6.1.dev0/README.md +0 -649
  127. erispulse-2.6.1.dev0/pyproject.toml +0 -208
  128. erispulse-2.6.1.dev0/src/ErisPulse/finders/bases/finder.py +0 -240
  129. erispulse-2.6.1.dev0/src/ErisPulse/finders/bases/finder.pyi +0 -21
  130. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/.gitignore +0 -0
  131. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/LICENSE +0 -0
  132. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/__init__.py +0 -0
  133. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/__init__.pyi +0 -0
  134. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/base.pyi +0 -0
  135. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/__init__.py +0 -0
  136. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/__init__.pyi +0 -0
  137. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/create.pyi +0 -0
  138. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/install.pyi +0 -0
  139. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/language.py +0 -0
  140. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/language.pyi +0 -0
  141. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/list.pyi +0 -0
  142. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/list_remote.py +0 -0
  143. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/list_remote.pyi +0 -0
  144. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/uninstall.py +0 -0
  145. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/uninstall.pyi +0 -0
  146. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/commands/upgrade.pyi +0 -0
  147. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/__init__.pyi +0 -0
  148. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/locales/__init__.py +0 -0
  149. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/locales/__init__.pyi +0 -0
  150. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/locales/en.pyi +0 -0
  151. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/locales/ja.pyi +0 -0
  152. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/locales/ru.pyi +0 -0
  153. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/locales/zh_cn.pyi +0 -0
  154. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/i18n/locales/zh_tw.pyi +0 -0
  155. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/utils/__init__.py +0 -0
  156. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/CLI/utils/__init__.pyi +0 -0
  157. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/__init__.py +16 -16
  158. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/__init__.pyi +0 -0
  159. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/errors.pyi +0 -0
  160. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/kv_builder.pyi +0 -0
  161. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/manager.py +0 -0
  162. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/manager.pyi +0 -0
  163. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/send_rules.pyi +0 -0
  164. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/storage.pyi +0 -0
  165. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Bases/websocket.pyi +1 -1
  166. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/message_builder.py +0 -0
  167. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/Event/message_builder.pyi +0 -0
  168. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/__init__.py +39 -39
  169. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/assets/error.css +0 -0
  170. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/assets/error.html +0 -0
  171. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/assets/root.css +0 -0
  172. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/assets/root.html +0 -0
  173. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/__init__.pyi +0 -0
  174. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/constants.py +1 -1
  175. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/constants.pyi +0 -0
  176. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/locales/__init__.py +0 -0
  177. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/locales/__init__.pyi +0 -0
  178. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/locales/en.pyi +0 -0
  179. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/locales/ja.pyi +0 -0
  180. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/locales/ru.pyi +0 -0
  181. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/locales/zh_cn.pyi +0 -0
  182. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/Core/i18n/locales/zh_tw.pyi +0 -0
  183. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/__init__.py +4 -4
  184. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/__main__.py +0 -0
  185. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/__main__.pyi +0 -0
  186. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/finders/__init__.py +1 -1
  187. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/finders/__init__.pyi +0 -0
  188. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/finders/bases/__init__.py +0 -0
  189. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/finders/bases/__init__.pyi +0 -0
  190. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/__init__.py +2 -2
  191. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/__init__.pyi +0 -0
  192. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/bases/__init__.py +0 -0
  193. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/bases/__init__.pyi +0 -0
  194. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/bases/loader.pyi +0 -0
  195. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/strategy.py +0 -0
  196. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/strategy.pyi +0 -0
  197. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/strict.py +2 -2
  198. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/loaders/strict.pyi +0 -0
  199. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/py.typed +0 -0
  200. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/runtime/context.py +0 -0
  201. {erispulse-2.6.1.dev0 → erispulse-2.6.2}/src/ErisPulse/runtime/context.pyi +0 -0
@@ -0,0 +1,290 @@
1
+ Metadata-Version: 2.4
2
+ Name: ErisPulse
3
+ Version: 2.6.2
4
+ Summary: Event-driven modular async bot framework — write once, deploy to any platform | 事件驱动的模块化异步机器人框架,一次编写,多平台部署
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
12
+ Maintainer-email: "艾莉丝·格雷拉特(WSu2059)" <wsu2059@qq.com>
13
+ License: MIT License
14
+
15
+ Copyright (c) 2025-2026 ErisPulse
16
+
17
+ Permission is hereby granted, free of charge, to any person obtaining a copy
18
+ of this software and associated documentation files (the "Software"), to deal
19
+ in the Software without restriction, including without limitation the rights
20
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
21
+ copies of the Software, and to permit persons to whom the Software is
22
+ furnished to do so, subject to the following conditions:
23
+
24
+ The above copyright notice and this permission notice shall be included in all
25
+ copies or substantial portions of the Software.
26
+
27
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
28
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
29
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
30
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
31
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
32
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
33
+ SOFTWARE.
34
+ License-File: LICENSE
35
+ Keywords: async,asyncio,bot,bot-framework,chatbot,email,extensible,framework,instant-messaging,kook,matrix,modular,multi-platform,onebot,onebot12,qq,robot,sdk,telegram,yunhu
36
+ Classifier: Development Status :: 4 - Beta
37
+ Classifier: Framework :: AsyncIO
38
+ Classifier: Intended Audience :: Developers
39
+ Classifier: License :: OSI Approved :: MIT License
40
+ Classifier: Operating System :: OS Independent
41
+ Classifier: Programming Language :: Python :: 3
42
+ Classifier: Programming Language :: Python :: 3 :: Only
43
+ Classifier: Programming Language :: Python :: 3.10
44
+ Classifier: Programming Language :: Python :: 3.11
45
+ Classifier: Programming Language :: Python :: 3.12
46
+ Classifier: Programming Language :: Python :: 3.13
47
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
48
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
49
+ Classifier: Typing :: Typed
50
+ Requires-Python: >=3.10
51
+ Requires-Dist: aiohttp>=3.9.0
52
+ Requires-Dist: fastapi>=0.116.1
53
+ Requires-Dist: rich>=13.0.0
54
+ Requires-Dist: toml>=0.10.2
55
+ Requires-Dist: uvicorn>=0.30.0
56
+ Requires-Dist: websockets>=12.0
57
+ Provides-Extra: dev
58
+ Requires-Dist: basedpyright>=1.20.0; extra == 'dev'
59
+ Requires-Dist: pyclean>=3.6.0; extra == 'dev'
60
+ Requires-Dist: ruff>=0.1.7; extra == 'dev'
61
+ Requires-Dist: typing-extensions>=4.7.0; (python_version < '3.11') and extra == 'dev'
62
+ Provides-Extra: test
63
+ Requires-Dist: httpx>=0.24.0; extra == 'test'
64
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == 'test'
65
+ Requires-Dist: pytest-benchmark>=4.0.0; extra == 'test'
66
+ Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
67
+ Requires-Dist: pytest-mock>=3.10.0; extra == 'test'
68
+ Requires-Dist: pytest-xdist>=3.0.0; extra == 'test'
69
+ Requires-Dist: pytest>=7.0.0; extra == 'test'
70
+ Description-Content-Type: text/markdown
71
+
72
+ ![ErisPulse](https://raw.githubusercontent.com/ErisPulse/ErisPulse/main/.github/assets/mascot-hero.png)
73
+
74
+ # ErisPulse
75
+
76
+ **Write once, deploy on multiple platforms.**
77
+
78
+ An event-driven, multi-platform chatbot development framework based on the OneBot12 standard.
79
+
80
+ [![PyPI](https://img.shields.io/pypi/v/ErisPulse?style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ErisPulse/)
81
+ [![Python](https://img.shields.io/badge/Python-3.10+-FFD43B?style=for-the-badge&logo=python&logoColor=blue)](https://pypi.org/project/ErisPulse/)
82
+ [![License](https://img.shields.io/badge/License-MIT-blue?style=for-the-badge)](https://github.com/ErisPulse/ErisPulse/blob/main/LICENSE)
83
+ [![Docs](https://img.shields.io/badge/docs-erisdev.com-FF6B9D?style=for-the-badge&logo=bookstack&logoColor=white)](https://www.erisdev.com)
84
+ [![Stars](https://img.shields.io/github/stars/ErisPulse/ErisPulse?style=for-the-badge&logo=github&color=brightgreen)](https://github.com/ErisPulse/ErisPulse)
85
+ [![Downloads](https://img.shields.io/pepy/dt/ErisPulse?style=for-the-badge&color=blue)](https://pepy.tech/project/ErisPulse)
86
+ [![Discussions](https://img.shields.io/badge/GitHub-Discussions-181717?style=for-the-badge&logo=github)](https://github.com/ErisPulse/ErisPulse/discussions)
87
+ [![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white)](https://hub.docker.com/r/erispulse/erispulse)
88
+
89
+ ---
90
+
91
+ ## Overview
92
+
93
+ ErisPulse is an event-driven, modular async framework for building chatbots that run on **multiple platforms from a single codebase**. It implements the [OneBot12](https://12.onebot.dev/) standard event model, so you write command handlers, conversation flows and message senders once — then deploy them to QQ, Telegram, Discord, Kook, Yunhu, Matrix, Email, WeChat and more without touching business logic.
94
+
95
+ It ships with a flexible plugin system, hot reload, a visual Dashboard, an AI Builder that turns natural-language prompts into modules, and the `epsdk` CLI scaffolding tool — suitable for everything from a simple chatbot to a complex automation pipeline.
96
+
97
+ ## Key Features
98
+
99
+ - **Event-driven architecture** — Clear event model based on OneBot12, making message handling intuitive and consistent across platforms.
100
+ - **Cross-platform compatibility** — Write handlers once, deploy to 15+ platforms without rewriting business logic.
101
+ - **Modular design** — Flexible plugin system with hot-plug module management and per-module configuration.
102
+ - **Hot reload** — Iterate on code during development without restarting the bot process.
103
+ - **Chainable SendDSL** — Express `@mention`, reply, retry, timeout, progress hook and bulk send as a single fluent chain.
104
+ - **Complete toolchain** — `epsdk` CLI, visual Dashboard, AI Builder and Module Market included out of the box.
105
+
106
+ ## Installation
107
+
108
+ ### Option 1 — pip (for library / module developers)
109
+
110
+ ```bash
111
+ pip install ErisPulse
112
+ ```
113
+
114
+ ### Option 2 — Docker (recommended for production)
115
+
116
+ ```bash
117
+ docker pull erispulse/erispulse:latest
118
+ ```
119
+
120
+ Quick start with `docker-compose.yml`:
121
+
122
+ ```bash
123
+ curl -O https://raw.githubusercontent.com/ErisPulse/ErisPulse/main/docker-compose.yml
124
+ ERISPULSE_DASHBOARD_TOKEN=your-token docker compose up -d
125
+ ```
126
+
127
+ The image bundles the ErisPulse framework **and** the Dashboard management panel, supporting `linux/amd64` and `linux/arm64`. After startup, visit `http://<host>:<port>/Dashboard` and log in with the token you set.
128
+
129
+ <details>
130
+ <summary>Docker Hub unavailable? Use GitHub Container Registry</summary>
131
+
132
+ ```bash
133
+ docker pull ghcr.io/erispulse/erispulse:latest
134
+ ```
135
+
136
+ And update the image in your `docker-compose.yml`:
137
+
138
+ ```yaml
139
+ image: ghcr.io/erispulse/erispulse:latest
140
+ ```
141
+
142
+ </details>
143
+
144
+ <details>
145
+ <summary>Docker environment variables</summary>
146
+
147
+ | Variable | Default | Description |
148
+ |------|--------|------|
149
+ | `ERISPULSE_CHANNEL` | `stable` | Version channel: `stable` or `dev` (pre-release) |
150
+ | `ERISPULSE_UPDATE_ON_START` | `false` | Auto-update to the latest version on container start |
151
+ | `ERISPULSE_DASHBOARD_TOKEN` | empty | Dashboard login token |
152
+ | `ERISPULSE_PORT` | `8000` | Dashboard port mapping |
153
+ | `TZ` | `Asia/Shanghai` | Container timezone |
154
+
155
+ </details>
156
+
157
+ ### Option 3 — One-click install script (auto-detects environment)
158
+
159
+ The installer detects Docker / Python / uv and guides you through the most suitable setup. Supports Chinese, English, Japanese, Russian and Traditional Chinese.
160
+
161
+ Windows (PowerShell):
162
+
163
+ ```powershell
164
+ irm https://get.erisdev.com/install.ps1 -OutFile install.ps1; powershell -ExecutionPolicy Bypass -File install.ps1
165
+ ```
166
+
167
+ macOS / Linux:
168
+
169
+ ```bash
170
+ curl -fsSL https://get.erisdev.com/install.sh -o install.sh && chmod +x install.sh && ./install.sh
171
+ ```
172
+
173
+ ## Quick Start
174
+
175
+ Initialize a new project:
176
+
177
+ ```bash
178
+ # Interactive initialization
179
+ epsdk init
180
+
181
+ # Quick initialization with a project name
182
+ epsdk init -q -n my_bot
183
+ ```
184
+
185
+ Create a `main.py` file:
186
+
187
+ ```python
188
+ from ErisPulse import sdk
189
+ from ErisPulse.Core.Event import command
190
+
191
+ @command("hello", help="Send greeting message")
192
+ async def hello_handler(event):
193
+ user_name = event.get_user_nickname() or "friend"
194
+ await event.reply(f"Hello, {user_name}!")
195
+
196
+ @command("ping", help="Test if the bot is online")
197
+ async def ping_handler(event):
198
+ await event.reply("Pong! The bot is running normally.")
199
+
200
+ if __name__ == "__main__":
201
+ import asyncio
202
+ asyncio.run(sdk.run(keep_running=True))
203
+ ```
204
+
205
+ Run it:
206
+
207
+ ```bash
208
+ epsdk run main.py
209
+ # Or in development mode with hot reload
210
+ epsdk run main.py --reload
211
+ ```
212
+
213
+ Now send `/hello` or `/ping` to the bot on any connected platform — the same handlers work everywhere.
214
+
215
+ For the full walkthrough (multi-turn conversations, request handlers, adapter configuration), see the [Quick Start guide](https://www.erisdev.com#docs).
216
+
217
+ ## The SendDSL — fluent message sending
218
+
219
+ Compose the entire send flow — `@mention`, reply, retry, timeout, progress hook and bulk dispatch — as one readable chain:
220
+
221
+ ```python
222
+ yunhu = sdk.adapter.get("yunhu")
223
+
224
+ # Single send: @user + reply + retry + timeout + success callback
225
+ await (yunhu.Send.To("group", "123")
226
+ .At("456").Reply("msg_789")
227
+ .Retry(3).Timeout(10)
228
+ .Hook(lambda r: print("Send successful!"))
229
+ .Text("Hello"))
230
+
231
+ # Bulk send: build multiple messages, then dispatch in one chain
232
+ results = await (yunhu.Send.To("user", "123")
233
+ .Build()
234
+ .Text("Notification 1")
235
+ .Image("pic.jpg")
236
+ .Retry(2)
237
+ .send_all())
238
+ ```
239
+
240
+ Supported chainable methods include `Hook` (success callback), `Retry` (failure retry), `Timeout` (timeout cancellation), `OnProgress` (progress monitoring), `Defer` (delayed send) and `Build` (batch construction).
241
+
242
+ > Full reference: [SendDSL documentation](https://www.erisdev.com#docs)
243
+
244
+ ## Supported Platforms
245
+
246
+ Officially maintained adapters (community contributions welcome):
247
+
248
+ - [Kook](https://github.com/shanfishapp/ErisPulse-KookAdapter) — instant messaging platform
249
+ - [Matrix](https://github.com/ErisPulse/ErisPulse-MatrixAdapter) — decentralized communication protocol
250
+ - [OneBot11](https://github.com/ErisPulse/ErisPulse-OneBot11Adapter) — universal OneBot v11 protocol
251
+ - [OneBot12](https://github.com/ErisPulse/ErisPulse-OneBot12Adapter) — OneBot v12 standard protocol
252
+ - [QQ Bot](https://github.com/ErisPulse/ErisPulse-QQBotAdapter) — official QQ bot platform
253
+ - [Telegram](https://github.com/ErisPulse/ErisPulse-TelegramAdapter) — global instant messaging
254
+ - [Discord](https://github.com/ErisPulse/ErisPulse-DiscordAdapter) — community communication platform
255
+ - [Yunhu](https://github.com/ErisPulse/ErisPulse-YunhuAdapter) / [Yunhu User](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) — enterprise IM
256
+ - [Email](https://github.com/ErisPulse/ErisPulse-EmailAdapter) — email protocol adapter
257
+ - [WeChat Official Account](https://github.com/ErisPulse/ErisPulse-WechatMpAdapter)
258
+ - [Webhook](https://github.com/ErisPulse/ErisPulse-WebhookAdapter) — HTTP bridge to any system
259
+ - [Sandbox](https://github.com/ErisPulse/ErisPulse-SandboxAdapter) — in-browser debugging, no real platform needed
260
+ - [HuaFeng Coffee House](https://github.com/ErisPulse/ErisPulse-Ideaura/)
261
+
262
+ See the [adapter guide](https://www.erisdev.com#docs) for configuration details.
263
+
264
+ ## Ecosystem
265
+
266
+ - **Framework** — core runtime with a unified event & message model.
267
+ - **Dashboard** — visual management for plugins, logs and configuration. ([live demo](https://dashdemo.erisdev.com/))
268
+ - **AI Builder** — natural-language prompts → ready-to-use modules. ([try it](https://www.erisdev.com/#builder))
269
+ - **Module Market** — plug-and-play community plugins. ([browse](https://www.erisdev.com/#market))
270
+ - **CLI** — `epsdk` scaffolding, project init, run and reload.
271
+ - **Docker** — multi-architecture images at `erispulse/erispulse`.
272
+
273
+ ## Documentation & Community
274
+
275
+ - 📖 **Documentation & API reference:** [erisdev.com](https://www.erisdev.com)
276
+ - 💬 **GitHub Discussions:** [ErisPulse/ErisPulse/discussions](https://github.com/ErisPulse/ErisPulse/discussions)
277
+ - 📋 **Changelog:** [CHANGELOG.md](https://github.com/ErisPulse/ErisPulse/blob/main/CHANGELOG.md)
278
+ - 🤝 **Contributing:** [CONTRIBUTING.md](https://github.com/ErisPulse/ErisPulse/blob/main/CONTRIBUTING.md)
279
+ - 🐛 **Bug reports:** [GitHub Issues](https://github.com/ErisPulse/ErisPulse/issues)
280
+ - 🧠 **DeepWiki:** [deepwiki.com/ErisPulse/ErisPulse](https://deepwiki.com/ErisPulse/ErisPulse)
281
+
282
+ Chat with us on:
283
+
284
+ - Telegram: <https://t.me/ErisPulse>
285
+ - QQ Group: <https://qm.qq.com/q/TOwnCmypcy>
286
+ - Yunhu Group: <https://yhfx.jwznb.com/share?key=VWJL4fTWXepa&ts=1781889199>
287
+
288
+ ---
289
+
290
+ **Why ErisPulse?** Because platform differences should never be your bottleneck — focus on business logic, and let the framework handle the rest. Write once, deploy everywhere.
@@ -0,0 +1,219 @@
1
+ ![ErisPulse](https://raw.githubusercontent.com/ErisPulse/ErisPulse/main/.github/assets/mascot-hero.png)
2
+
3
+ # ErisPulse
4
+
5
+ **Write once, deploy on multiple platforms.**
6
+
7
+ An event-driven, multi-platform chatbot development framework based on the OneBot12 standard.
8
+
9
+ [![PyPI](https://img.shields.io/pypi/v/ErisPulse?style=for-the-badge&logo=pypi&logoColor=white)](https://pypi.org/project/ErisPulse/)
10
+ [![Python](https://img.shields.io/badge/Python-3.10+-FFD43B?style=for-the-badge&logo=python&logoColor=blue)](https://pypi.org/project/ErisPulse/)
11
+ [![License](https://img.shields.io/badge/License-MIT-blue?style=for-the-badge)](https://github.com/ErisPulse/ErisPulse/blob/main/LICENSE)
12
+ [![Docs](https://img.shields.io/badge/docs-erisdev.com-FF6B9D?style=for-the-badge&logo=bookstack&logoColor=white)](https://www.erisdev.com)
13
+ [![Stars](https://img.shields.io/github/stars/ErisPulse/ErisPulse?style=for-the-badge&logo=github&color=brightgreen)](https://github.com/ErisPulse/ErisPulse)
14
+ [![Downloads](https://img.shields.io/pepy/dt/ErisPulse?style=for-the-badge&color=blue)](https://pepy.tech/project/ErisPulse)
15
+ [![Discussions](https://img.shields.io/badge/GitHub-Discussions-181717?style=for-the-badge&logo=github)](https://github.com/ErisPulse/ErisPulse/discussions)
16
+ [![Docker](https://img.shields.io/badge/Docker-2496ED?style=for-the-badge&logo=docker&logoColor=white)](https://hub.docker.com/r/erispulse/erispulse)
17
+
18
+ ---
19
+
20
+ ## Overview
21
+
22
+ ErisPulse is an event-driven, modular async framework for building chatbots that run on **multiple platforms from a single codebase**. It implements the [OneBot12](https://12.onebot.dev/) standard event model, so you write command handlers, conversation flows and message senders once — then deploy them to QQ, Telegram, Discord, Kook, Yunhu, Matrix, Email, WeChat and more without touching business logic.
23
+
24
+ It ships with a flexible plugin system, hot reload, a visual Dashboard, an AI Builder that turns natural-language prompts into modules, and the `epsdk` CLI scaffolding tool — suitable for everything from a simple chatbot to a complex automation pipeline.
25
+
26
+ ## Key Features
27
+
28
+ - **Event-driven architecture** — Clear event model based on OneBot12, making message handling intuitive and consistent across platforms.
29
+ - **Cross-platform compatibility** — Write handlers once, deploy to 15+ platforms without rewriting business logic.
30
+ - **Modular design** — Flexible plugin system with hot-plug module management and per-module configuration.
31
+ - **Hot reload** — Iterate on code during development without restarting the bot process.
32
+ - **Chainable SendDSL** — Express `@mention`, reply, retry, timeout, progress hook and bulk send as a single fluent chain.
33
+ - **Complete toolchain** — `epsdk` CLI, visual Dashboard, AI Builder and Module Market included out of the box.
34
+
35
+ ## Installation
36
+
37
+ ### Option 1 — pip (for library / module developers)
38
+
39
+ ```bash
40
+ pip install ErisPulse
41
+ ```
42
+
43
+ ### Option 2 — Docker (recommended for production)
44
+
45
+ ```bash
46
+ docker pull erispulse/erispulse:latest
47
+ ```
48
+
49
+ Quick start with `docker-compose.yml`:
50
+
51
+ ```bash
52
+ curl -O https://raw.githubusercontent.com/ErisPulse/ErisPulse/main/docker-compose.yml
53
+ ERISPULSE_DASHBOARD_TOKEN=your-token docker compose up -d
54
+ ```
55
+
56
+ The image bundles the ErisPulse framework **and** the Dashboard management panel, supporting `linux/amd64` and `linux/arm64`. After startup, visit `http://<host>:<port>/Dashboard` and log in with the token you set.
57
+
58
+ <details>
59
+ <summary>Docker Hub unavailable? Use GitHub Container Registry</summary>
60
+
61
+ ```bash
62
+ docker pull ghcr.io/erispulse/erispulse:latest
63
+ ```
64
+
65
+ And update the image in your `docker-compose.yml`:
66
+
67
+ ```yaml
68
+ image: ghcr.io/erispulse/erispulse:latest
69
+ ```
70
+
71
+ </details>
72
+
73
+ <details>
74
+ <summary>Docker environment variables</summary>
75
+
76
+ | Variable | Default | Description |
77
+ |------|--------|------|
78
+ | `ERISPULSE_CHANNEL` | `stable` | Version channel: `stable` or `dev` (pre-release) |
79
+ | `ERISPULSE_UPDATE_ON_START` | `false` | Auto-update to the latest version on container start |
80
+ | `ERISPULSE_DASHBOARD_TOKEN` | empty | Dashboard login token |
81
+ | `ERISPULSE_PORT` | `8000` | Dashboard port mapping |
82
+ | `TZ` | `Asia/Shanghai` | Container timezone |
83
+
84
+ </details>
85
+
86
+ ### Option 3 — One-click install script (auto-detects environment)
87
+
88
+ The installer detects Docker / Python / uv and guides you through the most suitable setup. Supports Chinese, English, Japanese, Russian and Traditional Chinese.
89
+
90
+ Windows (PowerShell):
91
+
92
+ ```powershell
93
+ irm https://get.erisdev.com/install.ps1 -OutFile install.ps1; powershell -ExecutionPolicy Bypass -File install.ps1
94
+ ```
95
+
96
+ macOS / Linux:
97
+
98
+ ```bash
99
+ curl -fsSL https://get.erisdev.com/install.sh -o install.sh && chmod +x install.sh && ./install.sh
100
+ ```
101
+
102
+ ## Quick Start
103
+
104
+ Initialize a new project:
105
+
106
+ ```bash
107
+ # Interactive initialization
108
+ epsdk init
109
+
110
+ # Quick initialization with a project name
111
+ epsdk init -q -n my_bot
112
+ ```
113
+
114
+ Create a `main.py` file:
115
+
116
+ ```python
117
+ from ErisPulse import sdk
118
+ from ErisPulse.Core.Event import command
119
+
120
+ @command("hello", help="Send greeting message")
121
+ async def hello_handler(event):
122
+ user_name = event.get_user_nickname() or "friend"
123
+ await event.reply(f"Hello, {user_name}!")
124
+
125
+ @command("ping", help="Test if the bot is online")
126
+ async def ping_handler(event):
127
+ await event.reply("Pong! The bot is running normally.")
128
+
129
+ if __name__ == "__main__":
130
+ import asyncio
131
+ asyncio.run(sdk.run(keep_running=True))
132
+ ```
133
+
134
+ Run it:
135
+
136
+ ```bash
137
+ epsdk run main.py
138
+ # Or in development mode with hot reload
139
+ epsdk run main.py --reload
140
+ ```
141
+
142
+ Now send `/hello` or `/ping` to the bot on any connected platform — the same handlers work everywhere.
143
+
144
+ For the full walkthrough (multi-turn conversations, request handlers, adapter configuration), see the [Quick Start guide](https://www.erisdev.com#docs).
145
+
146
+ ## The SendDSL — fluent message sending
147
+
148
+ Compose the entire send flow — `@mention`, reply, retry, timeout, progress hook and bulk dispatch — as one readable chain:
149
+
150
+ ```python
151
+ yunhu = sdk.adapter.get("yunhu")
152
+
153
+ # Single send: @user + reply + retry + timeout + success callback
154
+ await (yunhu.Send.To("group", "123")
155
+ .At("456").Reply("msg_789")
156
+ .Retry(3).Timeout(10)
157
+ .Hook(lambda r: print("Send successful!"))
158
+ .Text("Hello"))
159
+
160
+ # Bulk send: build multiple messages, then dispatch in one chain
161
+ results = await (yunhu.Send.To("user", "123")
162
+ .Build()
163
+ .Text("Notification 1")
164
+ .Image("pic.jpg")
165
+ .Retry(2)
166
+ .send_all())
167
+ ```
168
+
169
+ Supported chainable methods include `Hook` (success callback), `Retry` (failure retry), `Timeout` (timeout cancellation), `OnProgress` (progress monitoring), `Defer` (delayed send) and `Build` (batch construction).
170
+
171
+ > Full reference: [SendDSL documentation](https://www.erisdev.com#docs)
172
+
173
+ ## Supported Platforms
174
+
175
+ Officially maintained adapters (community contributions welcome):
176
+
177
+ - [Kook](https://github.com/shanfishapp/ErisPulse-KookAdapter) — instant messaging platform
178
+ - [Matrix](https://github.com/ErisPulse/ErisPulse-MatrixAdapter) — decentralized communication protocol
179
+ - [OneBot11](https://github.com/ErisPulse/ErisPulse-OneBot11Adapter) — universal OneBot v11 protocol
180
+ - [OneBot12](https://github.com/ErisPulse/ErisPulse-OneBot12Adapter) — OneBot v12 standard protocol
181
+ - [QQ Bot](https://github.com/ErisPulse/ErisPulse-QQBotAdapter) — official QQ bot platform
182
+ - [Telegram](https://github.com/ErisPulse/ErisPulse-TelegramAdapter) — global instant messaging
183
+ - [Discord](https://github.com/ErisPulse/ErisPulse-DiscordAdapter) — community communication platform
184
+ - [Yunhu](https://github.com/ErisPulse/ErisPulse-YunhuAdapter) / [Yunhu User](https://github.com/wsu2059q/ErisPulse-YunhuUserAdapter) — enterprise IM
185
+ - [Email](https://github.com/ErisPulse/ErisPulse-EmailAdapter) — email protocol adapter
186
+ - [WeChat Official Account](https://github.com/ErisPulse/ErisPulse-WechatMpAdapter)
187
+ - [Webhook](https://github.com/ErisPulse/ErisPulse-WebhookAdapter) — HTTP bridge to any system
188
+ - [Sandbox](https://github.com/ErisPulse/ErisPulse-SandboxAdapter) — in-browser debugging, no real platform needed
189
+ - [HuaFeng Coffee House](https://github.com/ErisPulse/ErisPulse-Ideaura/)
190
+
191
+ See the [adapter guide](https://www.erisdev.com#docs) for configuration details.
192
+
193
+ ## Ecosystem
194
+
195
+ - **Framework** — core runtime with a unified event & message model.
196
+ - **Dashboard** — visual management for plugins, logs and configuration. ([live demo](https://dashdemo.erisdev.com/))
197
+ - **AI Builder** — natural-language prompts → ready-to-use modules. ([try it](https://www.erisdev.com/#builder))
198
+ - **Module Market** — plug-and-play community plugins. ([browse](https://www.erisdev.com/#market))
199
+ - **CLI** — `epsdk` scaffolding, project init, run and reload.
200
+ - **Docker** — multi-architecture images at `erispulse/erispulse`.
201
+
202
+ ## Documentation & Community
203
+
204
+ - 📖 **Documentation & API reference:** [erisdev.com](https://www.erisdev.com)
205
+ - 💬 **GitHub Discussions:** [ErisPulse/ErisPulse/discussions](https://github.com/ErisPulse/ErisPulse/discussions)
206
+ - 📋 **Changelog:** [CHANGELOG.md](https://github.com/ErisPulse/ErisPulse/blob/main/CHANGELOG.md)
207
+ - 🤝 **Contributing:** [CONTRIBUTING.md](https://github.com/ErisPulse/ErisPulse/blob/main/CONTRIBUTING.md)
208
+ - 🐛 **Bug reports:** [GitHub Issues](https://github.com/ErisPulse/ErisPulse/issues)
209
+ - 🧠 **DeepWiki:** [deepwiki.com/ErisPulse/ErisPulse](https://deepwiki.com/ErisPulse/ErisPulse)
210
+
211
+ Chat with us on:
212
+
213
+ - Telegram: <https://t.me/ErisPulse>
214
+ - QQ Group: <https://qm.qq.com/q/TOwnCmypcy>
215
+ - Yunhu Group: <https://yhfx.jwznb.com/share?key=VWJL4fTWXepa&ts=1781889199>
216
+
217
+ ---
218
+
219
+ **Why ErisPulse?** Because platform differences should never be your bottleneck — focus on business logic, and let the framework handle the rest. Write once, deploy everywhere.