pygpt-net 2.4.37__py3-none-any.whl → 2.4.42__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. CHANGELOG.md +37 -0
  2. README.md +176 -182
  3. pygpt_net/CHANGELOG.txt +37 -0
  4. pygpt_net/__init__.py +3 -3
  5. pygpt_net/app.py +3 -1
  6. pygpt_net/controller/__init__.py +7 -3
  7. pygpt_net/controller/access/control.py +1 -1
  8. pygpt_net/controller/access/voice.py +11 -5
  9. pygpt_net/controller/agent/experts.py +11 -6
  10. pygpt_net/controller/agent/legacy.py +8 -6
  11. pygpt_net/controller/agent/llama.py +4 -2
  12. pygpt_net/controller/assistant/__init__.py +9 -4
  13. pygpt_net/controller/assistant/batch.py +38 -21
  14. pygpt_net/controller/assistant/editor.py +7 -6
  15. pygpt_net/controller/assistant/files.py +23 -7
  16. pygpt_net/controller/assistant/store.py +20 -7
  17. pygpt_net/controller/assistant/threads.py +34 -8
  18. pygpt_net/controller/attachment.py +29 -10
  19. pygpt_net/controller/audio/__init__.py +26 -5
  20. pygpt_net/controller/calendar/__init__.py +23 -4
  21. pygpt_net/controller/calendar/note.py +57 -11
  22. pygpt_net/controller/camera.py +4 -12
  23. pygpt_net/controller/chat/__init__.py +5 -3
  24. pygpt_net/controller/chat/attachment.py +34 -7
  25. pygpt_net/controller/chat/audio.py +2 -2
  26. pygpt_net/controller/chat/command.py +4 -2
  27. pygpt_net/controller/chat/common.py +11 -4
  28. pygpt_net/controller/chat/files.py +10 -3
  29. pygpt_net/controller/chat/image.py +17 -5
  30. pygpt_net/controller/chat/input.py +10 -7
  31. pygpt_net/controller/chat/output.py +21 -6
  32. pygpt_net/controller/chat/render.py +100 -21
  33. pygpt_net/controller/chat/response.py +34 -7
  34. pygpt_net/controller/chat/stream.py +4 -2
  35. pygpt_net/controller/chat/text.py +6 -4
  36. pygpt_net/controller/command.py +11 -3
  37. pygpt_net/controller/config/__init__.py +34 -6
  38. pygpt_net/controller/config/field/checkbox.py +7 -4
  39. pygpt_net/controller/config/field/cmd.py +7 -5
  40. pygpt_net/controller/config/field/combo.py +14 -6
  41. pygpt_net/controller/config/field/dictionary.py +14 -11
  42. pygpt_net/controller/config/field/input.py +9 -6
  43. pygpt_net/controller/config/field/slider.py +11 -8
  44. pygpt_net/controller/config/field/textarea.py +8 -5
  45. pygpt_net/controller/config/placeholder.py +66 -21
  46. pygpt_net/controller/ctx/__init__.py +138 -49
  47. pygpt_net/controller/ctx/common.py +15 -4
  48. pygpt_net/controller/ctx/extra.py +11 -3
  49. pygpt_net/controller/ctx/summarizer.py +24 -5
  50. pygpt_net/controller/debug/__init__.py +27 -6
  51. pygpt_net/controller/dialogs/confirm.py +34 -7
  52. pygpt_net/controller/dialogs/debug.py +4 -2
  53. pygpt_net/controller/dialogs/info.py +7 -2
  54. pygpt_net/controller/files.py +48 -10
  55. pygpt_net/controller/finder.py +11 -5
  56. pygpt_net/controller/idx/__init__.py +10 -3
  57. pygpt_net/controller/idx/common.py +4 -2
  58. pygpt_net/controller/idx/indexer.py +25 -17
  59. pygpt_net/controller/idx/settings.py +9 -3
  60. pygpt_net/controller/kernel/__init__.py +34 -8
  61. pygpt_net/controller/kernel/reply.py +12 -3
  62. pygpt_net/controller/kernel/stack.py +5 -3
  63. pygpt_net/controller/lang/custom.py +2 -7
  64. pygpt_net/controller/lang/mapping.py +5 -3
  65. pygpt_net/controller/layout.py +2 -2
  66. pygpt_net/controller/mode.py +16 -4
  67. pygpt_net/controller/model/__init__.py +14 -3
  68. pygpt_net/controller/model/editor.py +8 -3
  69. pygpt_net/controller/notepad.py +26 -12
  70. pygpt_net/controller/painter/capture.py +23 -4
  71. pygpt_net/controller/painter/common.py +9 -7
  72. pygpt_net/controller/plugins/__init__.py +19 -5
  73. pygpt_net/controller/plugins/presets.py +15 -6
  74. pygpt_net/controller/plugins/settings.py +9 -3
  75. pygpt_net/controller/presets/__init__.py +55 -16
  76. pygpt_net/controller/presets/editor.py +26 -10
  77. pygpt_net/controller/settings/__init__.py +3 -2
  78. pygpt_net/controller/settings/editor.py +29 -7
  79. pygpt_net/controller/settings/profile.py +22 -5
  80. pygpt_net/controller/theme/__init__.py +54 -12
  81. pygpt_net/controller/theme/common.py +24 -2
  82. pygpt_net/controller/theme/markdown.py +32 -16
  83. pygpt_net/controller/theme/menu.py +26 -5
  84. pygpt_net/controller/theme/nodes.py +2 -5
  85. pygpt_net/controller/tools/__init__.py +40 -2
  86. pygpt_net/controller/ui/__init__.py +4 -6
  87. pygpt_net/controller/ui/mode.py +16 -21
  88. pygpt_net/controller/ui/tabs.py +363 -65
  89. pygpt_net/core/access/actions.py +6 -4
  90. pygpt_net/core/access/shortcuts.py +4 -3
  91. pygpt_net/core/access/voice.py +6 -5
  92. pygpt_net/core/agents/legacy.py +4 -2
  93. pygpt_net/core/agents/memory.py +7 -2
  94. pygpt_net/core/agents/observer/evaluation.py +15 -7
  95. pygpt_net/core/agents/provider.py +9 -4
  96. pygpt_net/core/agents/runner.py +61 -15
  97. pygpt_net/core/agents/tools.py +23 -5
  98. pygpt_net/core/assistants/__init__.py +6 -4
  99. pygpt_net/core/assistants/files.py +35 -12
  100. pygpt_net/core/assistants/store.py +20 -10
  101. pygpt_net/core/attachments/__init__.py +54 -15
  102. pygpt_net/core/attachments/context.py +92 -29
  103. pygpt_net/core/audio/__init__.py +74 -3
  104. pygpt_net/core/audio/context.py +7 -2
  105. pygpt_net/core/audio/whisper.py +37 -0
  106. pygpt_net/core/bridge/__init__.py +22 -6
  107. pygpt_net/core/bridge/context.py +5 -3
  108. pygpt_net/core/bridge/worker.py +2 -2
  109. pygpt_net/core/calendar/__init__.py +57 -11
  110. pygpt_net/core/chain/__init__.py +8 -2
  111. pygpt_net/core/chain/chat.py +10 -8
  112. pygpt_net/core/chain/completion.py +10 -7
  113. pygpt_net/core/command.py +62 -17
  114. pygpt_net/core/ctx/__init__.py +260 -58
  115. pygpt_net/core/ctx/bag.py +25 -4
  116. pygpt_net/core/ctx/container.py +28 -17
  117. pygpt_net/core/ctx/idx.py +45 -8
  118. pygpt_net/core/ctx/output.py +95 -74
  119. pygpt_net/core/ctx/reply.py +5 -2
  120. pygpt_net/core/db/__init__.py +8 -7
  121. pygpt_net/core/db/viewer.py +17 -11
  122. pygpt_net/core/debug/__init__.py +10 -9
  123. pygpt_net/core/debug/events.py +22 -10
  124. pygpt_net/core/debug/tabs.py +9 -3
  125. pygpt_net/core/docker/__init__.py +11 -5
  126. pygpt_net/core/docker/builder.py +11 -3
  127. pygpt_net/core/events/app.py +5 -3
  128. pygpt_net/core/events/base.py +11 -5
  129. pygpt_net/core/events/control.py +5 -3
  130. pygpt_net/core/events/event.py +17 -7
  131. pygpt_net/core/events/kernel.py +5 -3
  132. pygpt_net/core/events/render.py +5 -3
  133. pygpt_net/core/experts/__init__.py +5 -4
  134. pygpt_net/core/filesystem/__init__.py +52 -34
  135. pygpt_net/core/filesystem/actions.py +8 -5
  136. pygpt_net/core/filesystem/editor.py +13 -3
  137. pygpt_net/core/filesystem/types.py +12 -7
  138. pygpt_net/core/filesystem/url.py +7 -3
  139. pygpt_net/core/history.py +3 -2
  140. pygpt_net/core/idx/__init__.py +48 -27
  141. pygpt_net/core/idx/chat.py +51 -17
  142. pygpt_net/core/idx/context.py +6 -2
  143. pygpt_net/core/idx/indexing.py +107 -42
  144. pygpt_net/core/idx/llm.py +11 -3
  145. pygpt_net/core/idx/metadata.py +13 -3
  146. pygpt_net/core/idx/types/ctx.py +32 -6
  147. pygpt_net/core/idx/types/external.py +41 -7
  148. pygpt_net/core/idx/types/files.py +31 -6
  149. pygpt_net/core/image.py +15 -4
  150. pygpt_net/core/installer.py +2 -4
  151. pygpt_net/core/llm/__init__.py +13 -3
  152. pygpt_net/core/locale.py +34 -8
  153. pygpt_net/core/models.py +63 -17
  154. pygpt_net/core/modes.py +11 -13
  155. pygpt_net/core/notepad.py +10 -5
  156. pygpt_net/core/plugins.py +31 -19
  157. pygpt_net/core/presets.py +37 -17
  158. pygpt_net/core/profile.py +21 -7
  159. pygpt_net/core/prompt/__init__.py +10 -3
  160. pygpt_net/core/prompt/custom.py +7 -6
  161. pygpt_net/core/prompt/template.py +9 -3
  162. pygpt_net/core/render/base.py +117 -22
  163. pygpt_net/core/render/markdown/body.py +27 -7
  164. pygpt_net/core/render/markdown/renderer.py +119 -22
  165. pygpt_net/core/render/plain/body.py +22 -5
  166. pygpt_net/core/render/plain/renderer.py +97 -21
  167. pygpt_net/core/render/web/body.py +75 -25
  168. pygpt_net/core/render/web/parser.py +3 -1
  169. pygpt_net/core/render/web/renderer.py +313 -63
  170. pygpt_net/core/settings.py +10 -5
  171. pygpt_net/core/tabs/__init__.py +290 -103
  172. pygpt_net/core/tabs/tab.py +26 -5
  173. pygpt_net/core/tokens.py +47 -12
  174. pygpt_net/core/updater/__init__.py +20 -7
  175. pygpt_net/core/vision/analyzer.py +29 -6
  176. pygpt_net/core/{web.py → web/__init__.py} +29 -7
  177. pygpt_net/core/web/helpers.py +237 -0
  178. pygpt_net/data/config/config.json +15 -4
  179. pygpt_net/data/config/models.json +3 -3
  180. pygpt_net/data/config/modes.json +3 -3
  181. pygpt_net/data/config/settings.json +55 -10
  182. pygpt_net/data/config/settings_section.json +3 -0
  183. pygpt_net/data/css/style.light.css +1 -0
  184. pygpt_net/data/css/{web.css → web-blocks.css} +162 -133
  185. pygpt_net/data/css/{web.light.css → web-blocks.light.css} +7 -0
  186. pygpt_net/data/css/web-chatgpt.css +350 -0
  187. pygpt_net/data/css/web-chatgpt.dark.css +64 -0
  188. pygpt_net/data/css/web-chatgpt.light.css +75 -0
  189. pygpt_net/data/css/web-chatgpt_wide.css +350 -0
  190. pygpt_net/data/css/web-chatgpt_wide.dark.css +64 -0
  191. pygpt_net/data/css/web-chatgpt_wide.light.css +75 -0
  192. pygpt_net/data/icons/split_screen.svg +1 -0
  193. pygpt_net/data/locale/locale.de.ini +12 -0
  194. pygpt_net/data/locale/locale.en.ini +18 -2
  195. pygpt_net/data/locale/locale.es.ini +12 -0
  196. pygpt_net/data/locale/locale.fr.ini +12 -0
  197. pygpt_net/data/locale/locale.it.ini +12 -0
  198. pygpt_net/data/locale/locale.pl.ini +12 -0
  199. pygpt_net/data/locale/locale.uk.ini +12 -0
  200. pygpt_net/data/locale/locale.zh.ini +12 -0
  201. pygpt_net/data/locale/plugin.cmd_web.de.ini +2 -0
  202. pygpt_net/data/locale/plugin.cmd_web.en.ini +22 -10
  203. pygpt_net/data/locale/plugin.cmd_web.es.ini +2 -0
  204. pygpt_net/data/locale/plugin.cmd_web.fr.ini +2 -0
  205. pygpt_net/data/locale/plugin.cmd_web.it.ini +2 -0
  206. pygpt_net/data/locale/plugin.cmd_web.pl.ini +2 -0
  207. pygpt_net/data/locale/plugin.cmd_web.uk.ini +2 -0
  208. pygpt_net/data/locale/plugin.cmd_web.zh.ini +2 -0
  209. pygpt_net/data/locale/plugin.mailer.en.ini +21 -0
  210. pygpt_net/icons.qrc +1 -0
  211. pygpt_net/icons_rc.py +165 -136
  212. pygpt_net/item/ctx.py +58 -25
  213. pygpt_net/plugin/agent/__init__.py +7 -2
  214. pygpt_net/plugin/audio_input/simple.py +21 -5
  215. pygpt_net/plugin/audio_output/__init__.py +9 -1
  216. pygpt_net/plugin/base/config.py +4 -2
  217. pygpt_net/plugin/base/plugin.py +75 -23
  218. pygpt_net/plugin/base/worker.py +42 -11
  219. pygpt_net/plugin/cmd_code_interpreter/__init__.py +39 -37
  220. pygpt_net/plugin/cmd_code_interpreter/runner.py +25 -12
  221. pygpt_net/plugin/cmd_history/config.py +2 -2
  222. pygpt_net/plugin/cmd_web/__init__.py +48 -9
  223. pygpt_net/plugin/cmd_web/config.py +135 -41
  224. pygpt_net/plugin/cmd_web/websearch.py +74 -33
  225. pygpt_net/plugin/cmd_web/worker.py +142 -13
  226. pygpt_net/plugin/idx_llama_index/config.py +3 -3
  227. pygpt_net/plugin/mailer/__init__.py +123 -0
  228. pygpt_net/plugin/mailer/config.py +149 -0
  229. pygpt_net/plugin/mailer/runner.py +285 -0
  230. pygpt_net/plugin/mailer/worker.py +123 -0
  231. pygpt_net/provider/agents/base.py +5 -2
  232. pygpt_net/provider/agents/openai.py +4 -2
  233. pygpt_net/provider/agents/openai_assistant.py +4 -2
  234. pygpt_net/provider/agents/planner.py +4 -2
  235. pygpt_net/provider/agents/react.py +4 -2
  236. pygpt_net/provider/audio_output/openai_tts.py +5 -11
  237. pygpt_net/provider/core/assistant/base.py +5 -3
  238. pygpt_net/provider/core/assistant/json_file.py +8 -5
  239. pygpt_net/provider/core/assistant_file/base.py +4 -3
  240. pygpt_net/provider/core/assistant_file/db_sqlite/__init__.py +4 -3
  241. pygpt_net/provider/core/assistant_file/db_sqlite/storage.py +3 -2
  242. pygpt_net/provider/core/assistant_store/base.py +6 -4
  243. pygpt_net/provider/core/assistant_store/db_sqlite/__init__.py +5 -4
  244. pygpt_net/provider/core/assistant_store/db_sqlite/storage.py +5 -3
  245. pygpt_net/provider/core/attachment/base.py +5 -3
  246. pygpt_net/provider/core/attachment/json_file.py +4 -3
  247. pygpt_net/provider/core/calendar/base.py +5 -3
  248. pygpt_net/provider/core/calendar/db_sqlite/__init__.py +6 -5
  249. pygpt_net/provider/core/calendar/db_sqlite/storage.py +5 -4
  250. pygpt_net/provider/core/config/base.py +8 -6
  251. pygpt_net/provider/core/config/json_file.py +9 -7
  252. pygpt_net/provider/core/config/patch.py +43 -1
  253. pygpt_net/provider/core/ctx/base.py +30 -25
  254. pygpt_net/provider/core/ctx/db_sqlite/__init__.py +59 -34
  255. pygpt_net/provider/core/ctx/db_sqlite/storage.py +62 -30
  256. pygpt_net/provider/core/ctx/db_sqlite/utils.py +11 -9
  257. pygpt_net/provider/core/index/base.py +129 -23
  258. pygpt_net/provider/core/index/db_sqlite/__init__.py +130 -23
  259. pygpt_net/provider/core/index/db_sqlite/storage.py +130 -23
  260. pygpt_net/provider/core/index/db_sqlite/utils.py +4 -2
  261. pygpt_net/provider/core/mode/base.py +5 -3
  262. pygpt_net/provider/core/mode/json_file.py +7 -6
  263. pygpt_net/provider/core/model/base.py +6 -4
  264. pygpt_net/provider/core/model/json_file.py +9 -7
  265. pygpt_net/provider/core/notepad/base.py +5 -3
  266. pygpt_net/provider/core/notepad/db_sqlite/__init__.py +5 -4
  267. pygpt_net/provider/core/notepad/db_sqlite/storage.py +4 -3
  268. pygpt_net/provider/core/plugin_preset/base.py +4 -2
  269. pygpt_net/provider/core/plugin_preset/json_file.py +5 -3
  270. pygpt_net/provider/core/preset/base.py +6 -4
  271. pygpt_net/provider/core/preset/json_file.py +9 -9
  272. pygpt_net/provider/core/prompt/base.py +6 -3
  273. pygpt_net/provider/core/prompt/json_file.py +11 -6
  274. pygpt_net/provider/gpt/assistants.py +21 -11
  275. pygpt_net/provider/gpt/audio.py +6 -5
  276. pygpt_net/provider/gpt/chat.py +10 -7
  277. pygpt_net/provider/gpt/completion.py +11 -5
  278. pygpt_net/provider/gpt/image.py +9 -2
  279. pygpt_net/provider/gpt/store.py +53 -18
  280. pygpt_net/provider/gpt/vision.py +17 -11
  281. pygpt_net/provider/llms/anthropic.py +7 -2
  282. pygpt_net/provider/llms/azure_openai.py +26 -5
  283. pygpt_net/provider/llms/base.py +47 -9
  284. pygpt_net/provider/llms/google.py +7 -2
  285. pygpt_net/provider/llms/hugging_face.py +13 -3
  286. pygpt_net/provider/llms/hugging_face_api.py +18 -4
  287. pygpt_net/provider/llms/local.py +7 -2
  288. pygpt_net/provider/llms/ollama.py +30 -6
  289. pygpt_net/provider/llms/openai.py +32 -6
  290. pygpt_net/provider/vector_stores/__init__.py +45 -14
  291. pygpt_net/provider/vector_stores/base.py +35 -8
  292. pygpt_net/provider/vector_stores/chroma.py +13 -3
  293. pygpt_net/provider/vector_stores/ctx_attachment.py +31 -12
  294. pygpt_net/provider/vector_stores/elasticsearch.py +12 -3
  295. pygpt_net/provider/vector_stores/pinecode.py +12 -3
  296. pygpt_net/provider/vector_stores/redis.py +12 -3
  297. pygpt_net/provider/vector_stores/simple.py +12 -3
  298. pygpt_net/provider/vector_stores/temp.py +16 -4
  299. pygpt_net/provider/web/base.py +10 -3
  300. pygpt_net/provider/web/google_custom_search.py +9 -3
  301. pygpt_net/provider/web/microsoft_bing.py +9 -3
  302. pygpt_net/tools/__init__.py +20 -4
  303. pygpt_net/tools/audio_transcriber/__init__.py +4 -3
  304. pygpt_net/tools/base.py +28 -7
  305. pygpt_net/tools/code_interpreter/__init__.py +177 -77
  306. pygpt_net/tools/code_interpreter/ui/dialogs.py +21 -103
  307. pygpt_net/tools/code_interpreter/ui/widgets.py +284 -9
  308. pygpt_net/tools/html_canvas/__init__.py +81 -25
  309. pygpt_net/tools/html_canvas/ui/dialogs.py +46 -62
  310. pygpt_net/tools/html_canvas/ui/widgets.py +96 -3
  311. pygpt_net/tools/image_viewer/__init__.py +10 -4
  312. pygpt_net/tools/indexer/__init__.py +8 -7
  313. pygpt_net/tools/media_player/__init__.py +4 -3
  314. pygpt_net/tools/text_editor/__init__.py +36 -10
  315. pygpt_net/ui/base/context_menu.py +2 -2
  316. pygpt_net/ui/layout/chat/input.py +10 -18
  317. pygpt_net/ui/layout/chat/output.py +27 -45
  318. pygpt_net/ui/layout/ctx/ctx_list.py +13 -4
  319. pygpt_net/ui/layout/toolbox/footer.py +18 -2
  320. pygpt_net/ui/main.py +2 -2
  321. pygpt_net/ui/menu/audio.py +12 -1
  322. pygpt_net/ui/menu/config.py +7 -11
  323. pygpt_net/ui/menu/debug.py +11 -1
  324. pygpt_net/ui/menu/theme.py +9 -2
  325. pygpt_net/ui/widget/filesystem/explorer.py +2 -2
  326. pygpt_net/ui/widget/lists/context.py +27 -5
  327. pygpt_net/ui/widget/tabs/Input.py +2 -2
  328. pygpt_net/ui/widget/tabs/body.py +2 -1
  329. pygpt_net/ui/widget/tabs/layout.py +195 -0
  330. pygpt_net/ui/widget/tabs/output.py +218 -55
  331. pygpt_net/ui/widget/textarea/html.py +11 -1
  332. pygpt_net/ui/widget/textarea/output.py +10 -1
  333. pygpt_net/ui/widget/textarea/search_input.py +4 -1
  334. pygpt_net/ui/widget/textarea/web.py +49 -9
  335. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/METADATA +177 -183
  336. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/RECORD +340 -325
  337. /pygpt_net/data/css/{web.dark.css → web-blocks.dark.css} +0 -0
  338. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/LICENSE +0 -0
  339. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/WHEEL +0 -0
  340. {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/entry_points.txt +0 -0
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.20 03:00:00 #
9
+ # Updated Date: 2024.12.14 00:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import os
@@ -16,6 +16,7 @@ import traceback
16
16
  import logging
17
17
 
18
18
  from pathlib import Path
19
+ from typing import Any, Tuple
19
20
 
20
21
  from pygpt_net.config import Config
21
22
 
@@ -125,7 +126,7 @@ class Debug:
125
126
  else:
126
127
  return "unknown"
127
128
 
128
- def info(self, message: any = None, console: bool = True):
129
+ def info(self, message: Any = None, console: bool = True):
129
130
  """
130
131
  Handle info message
131
132
 
@@ -139,7 +140,7 @@ class Debug:
139
140
  console=console,
140
141
  )
141
142
 
142
- def debug(self, message: any = None, console: bool = True):
143
+ def debug(self, message: Any = None, console: bool = True):
143
144
  """
144
145
  Handle debug message
145
146
 
@@ -152,7 +153,7 @@ class Debug:
152
153
  console=console,
153
154
  )
154
155
 
155
- def warning(self, message: any = None, console: bool = True):
156
+ def warning(self, message: Any = None, console: bool = True):
156
157
  """
157
158
  Handle warning message
158
159
 
@@ -165,7 +166,7 @@ class Debug:
165
166
  console=console,
166
167
  )
167
168
 
168
- def error(self, message: any = None, console: bool = True):
169
+ def error(self, message: Any = None, console: bool = True):
169
170
  """
170
171
  Handle error message
171
172
 
@@ -178,7 +179,7 @@ class Debug:
178
179
  console=console,
179
180
  )
180
181
 
181
- def log(self, message: any = None, level: int = logging.ERROR, console: bool = True):
182
+ def log(self, message: Any = None, level: int = logging.ERROR, console: bool = True):
182
183
  """
183
184
  Handle logger message (by level), default level is ERROR
184
185
 
@@ -227,7 +228,7 @@ class Debug:
227
228
  except Exception as e:
228
229
  pass
229
230
 
230
- def parse_exception(self, e = None, limit: int = 4) -> (bool, str):
231
+ def parse_exception(self, e: Any = None, limit: int = 4) -> Tuple[bool, str]:
231
232
  """
232
233
  Parse exception traceback
233
234
 
@@ -268,7 +269,7 @@ class Debug:
268
269
 
269
270
  return is_sys, data
270
271
 
271
- def parse_alert(self, msg: any) -> str:
272
+ def parse_alert(self, msg: Any) -> str:
272
273
  """
273
274
  Parse alert message
274
275
 
@@ -317,7 +318,7 @@ class Debug:
317
318
  """
318
319
  self.window.controller.dialogs.debug.end(id)
319
320
 
320
- def add(self, id: str, k: str, v: any):
321
+ def add(self, id: str, k: str, v: Any):
321
322
  """
322
323
  Append debug entry (debug window)
323
324
 
@@ -6,10 +6,17 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.20 03:00:00 #
9
+ # Updated Date: 2024.12.14 19:00:00 #
10
10
  # ================================================== #
11
11
 
12
- from pygpt_net.core.events import ControlEvent, AppEvent, Event, KernelEvent, RenderEvent
12
+ from pygpt_net.core.events import (
13
+ ControlEvent,
14
+ AppEvent,
15
+ Event,
16
+ KernelEvent,
17
+ RenderEvent,
18
+ BaseEvent
19
+ )
13
20
 
14
21
 
15
22
  class EventsDebug:
@@ -25,19 +32,24 @@ class EventsDebug:
25
32
  def update(self):
26
33
  """Update debug window."""
27
34
  self.window.core.debug.begin(self.id)
28
- self.window.core.debug.add(self.id, 'App Events:', str(AppEvent.__dict__))
29
- self.window.core.debug.add(self.id, 'Control Events:', str(ControlEvent.__dict__))
30
- self.window.core.debug.add(self.id, 'Kernel Events:', str(KernelEvent.__dict__))
31
- self.window.core.debug.add(self.id, 'Render Events:', str(RenderEvent.__dict__))
32
- self.window.core.debug.add(self.id, 'Plugin Events:', str(self.extract_plugins()))
35
+ self.window.core.debug.add(self.id, 'App Events:', str(self.extract_events(AppEvent)))
36
+ self.window.core.debug.add(self.id, 'Control Events:', str(self.extract_events(ControlEvent)))
37
+ self.window.core.debug.add(self.id, 'Kernel Events:', str(self.extract_events(KernelEvent)))
38
+ self.window.core.debug.add(self.id, 'Render Events:', str(self.extract_events(RenderEvent)))
39
+ self.window.core.debug.add(self.id, 'Plugin Events:', str(self.extract_events(Event)))
40
+ self.window.core.debug.add(self.id, '----', '')
33
41
  self.window.core.debug.add(self.id, 'Voice Cmds (all):', str(self.window.core.access.voice.commands))
34
42
  self.window.core.debug.add(self.id, 'Voice Cmds (allowed):', str(self.window.core.access.voice.get_commands()))
35
43
  self.window.core.debug.end(self.id)
36
44
 
37
- def extract_plugins(self) -> dict:
38
- """Extract plugin events"""
45
+ def extract_events(self, events: BaseEvent) -> dict:
46
+ """
47
+ Extract events
48
+
49
+ :param events: Events class
50
+ """
39
51
  result = {}
40
- for property, value in vars(Event).items():
52
+ for property, value in vars(events).items():
41
53
  if (isinstance(value, str)
42
54
  or isinstance(value, int)
43
55
  or isinstance(value, float)
@@ -6,7 +6,7 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.07 23:00:00 #
9
+ # Updated Date: 2024.12.14 17:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  class TabsDebug:
@@ -22,10 +22,15 @@ class TabsDebug:
22
22
  def update(self):
23
23
  """Update debug window."""
24
24
  self.window.core.debug.begin(self.id)
25
- self.window.core.debug.add(self.id, 'current PID', str(self.window.controller.ui.tabs.get_current_pid()))
25
+ self.window.core.debug.add(self.id, 'current Col', str(self.window.controller.ui.tabs.get_current_column_idx()))
26
26
  self.window.core.debug.add(self.id, 'current IDX', str(self.window.controller.ui.tabs.get_current_idx()))
27
+ self.window.core.debug.add(self.id, 'current Tab', str(self.window.controller.ui.tabs.get_current_tab()))
28
+ self.window.core.debug.add(self.id, 'current PID', str(self.window.controller.ui.tabs.get_current_pid()))
27
29
  self.window.core.debug.add(self.id, 'current Type', str(self.window.controller.ui.tabs.get_current_type()))
30
+ self.window.core.debug.add(self.id, '----', '')
28
31
  self.window.core.debug.add(self.id, 'last_pid', str(self.window.core.tabs.last_pid))
32
+ self.window.core.debug.add(self.id, 'locked', str(self.window.controller.ui.tabs.locked))
33
+ self.window.core.debug.add(self.id, 'col', str(self.window.controller.ui.tabs.col))
29
34
  self.window.core.debug.add(self.id, 'count(pids)', str(len(self.window.core.tabs.pids)))
30
35
  self.window.core.debug.add(self.id, 'count(ctx bags)', str(len(self.window.core.ctx.container.bags)))
31
36
  self.window.core.debug.add(self.id, '----', '')
@@ -37,7 +42,8 @@ class TabsDebug:
37
42
  self.window.core.debug.add(self.id, "PID ["+str(pid)+"]", str(data))
38
43
 
39
44
  # mapping PID => meta.id
45
+ self.window.core.debug.add(self.id, '----', '')
40
46
  self.window.core.debug.add(self.id, 'PID => meta.id', str(self.window.core.ctx.output.mapping))
41
- self.window.core.debug.add(self.id, '(last) PID => meta.id', str(self.window.core.ctx.output.last_pids))
47
+ self.window.core.debug.add(self.id, '(last) meta.id => PID', str(self.window.core.ctx.output.last_pids))
42
48
  self.window.core.debug.add(self.id, '(last) PID', str(self.window.core.ctx.output.last_pid))
43
49
  self.window.core.debug.end(self.id)
@@ -6,10 +6,12 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.24 22:00:00 #
9
+ # Updated Date: 2024.12.14 00:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import os
13
+ from typing import Optional, Any
14
+
13
15
  import docker
14
16
  import io
15
17
  import tarfile
@@ -65,8 +67,12 @@ class Docker:
65
67
  tar_stream.seek(0)
66
68
  return tar_stream
67
69
 
68
- def is_image(self):
69
- """Check if the Docker image exists."""
70
+ def is_image(self) -> bool:
71
+ """
72
+ Check if the Docker image exists.
73
+
74
+ :return: True if the image exists.
75
+ """
70
76
  client = self.get_docker_client()
71
77
  try:
72
78
  client.images.get(self.get_image_name())
@@ -334,7 +340,7 @@ class Docker:
334
340
  """
335
341
  return self.plugin.get_option_value('docker_entrypoint')
336
342
 
337
- def execute(self, cmd: str) -> bytes or None:
343
+ def execute(self, cmd: str) -> Optional[bytes]:
338
344
  """
339
345
  Execute command in Docker container.
340
346
 
@@ -394,7 +400,7 @@ class Docker:
394
400
  """
395
401
  self.signals = signals
396
402
 
397
- def log(self, msg):
403
+ def log(self, msg: Any):
398
404
  """
399
405
  Log the message.
400
406
 
@@ -6,9 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.24 22:00:00 #
9
+ # Updated Date: 2024.12.14 00:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Any
13
+
12
14
  from PySide6.QtCore import Signal, Slot, QObject
13
15
 
14
16
  from pygpt_net.core.events import RenderEvent
@@ -48,13 +50,19 @@ class Builder(QObject):
48
50
 
49
51
 
50
52
  @Slot(object)
51
- def handle_build_failed(self, error):
52
- """Handle build failed"""
53
+ def handle_build_failed(self, error: Any):
54
+ """
55
+ Handle build failed
56
+
57
+ :param error: error
58
+ """
53
59
  self.plugin.window.ui.dialogs.alert(str(error))
54
60
  self.plugin.window.update_status(str(error))
55
61
  self.plugin.window.controller.kernel.stop()
56
62
  event = RenderEvent(RenderEvent.END)
57
63
  self.plugin.window.dispatch(event)
64
+
65
+
58
66
  class WorkerSignals(BaseSignals):
59
67
  build_finished = Signal()
60
68
 
@@ -6,9 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.20 03:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Optional
13
+
12
14
  from .base import BaseEvent
13
15
 
14
16
  class AppEvent(BaseEvent):
@@ -39,8 +41,8 @@ class AppEvent(BaseEvent):
39
41
 
40
42
  def __init__(
41
43
  self,
42
- name: str = None,
43
- data: dict = None,
44
+ name: Optional[str] = None,
45
+ data: Optional[dict] = None,
44
46
  ):
45
47
  """
46
48
  Event object class
@@ -6,17 +6,19 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.20 03:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
+
11
12
  import json
13
+ from typing import Optional, Dict, Any
12
14
 
13
15
  from pygpt_net.item.ctx import CtxItem
14
16
 
15
17
  class BaseEvent:
16
18
  def __init__(
17
19
  self,
18
- name: str = None,
19
- data: dict = None,
20
+ name: Optional[str] = None,
21
+ data: Optional[dict] = None,
20
22
  ctx: CtxItem = None
21
23
  ):
22
24
  """
@@ -39,10 +41,14 @@ class BaseEvent:
39
41
 
40
42
  @property
41
43
  def full_name(self) -> str:
42
- """Get full event name"""
44
+ """
45
+ Get full event name
46
+
47
+ :return: Full event name
48
+ """
43
49
  return self.id + ": " + self.name
44
50
 
45
- def to_dict(self) -> dict:
51
+ def to_dict(self) -> Dict[str, Any]:
46
52
  """Dump event to dict"""
47
53
  return {
48
54
  'name': self.name,
@@ -6,9 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.20 03:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Optional
13
+
12
14
  from .base import BaseEvent
13
15
 
14
16
 
@@ -73,8 +75,8 @@ class ControlEvent(BaseEvent):
73
75
 
74
76
  def __init__(
75
77
  self,
76
- name: str = None,
77
- data: dict = None,
78
+ name: Optional[str] = None,
79
+ data: Optional[dict] = None,
78
80
  ):
79
81
  """
80
82
  Event object class
@@ -6,10 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.29 23:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import json
13
+ from typing import Optional, Dict, Any
13
14
 
14
15
  from pygpt_net.item.ctx import CtxItem
15
16
  from .base import BaseEvent
@@ -61,9 +62,9 @@ class Event(BaseEvent):
61
62
 
62
63
  def __init__(
63
64
  self,
64
- name: str = None,
65
- data: dict = None,
66
- ctx: CtxItem = None
65
+ name: Optional[str] = None,
66
+ data: Optional[dict] = None,
67
+ ctx: Optional[CtxItem] = None
67
68
  ):
68
69
  """
69
70
  Event object class
@@ -84,8 +85,12 @@ class Event(BaseEvent):
84
85
  # internal event, not called from user
85
86
  # internal event is handled synchronously, ctx item has internal flag
86
87
 
87
- def to_dict(self) -> dict:
88
- """Dump event to dict"""
88
+ def to_dict(self) -> Dict[str, Any]:
89
+ """
90
+ Dump event to dict
91
+
92
+ :return: Event dict
93
+ """
89
94
  return {
90
95
  'name': self.name,
91
96
  'data': self.data,
@@ -106,5 +111,10 @@ class Event(BaseEvent):
106
111
  pass
107
112
  return ""
108
113
 
109
- def __str__(self):
114
+ def __str__(self) -> str:
115
+ """
116
+ String representation of event
117
+
118
+ :return: Event string
119
+ """
110
120
  return self.dump()
@@ -6,9 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.21 17:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Optional
13
+
12
14
  from .base import BaseEvent
13
15
 
14
16
 
@@ -52,8 +54,8 @@ class KernelEvent(BaseEvent):
52
54
 
53
55
  def __init__(
54
56
  self,
55
- name: str = None,
56
- data: dict = None,
57
+ name: Optional[str] = None,
58
+ data: Optional[dict] = None,
57
59
  ):
58
60
  """
59
61
  Event object class
@@ -6,9 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.20 03:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Optional
13
+
12
14
  from .base import BaseEvent
13
15
 
14
16
 
@@ -56,8 +58,8 @@ class RenderEvent(BaseEvent):
56
58
 
57
59
  def __init__(
58
60
  self,
59
- name: str = None,
60
- data: dict = None,
61
+ name: Optional[str] = None,
62
+ data: Optional[dict] = None,
61
63
  ):
62
64
  """
63
65
  Event object class
@@ -6,9 +6,10 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.26 19:00:00 #
9
+ # Updated Date: 2024.12.14 08:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Dict, List
12
13
 
13
14
  from pygpt_net.core.types import (
14
15
  MODE_AGENT,
@@ -90,7 +91,7 @@ class Experts:
90
91
  """
91
92
  return self.window.core.presets.get_by_id(MODE_EXPERT, id)
92
93
 
93
- def get_experts(self) -> dict:
94
+ def get_experts(self) -> Dict[str, str]:
94
95
  """
95
96
  Get experts names with keys
96
97
 
@@ -191,7 +192,7 @@ class Experts:
191
192
  prompt = prompt.replace("{presets}", "\n".join(experts_list))
192
193
  return prompt
193
194
 
194
- def extract_calls(self, ctx: CtxItem) -> dict:
195
+ def extract_calls(self, ctx: CtxItem) -> Dict[str, str]:
195
196
  """
196
197
  Extract expert calls from context output
197
198
 
@@ -456,7 +457,7 @@ class Experts:
456
457
  })
457
458
  self.window.dispatch(event)
458
459
 
459
- def get_functions(self) -> list:
460
+ def get_functions(self) -> List[Dict[str, str]]:
460
461
  """
461
462
  Append call the expert commands
462
463