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.
- CHANGELOG.md +37 -0
- README.md +176 -182
- pygpt_net/CHANGELOG.txt +37 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/app.py +3 -1
- pygpt_net/controller/__init__.py +7 -3
- pygpt_net/controller/access/control.py +1 -1
- pygpt_net/controller/access/voice.py +11 -5
- pygpt_net/controller/agent/experts.py +11 -6
- pygpt_net/controller/agent/legacy.py +8 -6
- pygpt_net/controller/agent/llama.py +4 -2
- pygpt_net/controller/assistant/__init__.py +9 -4
- pygpt_net/controller/assistant/batch.py +38 -21
- pygpt_net/controller/assistant/editor.py +7 -6
- pygpt_net/controller/assistant/files.py +23 -7
- pygpt_net/controller/assistant/store.py +20 -7
- pygpt_net/controller/assistant/threads.py +34 -8
- pygpt_net/controller/attachment.py +29 -10
- pygpt_net/controller/audio/__init__.py +26 -5
- pygpt_net/controller/calendar/__init__.py +23 -4
- pygpt_net/controller/calendar/note.py +57 -11
- pygpt_net/controller/camera.py +4 -12
- pygpt_net/controller/chat/__init__.py +5 -3
- pygpt_net/controller/chat/attachment.py +34 -7
- pygpt_net/controller/chat/audio.py +2 -2
- pygpt_net/controller/chat/command.py +4 -2
- pygpt_net/controller/chat/common.py +11 -4
- pygpt_net/controller/chat/files.py +10 -3
- pygpt_net/controller/chat/image.py +17 -5
- pygpt_net/controller/chat/input.py +10 -7
- pygpt_net/controller/chat/output.py +21 -6
- pygpt_net/controller/chat/render.py +100 -21
- pygpt_net/controller/chat/response.py +34 -7
- pygpt_net/controller/chat/stream.py +4 -2
- pygpt_net/controller/chat/text.py +6 -4
- pygpt_net/controller/command.py +11 -3
- pygpt_net/controller/config/__init__.py +34 -6
- pygpt_net/controller/config/field/checkbox.py +7 -4
- pygpt_net/controller/config/field/cmd.py +7 -5
- pygpt_net/controller/config/field/combo.py +14 -6
- pygpt_net/controller/config/field/dictionary.py +14 -11
- pygpt_net/controller/config/field/input.py +9 -6
- pygpt_net/controller/config/field/slider.py +11 -8
- pygpt_net/controller/config/field/textarea.py +8 -5
- pygpt_net/controller/config/placeholder.py +66 -21
- pygpt_net/controller/ctx/__init__.py +138 -49
- pygpt_net/controller/ctx/common.py +15 -4
- pygpt_net/controller/ctx/extra.py +11 -3
- pygpt_net/controller/ctx/summarizer.py +24 -5
- pygpt_net/controller/debug/__init__.py +27 -6
- pygpt_net/controller/dialogs/confirm.py +34 -7
- pygpt_net/controller/dialogs/debug.py +4 -2
- pygpt_net/controller/dialogs/info.py +7 -2
- pygpt_net/controller/files.py +48 -10
- pygpt_net/controller/finder.py +11 -5
- pygpt_net/controller/idx/__init__.py +10 -3
- pygpt_net/controller/idx/common.py +4 -2
- pygpt_net/controller/idx/indexer.py +25 -17
- pygpt_net/controller/idx/settings.py +9 -3
- pygpt_net/controller/kernel/__init__.py +34 -8
- pygpt_net/controller/kernel/reply.py +12 -3
- pygpt_net/controller/kernel/stack.py +5 -3
- pygpt_net/controller/lang/custom.py +2 -7
- pygpt_net/controller/lang/mapping.py +5 -3
- pygpt_net/controller/layout.py +2 -2
- pygpt_net/controller/mode.py +16 -4
- pygpt_net/controller/model/__init__.py +14 -3
- pygpt_net/controller/model/editor.py +8 -3
- pygpt_net/controller/notepad.py +26 -12
- pygpt_net/controller/painter/capture.py +23 -4
- pygpt_net/controller/painter/common.py +9 -7
- pygpt_net/controller/plugins/__init__.py +19 -5
- pygpt_net/controller/plugins/presets.py +15 -6
- pygpt_net/controller/plugins/settings.py +9 -3
- pygpt_net/controller/presets/__init__.py +55 -16
- pygpt_net/controller/presets/editor.py +26 -10
- pygpt_net/controller/settings/__init__.py +3 -2
- pygpt_net/controller/settings/editor.py +29 -7
- pygpt_net/controller/settings/profile.py +22 -5
- pygpt_net/controller/theme/__init__.py +54 -12
- pygpt_net/controller/theme/common.py +24 -2
- pygpt_net/controller/theme/markdown.py +32 -16
- pygpt_net/controller/theme/menu.py +26 -5
- pygpt_net/controller/theme/nodes.py +2 -5
- pygpt_net/controller/tools/__init__.py +40 -2
- pygpt_net/controller/ui/__init__.py +4 -6
- pygpt_net/controller/ui/mode.py +16 -21
- pygpt_net/controller/ui/tabs.py +363 -65
- pygpt_net/core/access/actions.py +6 -4
- pygpt_net/core/access/shortcuts.py +4 -3
- pygpt_net/core/access/voice.py +6 -5
- pygpt_net/core/agents/legacy.py +4 -2
- pygpt_net/core/agents/memory.py +7 -2
- pygpt_net/core/agents/observer/evaluation.py +15 -7
- pygpt_net/core/agents/provider.py +9 -4
- pygpt_net/core/agents/runner.py +61 -15
- pygpt_net/core/agents/tools.py +23 -5
- pygpt_net/core/assistants/__init__.py +6 -4
- pygpt_net/core/assistants/files.py +35 -12
- pygpt_net/core/assistants/store.py +20 -10
- pygpt_net/core/attachments/__init__.py +54 -15
- pygpt_net/core/attachments/context.py +92 -29
- pygpt_net/core/audio/__init__.py +74 -3
- pygpt_net/core/audio/context.py +7 -2
- pygpt_net/core/audio/whisper.py +37 -0
- pygpt_net/core/bridge/__init__.py +22 -6
- pygpt_net/core/bridge/context.py +5 -3
- pygpt_net/core/bridge/worker.py +2 -2
- pygpt_net/core/calendar/__init__.py +57 -11
- pygpt_net/core/chain/__init__.py +8 -2
- pygpt_net/core/chain/chat.py +10 -8
- pygpt_net/core/chain/completion.py +10 -7
- pygpt_net/core/command.py +62 -17
- pygpt_net/core/ctx/__init__.py +260 -58
- pygpt_net/core/ctx/bag.py +25 -4
- pygpt_net/core/ctx/container.py +28 -17
- pygpt_net/core/ctx/idx.py +45 -8
- pygpt_net/core/ctx/output.py +95 -74
- pygpt_net/core/ctx/reply.py +5 -2
- pygpt_net/core/db/__init__.py +8 -7
- pygpt_net/core/db/viewer.py +17 -11
- pygpt_net/core/debug/__init__.py +10 -9
- pygpt_net/core/debug/events.py +22 -10
- pygpt_net/core/debug/tabs.py +9 -3
- pygpt_net/core/docker/__init__.py +11 -5
- pygpt_net/core/docker/builder.py +11 -3
- pygpt_net/core/events/app.py +5 -3
- pygpt_net/core/events/base.py +11 -5
- pygpt_net/core/events/control.py +5 -3
- pygpt_net/core/events/event.py +17 -7
- pygpt_net/core/events/kernel.py +5 -3
- pygpt_net/core/events/render.py +5 -3
- pygpt_net/core/experts/__init__.py +5 -4
- pygpt_net/core/filesystem/__init__.py +52 -34
- pygpt_net/core/filesystem/actions.py +8 -5
- pygpt_net/core/filesystem/editor.py +13 -3
- pygpt_net/core/filesystem/types.py +12 -7
- pygpt_net/core/filesystem/url.py +7 -3
- pygpt_net/core/history.py +3 -2
- pygpt_net/core/idx/__init__.py +48 -27
- pygpt_net/core/idx/chat.py +51 -17
- pygpt_net/core/idx/context.py +6 -2
- pygpt_net/core/idx/indexing.py +107 -42
- pygpt_net/core/idx/llm.py +11 -3
- pygpt_net/core/idx/metadata.py +13 -3
- pygpt_net/core/idx/types/ctx.py +32 -6
- pygpt_net/core/idx/types/external.py +41 -7
- pygpt_net/core/idx/types/files.py +31 -6
- pygpt_net/core/image.py +15 -4
- pygpt_net/core/installer.py +2 -4
- pygpt_net/core/llm/__init__.py +13 -3
- pygpt_net/core/locale.py +34 -8
- pygpt_net/core/models.py +63 -17
- pygpt_net/core/modes.py +11 -13
- pygpt_net/core/notepad.py +10 -5
- pygpt_net/core/plugins.py +31 -19
- pygpt_net/core/presets.py +37 -17
- pygpt_net/core/profile.py +21 -7
- pygpt_net/core/prompt/__init__.py +10 -3
- pygpt_net/core/prompt/custom.py +7 -6
- pygpt_net/core/prompt/template.py +9 -3
- pygpt_net/core/render/base.py +117 -22
- pygpt_net/core/render/markdown/body.py +27 -7
- pygpt_net/core/render/markdown/renderer.py +119 -22
- pygpt_net/core/render/plain/body.py +22 -5
- pygpt_net/core/render/plain/renderer.py +97 -21
- pygpt_net/core/render/web/body.py +75 -25
- pygpt_net/core/render/web/parser.py +3 -1
- pygpt_net/core/render/web/renderer.py +313 -63
- pygpt_net/core/settings.py +10 -5
- pygpt_net/core/tabs/__init__.py +290 -103
- pygpt_net/core/tabs/tab.py +26 -5
- pygpt_net/core/tokens.py +47 -12
- pygpt_net/core/updater/__init__.py +20 -7
- pygpt_net/core/vision/analyzer.py +29 -6
- pygpt_net/core/{web.py → web/__init__.py} +29 -7
- pygpt_net/core/web/helpers.py +237 -0
- pygpt_net/data/config/config.json +15 -4
- pygpt_net/data/config/models.json +3 -3
- pygpt_net/data/config/modes.json +3 -3
- pygpt_net/data/config/settings.json +55 -10
- pygpt_net/data/config/settings_section.json +3 -0
- pygpt_net/data/css/style.light.css +1 -0
- pygpt_net/data/css/{web.css → web-blocks.css} +162 -133
- pygpt_net/data/css/{web.light.css → web-blocks.light.css} +7 -0
- pygpt_net/data/css/web-chatgpt.css +350 -0
- pygpt_net/data/css/web-chatgpt.dark.css +64 -0
- pygpt_net/data/css/web-chatgpt.light.css +75 -0
- pygpt_net/data/css/web-chatgpt_wide.css +350 -0
- pygpt_net/data/css/web-chatgpt_wide.dark.css +64 -0
- pygpt_net/data/css/web-chatgpt_wide.light.css +75 -0
- pygpt_net/data/icons/split_screen.svg +1 -0
- pygpt_net/data/locale/locale.de.ini +12 -0
- pygpt_net/data/locale/locale.en.ini +18 -2
- pygpt_net/data/locale/locale.es.ini +12 -0
- pygpt_net/data/locale/locale.fr.ini +12 -0
- pygpt_net/data/locale/locale.it.ini +12 -0
- pygpt_net/data/locale/locale.pl.ini +12 -0
- pygpt_net/data/locale/locale.uk.ini +12 -0
- pygpt_net/data/locale/locale.zh.ini +12 -0
- pygpt_net/data/locale/plugin.cmd_web.de.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.en.ini +22 -10
- pygpt_net/data/locale/plugin.cmd_web.es.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.fr.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.it.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.pl.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.uk.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.zh.ini +2 -0
- pygpt_net/data/locale/plugin.mailer.en.ini +21 -0
- pygpt_net/icons.qrc +1 -0
- pygpt_net/icons_rc.py +165 -136
- pygpt_net/item/ctx.py +58 -25
- pygpt_net/plugin/agent/__init__.py +7 -2
- pygpt_net/plugin/audio_input/simple.py +21 -5
- pygpt_net/plugin/audio_output/__init__.py +9 -1
- pygpt_net/plugin/base/config.py +4 -2
- pygpt_net/plugin/base/plugin.py +75 -23
- pygpt_net/plugin/base/worker.py +42 -11
- pygpt_net/plugin/cmd_code_interpreter/__init__.py +39 -37
- pygpt_net/plugin/cmd_code_interpreter/runner.py +25 -12
- pygpt_net/plugin/cmd_history/config.py +2 -2
- pygpt_net/plugin/cmd_web/__init__.py +48 -9
- pygpt_net/plugin/cmd_web/config.py +135 -41
- pygpt_net/plugin/cmd_web/websearch.py +74 -33
- pygpt_net/plugin/cmd_web/worker.py +142 -13
- pygpt_net/plugin/idx_llama_index/config.py +3 -3
- pygpt_net/plugin/mailer/__init__.py +123 -0
- pygpt_net/plugin/mailer/config.py +149 -0
- pygpt_net/plugin/mailer/runner.py +285 -0
- pygpt_net/plugin/mailer/worker.py +123 -0
- pygpt_net/provider/agents/base.py +5 -2
- pygpt_net/provider/agents/openai.py +4 -2
- pygpt_net/provider/agents/openai_assistant.py +4 -2
- pygpt_net/provider/agents/planner.py +4 -2
- pygpt_net/provider/agents/react.py +4 -2
- pygpt_net/provider/audio_output/openai_tts.py +5 -11
- pygpt_net/provider/core/assistant/base.py +5 -3
- pygpt_net/provider/core/assistant/json_file.py +8 -5
- pygpt_net/provider/core/assistant_file/base.py +4 -3
- pygpt_net/provider/core/assistant_file/db_sqlite/__init__.py +4 -3
- pygpt_net/provider/core/assistant_file/db_sqlite/storage.py +3 -2
- pygpt_net/provider/core/assistant_store/base.py +6 -4
- pygpt_net/provider/core/assistant_store/db_sqlite/__init__.py +5 -4
- pygpt_net/provider/core/assistant_store/db_sqlite/storage.py +5 -3
- pygpt_net/provider/core/attachment/base.py +5 -3
- pygpt_net/provider/core/attachment/json_file.py +4 -3
- pygpt_net/provider/core/calendar/base.py +5 -3
- pygpt_net/provider/core/calendar/db_sqlite/__init__.py +6 -5
- pygpt_net/provider/core/calendar/db_sqlite/storage.py +5 -4
- pygpt_net/provider/core/config/base.py +8 -6
- pygpt_net/provider/core/config/json_file.py +9 -7
- pygpt_net/provider/core/config/patch.py +43 -1
- pygpt_net/provider/core/ctx/base.py +30 -25
- pygpt_net/provider/core/ctx/db_sqlite/__init__.py +59 -34
- pygpt_net/provider/core/ctx/db_sqlite/storage.py +62 -30
- pygpt_net/provider/core/ctx/db_sqlite/utils.py +11 -9
- pygpt_net/provider/core/index/base.py +129 -23
- pygpt_net/provider/core/index/db_sqlite/__init__.py +130 -23
- pygpt_net/provider/core/index/db_sqlite/storage.py +130 -23
- pygpt_net/provider/core/index/db_sqlite/utils.py +4 -2
- pygpt_net/provider/core/mode/base.py +5 -3
- pygpt_net/provider/core/mode/json_file.py +7 -6
- pygpt_net/provider/core/model/base.py +6 -4
- pygpt_net/provider/core/model/json_file.py +9 -7
- pygpt_net/provider/core/notepad/base.py +5 -3
- pygpt_net/provider/core/notepad/db_sqlite/__init__.py +5 -4
- pygpt_net/provider/core/notepad/db_sqlite/storage.py +4 -3
- pygpt_net/provider/core/plugin_preset/base.py +4 -2
- pygpt_net/provider/core/plugin_preset/json_file.py +5 -3
- pygpt_net/provider/core/preset/base.py +6 -4
- pygpt_net/provider/core/preset/json_file.py +9 -9
- pygpt_net/provider/core/prompt/base.py +6 -3
- pygpt_net/provider/core/prompt/json_file.py +11 -6
- pygpt_net/provider/gpt/assistants.py +21 -11
- pygpt_net/provider/gpt/audio.py +6 -5
- pygpt_net/provider/gpt/chat.py +10 -7
- pygpt_net/provider/gpt/completion.py +11 -5
- pygpt_net/provider/gpt/image.py +9 -2
- pygpt_net/provider/gpt/store.py +53 -18
- pygpt_net/provider/gpt/vision.py +17 -11
- pygpt_net/provider/llms/anthropic.py +7 -2
- pygpt_net/provider/llms/azure_openai.py +26 -5
- pygpt_net/provider/llms/base.py +47 -9
- pygpt_net/provider/llms/google.py +7 -2
- pygpt_net/provider/llms/hugging_face.py +13 -3
- pygpt_net/provider/llms/hugging_face_api.py +18 -4
- pygpt_net/provider/llms/local.py +7 -2
- pygpt_net/provider/llms/ollama.py +30 -6
- pygpt_net/provider/llms/openai.py +32 -6
- pygpt_net/provider/vector_stores/__init__.py +45 -14
- pygpt_net/provider/vector_stores/base.py +35 -8
- pygpt_net/provider/vector_stores/chroma.py +13 -3
- pygpt_net/provider/vector_stores/ctx_attachment.py +31 -12
- pygpt_net/provider/vector_stores/elasticsearch.py +12 -3
- pygpt_net/provider/vector_stores/pinecode.py +12 -3
- pygpt_net/provider/vector_stores/redis.py +12 -3
- pygpt_net/provider/vector_stores/simple.py +12 -3
- pygpt_net/provider/vector_stores/temp.py +16 -4
- pygpt_net/provider/web/base.py +10 -3
- pygpt_net/provider/web/google_custom_search.py +9 -3
- pygpt_net/provider/web/microsoft_bing.py +9 -3
- pygpt_net/tools/__init__.py +20 -4
- pygpt_net/tools/audio_transcriber/__init__.py +4 -3
- pygpt_net/tools/base.py +28 -7
- pygpt_net/tools/code_interpreter/__init__.py +177 -77
- pygpt_net/tools/code_interpreter/ui/dialogs.py +21 -103
- pygpt_net/tools/code_interpreter/ui/widgets.py +284 -9
- pygpt_net/tools/html_canvas/__init__.py +81 -25
- pygpt_net/tools/html_canvas/ui/dialogs.py +46 -62
- pygpt_net/tools/html_canvas/ui/widgets.py +96 -3
- pygpt_net/tools/image_viewer/__init__.py +10 -4
- pygpt_net/tools/indexer/__init__.py +8 -7
- pygpt_net/tools/media_player/__init__.py +4 -3
- pygpt_net/tools/text_editor/__init__.py +36 -10
- pygpt_net/ui/base/context_menu.py +2 -2
- pygpt_net/ui/layout/chat/input.py +10 -18
- pygpt_net/ui/layout/chat/output.py +27 -45
- pygpt_net/ui/layout/ctx/ctx_list.py +13 -4
- pygpt_net/ui/layout/toolbox/footer.py +18 -2
- pygpt_net/ui/main.py +2 -2
- pygpt_net/ui/menu/audio.py +12 -1
- pygpt_net/ui/menu/config.py +7 -11
- pygpt_net/ui/menu/debug.py +11 -1
- pygpt_net/ui/menu/theme.py +9 -2
- pygpt_net/ui/widget/filesystem/explorer.py +2 -2
- pygpt_net/ui/widget/lists/context.py +27 -5
- pygpt_net/ui/widget/tabs/Input.py +2 -2
- pygpt_net/ui/widget/tabs/body.py +2 -1
- pygpt_net/ui/widget/tabs/layout.py +195 -0
- pygpt_net/ui/widget/tabs/output.py +218 -55
- pygpt_net/ui/widget/textarea/html.py +11 -1
- pygpt_net/ui/widget/textarea/output.py +10 -1
- pygpt_net/ui/widget/textarea/search_input.py +4 -1
- pygpt_net/ui/widget/textarea/web.py +49 -9
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/METADATA +177 -183
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/RECORD +340 -325
- /pygpt_net/data/css/{web.dark.css → web-blocks.dark.css} +0 -0
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/LICENSE +0 -0
- {pygpt_net-2.4.37.dist-info → pygpt_net-2.4.42.dist-info}/WHEEL +0 -0
- {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.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
from PySide6.QtWidgets import QApplication
|
@@ -144,7 +144,11 @@ class Extra:
|
|
144
144
|
self.window.controller.ctx.edit_meta_id = None
|
145
145
|
self.edit_hide()
|
146
146
|
|
147
|
-
def replay_item(
|
147
|
+
def replay_item(
|
148
|
+
self,
|
149
|
+
item_id: int,
|
150
|
+
force: bool = False
|
151
|
+
):
|
148
152
|
"""
|
149
153
|
Regenerate ctx item
|
150
154
|
|
@@ -203,7 +207,11 @@ class Extra:
|
|
203
207
|
self.window.controller.audio.on_stop()
|
204
208
|
self.audio_play_id = None
|
205
209
|
|
206
|
-
def join_item(
|
210
|
+
def join_item(
|
211
|
+
self,
|
212
|
+
item_id: int,
|
213
|
+
force: bool = False
|
214
|
+
):
|
207
215
|
"""
|
208
216
|
Join ctx items
|
209
217
|
|
@@ -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.
|
9
|
+
# Updated Date: 2024.12.14 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
from PySide6.QtCore import QObject, Signal, Slot
|
@@ -27,7 +27,11 @@ class Summarizer:
|
|
27
27
|
"""
|
28
28
|
self.window = window
|
29
29
|
|
30
|
-
def summarize(
|
30
|
+
def summarize(
|
31
|
+
self,
|
32
|
+
id: int,
|
33
|
+
ctx: CtxItem
|
34
|
+
):
|
31
35
|
"""
|
32
36
|
Summarize context
|
33
37
|
|
@@ -39,7 +43,13 @@ class Summarizer:
|
|
39
43
|
ctx_copy.from_dict(ctx.to_dict())
|
40
44
|
self.start_worker(id, ctx_copy)
|
41
45
|
|
42
|
-
def summarizer(
|
46
|
+
def summarizer(
|
47
|
+
self,
|
48
|
+
id: int,
|
49
|
+
ctx: CtxItem,
|
50
|
+
window,
|
51
|
+
updated_signal: Signal
|
52
|
+
):
|
43
53
|
"""
|
44
54
|
Summarize worker callback
|
45
55
|
|
@@ -52,7 +62,11 @@ class Summarizer:
|
|
52
62
|
if title:
|
53
63
|
updated_signal.emit(id, ctx, title)
|
54
64
|
|
55
|
-
def start_worker(
|
65
|
+
def start_worker(
|
66
|
+
self,
|
67
|
+
id: int,
|
68
|
+
ctx: CtxItem
|
69
|
+
):
|
56
70
|
"""
|
57
71
|
Handle worker thread
|
58
72
|
|
@@ -69,7 +83,12 @@ class Summarizer:
|
|
69
83
|
self.window.threadpool.start(worker)
|
70
84
|
|
71
85
|
@Slot(int, object, str)
|
72
|
-
def handle_update(
|
86
|
+
def handle_update(
|
87
|
+
self,
|
88
|
+
id: int,
|
89
|
+
ctx: CtxItem,
|
90
|
+
title: str
|
91
|
+
):
|
73
92
|
"""
|
74
93
|
Handle update signal (make update)
|
75
94
|
|
@@ -6,15 +6,18 @@
|
|
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.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
from datetime import datetime
|
13
13
|
from logging import ERROR, WARNING, INFO, DEBUG
|
14
|
+
from typing import Any
|
14
15
|
|
15
16
|
from PySide6.QtCore import Slot, QObject
|
16
17
|
from PySide6.QtGui import QTextCursor
|
17
18
|
|
19
|
+
from pygpt_net.core.events import RenderEvent
|
20
|
+
|
18
21
|
|
19
22
|
class Debug(QObject):
|
20
23
|
def __init__(self, window=None):
|
@@ -53,8 +56,17 @@ class Debug(QObject):
|
|
53
56
|
|
54
57
|
def toggle_menu(self):
|
55
58
|
"""Toggle debug menu"""
|
56
|
-
|
57
|
-
self.window.ui.menu['menu.debug'].menuAction().setVisible(
|
59
|
+
state = self.window.core.config.get('debug')
|
60
|
+
self.window.ui.menu['menu.debug'].menuAction().setVisible(state)
|
61
|
+
|
62
|
+
def toggle_render(self):
|
63
|
+
"""Toggle render debug"""
|
64
|
+
value = self.window.ui.menu['debug.render'].isChecked()
|
65
|
+
self.window.core.config.set('debug.render', value)
|
66
|
+
self.window.core.config.save()
|
67
|
+
event = RenderEvent(RenderEvent.ON_THEME_CHANGE)
|
68
|
+
self.window.dispatch(event)
|
69
|
+
self.window.controller.ctx.refresh()
|
58
70
|
|
59
71
|
def set_log_level(self, level: str = 'error'):
|
60
72
|
"""
|
@@ -122,7 +134,12 @@ class Debug(QObject):
|
|
122
134
|
signals.js_message.connect(self.handle_js_message)
|
123
135
|
|
124
136
|
@Slot(int, str, str)
|
125
|
-
def handle_js_message(
|
137
|
+
def handle_js_message(
|
138
|
+
self,
|
139
|
+
line_number: int,
|
140
|
+
message: str,
|
141
|
+
source_id: str
|
142
|
+
):
|
126
143
|
"""
|
127
144
|
Handle JS message
|
128
145
|
|
@@ -134,7 +151,7 @@ class Debug(QObject):
|
|
134
151
|
self.log(data, window=True)
|
135
152
|
|
136
153
|
@Slot(object)
|
137
|
-
def handle_log(self, data:
|
154
|
+
def handle_log(self, data: Any):
|
138
155
|
"""
|
139
156
|
Handle log message
|
140
157
|
|
@@ -142,7 +159,11 @@ class Debug(QObject):
|
|
142
159
|
"""
|
143
160
|
self.log(data)
|
144
161
|
|
145
|
-
def log(
|
162
|
+
def log(
|
163
|
+
self,
|
164
|
+
data: Any,
|
165
|
+
window: bool = True
|
166
|
+
):
|
146
167
|
"""
|
147
168
|
Log message to console or logger window
|
148
169
|
|
@@ -6,9 +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.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Any, Optional
|
13
|
+
|
14
|
+
|
12
15
|
class Confirm:
|
13
16
|
def __init__(self, window=None):
|
14
17
|
"""
|
@@ -18,7 +21,12 @@ class Confirm:
|
|
18
21
|
"""
|
19
22
|
self.window = window
|
20
23
|
|
21
|
-
def accept(
|
24
|
+
def accept(
|
25
|
+
self,
|
26
|
+
type: str,
|
27
|
+
id: Optional[str] = None,
|
28
|
+
parent_object: Any = None
|
29
|
+
):
|
22
30
|
"""
|
23
31
|
Confirm dialog accept
|
24
32
|
|
@@ -154,7 +162,7 @@ class Confirm:
|
|
154
162
|
|
155
163
|
# tab close all
|
156
164
|
elif type == 'tab.close_all':
|
157
|
-
self.window.controller.ui.tabs.close_all(id, True) # by type
|
165
|
+
self.window.controller.ui.tabs.close_all(id, 0, True) # by type
|
158
166
|
|
159
167
|
# editor
|
160
168
|
elif type == 'editor.changed.clear':
|
@@ -264,7 +272,11 @@ class Confirm:
|
|
264
272
|
elif type == 'prompt.custom.delete':
|
265
273
|
self.window.controller.presets.delete_prompt(id, True)
|
266
274
|
|
267
|
-
def dismiss(
|
275
|
+
def dismiss(
|
276
|
+
self,
|
277
|
+
type: str,
|
278
|
+
id: Any
|
279
|
+
):
|
268
280
|
"""
|
269
281
|
Confirm dialog dismiss
|
270
282
|
|
@@ -283,7 +295,12 @@ class Confirm:
|
|
283
295
|
|
284
296
|
self.window.ui.dialog['confirm'].close()
|
285
297
|
|
286
|
-
def accept_rename(
|
298
|
+
def accept_rename(
|
299
|
+
self,
|
300
|
+
type: str,
|
301
|
+
id: Any,
|
302
|
+
name: str
|
303
|
+
):
|
287
304
|
"""
|
288
305
|
Update name of object
|
289
306
|
|
@@ -325,7 +342,12 @@ class Confirm:
|
|
325
342
|
elif type == 'prompt.custom.new':
|
326
343
|
self.window.controller.presets.save_prompt(name, True)
|
327
344
|
|
328
|
-
def accept_create(
|
345
|
+
def accept_create(
|
346
|
+
self,
|
347
|
+
type: str,
|
348
|
+
id: any,
|
349
|
+
name: str
|
350
|
+
):
|
329
351
|
"""
|
330
352
|
Create new object
|
331
353
|
|
@@ -349,7 +371,12 @@ class Confirm:
|
|
349
371
|
elif type == 'ctx.group':
|
350
372
|
self.window.controller.ctx.create_group(name, id)
|
351
373
|
|
352
|
-
def accept_url(
|
374
|
+
def accept_url(
|
375
|
+
self,
|
376
|
+
type: str,
|
377
|
+
id: any,
|
378
|
+
url: str
|
379
|
+
):
|
353
380
|
"""
|
354
381
|
Update URL provided
|
355
382
|
|
@@ -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.
|
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 Qt
|
13
15
|
from PySide6.QtGui import QStandardItemModel
|
14
16
|
|
@@ -95,7 +97,7 @@ class Debug:
|
|
95
97
|
self.initialized[id] = True
|
96
98
|
self.window.ui.debug[id].on_data_end()
|
97
99
|
|
98
|
-
def add(self, id: str, k: str, v:
|
100
|
+
def add(self, id: str, k: str, v: Any):
|
99
101
|
"""
|
100
102
|
Append debug entry
|
101
103
|
|
@@ -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.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import webbrowser
|
@@ -32,7 +32,12 @@ class Info:
|
|
32
32
|
def setup(self):
|
33
33
|
pass
|
34
34
|
|
35
|
-
def toggle(
|
35
|
+
def toggle(
|
36
|
+
self,
|
37
|
+
id: str,
|
38
|
+
width: int = 400,
|
39
|
+
height: int = 400
|
40
|
+
):
|
36
41
|
"""
|
37
42
|
Toggle info dialog
|
38
43
|
|
pygpt_net/controller/files.py
CHANGED
@@ -6,12 +6,13 @@
|
|
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.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import datetime
|
13
13
|
import os
|
14
14
|
import shutil
|
15
|
+
from typing import Optional
|
15
16
|
|
16
17
|
from PySide6.QtCore import QUrl
|
17
18
|
from PySide6.QtGui import QDesktopServices
|
@@ -38,7 +39,11 @@ class Files:
|
|
38
39
|
# TODO: implement this
|
39
40
|
pass
|
40
41
|
|
41
|
-
def delete_recursive(
|
42
|
+
def delete_recursive(
|
43
|
+
self,
|
44
|
+
path: str,
|
45
|
+
force: bool = False
|
46
|
+
):
|
42
47
|
"""
|
43
48
|
Delete directory with all files
|
44
49
|
|
@@ -62,7 +67,12 @@ class Files:
|
|
62
67
|
self.window.core.debug.log(e)
|
63
68
|
print("Error deleting directory: {} - {}".format(path, e))
|
64
69
|
|
65
|
-
def touch_file(
|
70
|
+
def touch_file(
|
71
|
+
self,
|
72
|
+
path: str,
|
73
|
+
name: Optional[str] = None,
|
74
|
+
force: bool = False
|
75
|
+
):
|
66
76
|
"""
|
67
77
|
Touch empty file
|
68
78
|
|
@@ -90,7 +100,11 @@ class Files:
|
|
90
100
|
self.window.core.debug.log(e)
|
91
101
|
print("Error creating file: {} - {}".format(path, e))
|
92
102
|
|
93
|
-
def delete(
|
103
|
+
def delete(
|
104
|
+
self,
|
105
|
+
path: str,
|
106
|
+
force: bool = False
|
107
|
+
):
|
94
108
|
"""
|
95
109
|
Delete file or directory
|
96
110
|
|
@@ -123,7 +137,12 @@ class Files:
|
|
123
137
|
self.window.core.debug.log(e)
|
124
138
|
print("Error deleting file: {} - {}".format(path, e))
|
125
139
|
|
126
|
-
def duplicate_local(
|
140
|
+
def duplicate_local(
|
141
|
+
self,
|
142
|
+
path: str,
|
143
|
+
name: str,
|
144
|
+
force: bool = False
|
145
|
+
):
|
127
146
|
"""
|
128
147
|
Duplicate file or directory
|
129
148
|
|
@@ -198,7 +217,10 @@ class Files:
|
|
198
217
|
self.window.core.debug.log(e)
|
199
218
|
print("Error downloading file: {} - {}".format(path, e))
|
200
219
|
|
201
|
-
def upload_local(
|
220
|
+
def upload_local(
|
221
|
+
self,
|
222
|
+
parent_path: Optional[str] = None
|
223
|
+
):
|
202
224
|
"""
|
203
225
|
Upload local file(s) to directory
|
204
226
|
|
@@ -263,7 +285,11 @@ class Files:
|
|
263
285
|
self.window.ui.dialog['rename'].show()
|
264
286
|
self.window.ui.dialog['rename'].input.setFocus()
|
265
287
|
|
266
|
-
def update_name(
|
288
|
+
def update_name(
|
289
|
+
self,
|
290
|
+
path: str,
|
291
|
+
name: str
|
292
|
+
):
|
267
293
|
"""
|
268
294
|
Update name of file or directory
|
269
295
|
|
@@ -283,7 +309,11 @@ class Files:
|
|
283
309
|
self.window.ui.dialog['rename'].close()
|
284
310
|
self.update_explorer()
|
285
311
|
|
286
|
-
def open_dir(
|
312
|
+
def open_dir(
|
313
|
+
self,
|
314
|
+
path: str,
|
315
|
+
select: bool = False
|
316
|
+
):
|
287
317
|
"""
|
288
318
|
Open file or directory in file manager
|
289
319
|
|
@@ -308,7 +338,11 @@ class Files:
|
|
308
338
|
else:
|
309
339
|
subprocess.run(['xdg-open', path])
|
310
340
|
|
311
|
-
def open_in_file_manager(
|
341
|
+
def open_in_file_manager(
|
342
|
+
self,
|
343
|
+
path: str,
|
344
|
+
select: bool = False
|
345
|
+
):
|
312
346
|
"""
|
313
347
|
Open in file manager
|
314
348
|
|
@@ -341,7 +375,11 @@ class Files:
|
|
341
375
|
self.window.ui.dialog['create'].show()
|
342
376
|
self.window.ui.dialog['create'].input.setFocus()
|
343
377
|
|
344
|
-
def make_dir(
|
378
|
+
def make_dir(
|
379
|
+
self,
|
380
|
+
path: str,
|
381
|
+
name: Optional[str] = None
|
382
|
+
):
|
345
383
|
"""
|
346
384
|
Make directory
|
347
385
|
|
pygpt_net/controller/finder.py
CHANGED
@@ -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.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import Any
|
13
|
+
|
12
14
|
|
13
15
|
class Finder:
|
14
16
|
def __init__(self, window=None):
|
@@ -86,7 +88,7 @@ class Finder:
|
|
86
88
|
"""
|
87
89
|
return self.window.ui.nodes['dialog.find.input'].text()
|
88
90
|
|
89
|
-
def set(self, parent):
|
91
|
+
def set(self, parent: Any):
|
90
92
|
"""
|
91
93
|
Set current parent for the finder
|
92
94
|
|
@@ -94,7 +96,7 @@ class Finder:
|
|
94
96
|
"""
|
95
97
|
self.parent = parent
|
96
98
|
|
97
|
-
def unset(self, parent):
|
99
|
+
def unset(self, parent: Any):
|
98
100
|
"""
|
99
101
|
Unset parent from the finder
|
100
102
|
|
@@ -103,7 +105,7 @@ class Finder:
|
|
103
105
|
if self.parent == parent:
|
104
106
|
self.parent = None
|
105
107
|
|
106
|
-
def open(self, parent):
|
108
|
+
def open(self, parent: Any):
|
107
109
|
"""
|
108
110
|
Open finder dialog
|
109
111
|
|
@@ -134,7 +136,11 @@ class Finder:
|
|
134
136
|
self.window.ui.dialog['find'].hide()
|
135
137
|
self.opened = False
|
136
138
|
|
137
|
-
def clear(
|
139
|
+
def clear(
|
140
|
+
self,
|
141
|
+
restore: bool = False,
|
142
|
+
to_end: bool = True
|
143
|
+
):
|
138
144
|
"""
|
139
145
|
Clear current parent highlights
|
140
146
|
|
@@ -6,13 +6,15 @@
|
|
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.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import datetime
|
13
|
+
from typing import Optional
|
13
14
|
|
14
15
|
from pygpt_net.item.ctx import CtxItem
|
15
16
|
from pygpt_net.utils import trans
|
17
|
+
|
16
18
|
from .common import Common
|
17
19
|
from .indexer import Indexer
|
18
20
|
from .settings import Settings
|
@@ -227,7 +229,12 @@ class Idx:
|
|
227
229
|
return True
|
228
230
|
return False
|
229
231
|
|
230
|
-
def on_ctx_end(
|
232
|
+
def on_ctx_end(
|
233
|
+
self,
|
234
|
+
ctx: Optional[CtxItem] = None,
|
235
|
+
mode: Optional[str] = None,
|
236
|
+
sync: bool = False
|
237
|
+
):
|
231
238
|
"""
|
232
239
|
After context item updated (request + response received)
|
233
240
|
|
@@ -255,7 +262,7 @@ class Idx:
|
|
255
262
|
if meta is not None:
|
256
263
|
self.indexer.index_ctx_realtime(meta, idx, sync=sync)
|
257
264
|
|
258
|
-
def after_index(self, idx: str = None):
|
265
|
+
def after_index(self, idx: Optional[str] = None):
|
259
266
|
"""
|
260
267
|
Called after index (update things, etc...)
|
261
268
|
|
@@ -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.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
|
+
from typing import List, Dict
|
13
|
+
|
12
14
|
|
13
15
|
class Common:
|
14
16
|
def __init__(self, window=None):
|
@@ -23,7 +25,7 @@ class Common:
|
|
23
25
|
"""Set up UI"""
|
24
26
|
pass
|
25
27
|
|
26
|
-
def get_loaders_choices(self) ->
|
28
|
+
def get_loaders_choices(self) -> List[Dict[str, str]]:
|
27
29
|
"""
|
28
30
|
Get available loaders choices
|
29
31
|
|
@@ -6,11 +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.
|
9
|
+
# Updated Date: 2024.12.14 08:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import datetime
|
13
13
|
import os
|
14
|
+
from typing import Any, List, Dict
|
14
15
|
|
15
16
|
from PySide6.QtCore import Slot, QObject
|
16
17
|
from PySide6.QtWidgets import QApplication
|
@@ -218,8 +219,8 @@ class Indexer(QObject):
|
|
218
219
|
self,
|
219
220
|
path: str,
|
220
221
|
idx: str = "base",
|
221
|
-
replace: bool =
|
222
|
-
recursive: bool =
|
222
|
+
replace: bool = False,
|
223
|
+
recursive: bool = False
|
223
224
|
):
|
224
225
|
"""
|
225
226
|
Index all files in path (threaded)
|
@@ -228,7 +229,6 @@ class Indexer(QObject):
|
|
228
229
|
:param idx: index name
|
229
230
|
:param replace: replace index
|
230
231
|
:param recursive: recursive indexing
|
231
|
-
:param silent: silent mode
|
232
232
|
"""
|
233
233
|
self.window.update_status(trans('idx.status.indexing'))
|
234
234
|
self.worker = IndexWorker()
|
@@ -245,10 +245,10 @@ class Indexer(QObject):
|
|
245
245
|
|
246
246
|
def index_paths(
|
247
247
|
self,
|
248
|
-
paths:
|
248
|
+
paths: List[str],
|
249
249
|
idx: str = "base",
|
250
|
-
replace: bool =
|
251
|
-
recursive: bool =
|
250
|
+
replace: bool = False,
|
251
|
+
recursive: bool = False
|
252
252
|
):
|
253
253
|
"""
|
254
254
|
Index all files in path (threaded)
|
@@ -380,8 +380,8 @@ class Indexer(QObject):
|
|
380
380
|
self,
|
381
381
|
idx: str,
|
382
382
|
loader: str,
|
383
|
-
params:
|
384
|
-
config:
|
383
|
+
params: Dict[str, Any],
|
384
|
+
config: Dict[str, Any],
|
385
385
|
replace: bool = True,
|
386
386
|
):
|
387
387
|
"""
|
@@ -456,7 +456,11 @@ class Indexer(QObject):
|
|
456
456
|
idx_name = self.window.core.idx.get_by_idx(idx)
|
457
457
|
self.clear(idx_name)
|
458
458
|
|
459
|
-
def clear(
|
459
|
+
def clear(
|
460
|
+
self,
|
461
|
+
idx: str,
|
462
|
+
force: bool = False
|
463
|
+
):
|
460
464
|
"""
|
461
465
|
Clear index data
|
462
466
|
|
@@ -497,7 +501,11 @@ class Indexer(QObject):
|
|
497
501
|
|
498
502
|
self.window.tools.get("indexer").refresh()
|
499
503
|
|
500
|
-
def truncate(
|
504
|
+
def truncate(
|
505
|
+
self,
|
506
|
+
idx: str,
|
507
|
+
force: bool = False
|
508
|
+
):
|
501
509
|
"""
|
502
510
|
Truncate index data
|
503
511
|
|
@@ -542,7 +550,7 @@ class Indexer(QObject):
|
|
542
550
|
self.window.tools.get("indexer").refresh()
|
543
551
|
|
544
552
|
@Slot(object)
|
545
|
-
def handle_error(self, err:
|
553
|
+
def handle_error(self, err: Any):
|
546
554
|
"""
|
547
555
|
Handle thread error signal
|
548
556
|
|
@@ -560,7 +568,7 @@ class Indexer(QObject):
|
|
560
568
|
self,
|
561
569
|
idx: str,
|
562
570
|
num: int,
|
563
|
-
errors:
|
571
|
+
errors: List[str],
|
564
572
|
silent: bool = False
|
565
573
|
):
|
566
574
|
"""
|
@@ -600,7 +608,7 @@ class Indexer(QObject):
|
|
600
608
|
self,
|
601
609
|
idx: str,
|
602
610
|
num: int,
|
603
|
-
errors:
|
611
|
+
errors: List[str],
|
604
612
|
silent: bool = False
|
605
613
|
):
|
606
614
|
"""
|
@@ -631,8 +639,8 @@ class Indexer(QObject):
|
|
631
639
|
def handle_finished_file(
|
632
640
|
self,
|
633
641
|
idx: str,
|
634
|
-
files:
|
635
|
-
errors:
|
642
|
+
files: Dict[str, str],
|
643
|
+
errors: List[str],
|
636
644
|
silent: bool = False
|
637
645
|
):
|
638
646
|
"""
|
@@ -667,7 +675,7 @@ class Indexer(QObject):
|
|
667
675
|
self,
|
668
676
|
idx: str,
|
669
677
|
num: int,
|
670
|
-
errors:
|
678
|
+
errors: List[str],
|
671
679
|
silent: bool = False
|
672
680
|
):
|
673
681
|
"""
|