pygpt-net 2.4.38__py3-none-any.whl → 2.4.40__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 +19 -0
- README.md +25 -2
- pygpt_net/CHANGELOG.txt +19 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/controller/__init__.py +7 -3
- pygpt_net/controller/audio/__init__.py +9 -1
- pygpt_net/controller/calendar/__init__.py +3 -1
- pygpt_net/controller/chat/input.py +2 -1
- pygpt_net/controller/chat/render.py +8 -5
- pygpt_net/controller/ctx/__init__.py +33 -25
- pygpt_net/controller/ctx/common.py +3 -2
- pygpt_net/controller/debug/__init__.py +13 -2
- pygpt_net/controller/dialogs/confirm.py +2 -2
- pygpt_net/controller/kernel/__init__.py +2 -1
- pygpt_net/controller/lang/custom.py +2 -7
- pygpt_net/controller/lang/mapping.py +2 -2
- pygpt_net/controller/layout.py +2 -2
- pygpt_net/controller/notepad.py +14 -10
- pygpt_net/controller/theme/nodes.py +2 -5
- pygpt_net/controller/tools/__init__.py +37 -1
- pygpt_net/controller/ui/__init__.py +1 -5
- pygpt_net/controller/ui/tabs.py +295 -60
- pygpt_net/core/command.py +3 -1
- pygpt_net/core/ctx/__init__.py +16 -2
- pygpt_net/core/ctx/container.py +18 -11
- pygpt_net/core/ctx/output.py +86 -67
- pygpt_net/core/debug/tabs.py +5 -2
- pygpt_net/core/filesystem/url.py +7 -3
- pygpt_net/core/render/base.py +14 -3
- pygpt_net/core/render/markdown/renderer.py +3 -1
- pygpt_net/core/render/plain/renderer.py +3 -3
- pygpt_net/core/render/web/body.py +10 -4
- pygpt_net/core/render/web/renderer.py +213 -41
- pygpt_net/core/tabs/__init__.py +268 -98
- pygpt_net/core/tabs/tab.py +16 -4
- pygpt_net/core/web.py +127 -1
- pygpt_net/data/config/config.json +12 -5
- pygpt_net/data/config/models.json +3 -3
- pygpt_net/data/config/modes.json +3 -3
- pygpt_net/data/css/web-blocks.css +18 -0
- pygpt_net/data/css/web-blocks.light.css +7 -0
- pygpt_net/data/css/web-chatgpt.css +8 -0
- pygpt_net/data/css/web-chatgpt_wide.css +8 -0
- pygpt_net/data/icons/split_screen.svg +1 -0
- pygpt_net/data/locale/locale.de.ini +3 -0
- pygpt_net/data/locale/locale.en.ini +6 -1
- pygpt_net/data/locale/locale.es.ini +3 -0
- pygpt_net/data/locale/locale.fr.ini +3 -0
- pygpt_net/data/locale/locale.it.ini +3 -0
- pygpt_net/data/locale/locale.pl.ini +4 -1
- pygpt_net/data/locale/locale.uk.ini +3 -0
- pygpt_net/data/locale/locale.zh.ini +3 -0
- pygpt_net/data/locale/plugin.cmd_web.de.ini +2 -0
- pygpt_net/data/locale/plugin.cmd_web.en.ini +20 -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/icons.qrc +1 -0
- pygpt_net/icons_rc.py +165 -136
- pygpt_net/item/ctx.py +46 -24
- pygpt_net/plugin/audio_input/simple.py +4 -2
- pygpt_net/plugin/audio_output/__init__.py +4 -1
- pygpt_net/plugin/base/plugin.py +18 -4
- pygpt_net/plugin/cmd_code_interpreter/__init__.py +39 -37
- pygpt_net/plugin/cmd_code_interpreter/runner.py +25 -12
- pygpt_net/plugin/cmd_web/__init__.py +46 -6
- pygpt_net/plugin/cmd_web/config.py +74 -48
- pygpt_net/plugin/cmd_web/websearch.py +61 -28
- pygpt_net/plugin/cmd_web/worker.py +79 -13
- pygpt_net/provider/core/config/patch.py +29 -1
- pygpt_net/provider/core/ctx/base.py +4 -1
- pygpt_net/provider/core/ctx/db_sqlite/__init__.py +10 -1
- pygpt_net/provider/core/ctx/db_sqlite/storage.py +22 -1
- pygpt_net/tools/__init__.py +9 -1
- pygpt_net/tools/base.py +15 -1
- pygpt_net/tools/code_interpreter/__init__.py +174 -75
- 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 +78 -23
- pygpt_net/tools/html_canvas/ui/dialogs.py +46 -62
- pygpt_net/tools/html_canvas/ui/widgets.py +96 -3
- 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 +26 -44
- 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/debug.py +11 -1
- pygpt_net/ui/widget/filesystem/explorer.py +2 -2
- pygpt_net/ui/widget/lists/context.py +26 -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 +209 -55
- pygpt_net/ui/widget/textarea/html.py +11 -1
- pygpt_net/ui/widget/textarea/output.py +10 -1
- pygpt_net/ui/widget/textarea/web.py +49 -9
- {pygpt_net-2.4.38.dist-info → pygpt_net-2.4.40.dist-info}/METADATA +26 -3
- {pygpt_net-2.4.38.dist-info → pygpt_net-2.4.40.dist-info}/RECORD +105 -103
- {pygpt_net-2.4.38.dist-info → pygpt_net-2.4.40.dist-info}/LICENSE +0 -0
- {pygpt_net-2.4.38.dist-info → pygpt_net-2.4.40.dist-info}/WHEEL +0 -0
- {pygpt_net-2.4.38.dist-info → pygpt_net-2.4.40.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.09 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import re
|
@@ -42,6 +42,15 @@ class HtmlOutput(QWebEngineView):
|
|
42
42
|
self.plain = ""
|
43
43
|
self.html_content = ""
|
44
44
|
self.meta = None
|
45
|
+
self.tab = None
|
46
|
+
|
47
|
+
def set_tab(self, tab):
|
48
|
+
"""
|
49
|
+
Set tab
|
50
|
+
|
51
|
+
:param tab: Tab
|
52
|
+
"""
|
53
|
+
self.tab = tab
|
45
54
|
|
46
55
|
def set_meta(self, meta: CtxMeta):
|
47
56
|
"""
|
@@ -163,6 +172,7 @@ class HtmlOutput(QWebEngineView):
|
|
163
172
|
if success:
|
164
173
|
event = RenderEvent(RenderEvent.ON_PAGE_LOAD, {
|
165
174
|
"meta": self.meta,
|
175
|
+
"tab": self.tab,
|
166
176
|
})
|
167
177
|
self.window.dispatch(event)
|
168
178
|
|
@@ -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.09 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
from PySide6.QtCore import Qt
|
@@ -38,6 +38,15 @@ class ChatOutput(QTextBrowser):
|
|
38
38
|
self.setOpenLinks(False)
|
39
39
|
self.anchorClicked.connect(self.open_external_link)
|
40
40
|
self.setWordWrapMode(QTextOption.WordWrap)
|
41
|
+
self.tab = None
|
42
|
+
|
43
|
+
def set_tab(self, tab):
|
44
|
+
"""
|
45
|
+
Set tab
|
46
|
+
|
47
|
+
:param tab: Tab
|
48
|
+
"""
|
49
|
+
self.tab = tab
|
41
50
|
|
42
51
|
def open_external_link(self, url):
|
43
52
|
"""
|
@@ -6,21 +6,24 @@
|
|
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.09 00:00:00 #
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
import re
|
13
13
|
|
14
|
-
from PySide6.QtCore import Qt, QObject, Signal, Slot
|
14
|
+
from PySide6.QtCore import Qt, QObject, Signal, Slot, QEvent
|
15
15
|
from PySide6.QtWebChannel import QWebChannel
|
16
16
|
from PySide6.QtWebEngineCore import QWebEngineSettings, QWebEnginePage
|
17
17
|
from PySide6.QtWebEngineWidgets import QWebEngineView
|
18
18
|
from PySide6.QtGui import QAction, QIcon, QKeySequence
|
19
|
+
from PySide6.QtWidgets import QMenu
|
19
20
|
|
20
21
|
from pygpt_net.core.events import RenderEvent
|
21
22
|
from pygpt_net.item.ctx import CtxMeta
|
22
23
|
from pygpt_net.core.text.web_finder import WebFinder
|
24
|
+
from pygpt_net.ui.widget.tabs.layout import FocusEventFilter
|
23
25
|
from pygpt_net.utils import trans
|
26
|
+
|
24
27
|
import pygpt_net.icons_rc
|
25
28
|
|
26
29
|
|
@@ -38,9 +41,46 @@ class ChatWebOutput(QWebEngineView):
|
|
38
41
|
self.customContextMenuRequested.connect(self.on_context_menu)
|
39
42
|
self.signals = WebEngineSignals()
|
40
43
|
self.setContextMenuPolicy(Qt.CustomContextMenu)
|
44
|
+
self.filter = FocusEventFilter(self, self.on_focus)
|
45
|
+
self.installEventFilter(self)
|
41
46
|
self.plain = ""
|
42
47
|
self.html_content = ""
|
43
48
|
self.meta = None
|
49
|
+
self.tab = None
|
50
|
+
|
51
|
+
def eventFilter(self, source, event):
|
52
|
+
"""
|
53
|
+
Focus event filter
|
54
|
+
|
55
|
+
:param source: source
|
56
|
+
:param event: event
|
57
|
+
"""
|
58
|
+
if (event.type() == QEvent.ChildAdded and
|
59
|
+
source is self and
|
60
|
+
event.child().isWidgetType()):
|
61
|
+
self._glwidget = event.child()
|
62
|
+
self._glwidget.installEventFilter(self)
|
63
|
+
elif (event.type() == event.Type.MouseButtonPress):
|
64
|
+
col_idx = self.tab.column_idx
|
65
|
+
self.window.controller.ui.tabs.on_column_focus(col_idx)
|
66
|
+
return super().eventFilter(source, event)
|
67
|
+
|
68
|
+
def on_focus(self, widget):
|
69
|
+
"""
|
70
|
+
On widget clicked
|
71
|
+
|
72
|
+
:param widget: widget
|
73
|
+
"""
|
74
|
+
self.window.controller.ui.tabs.on_column_focus(self.tab.column_idx)
|
75
|
+
self.setFocus()
|
76
|
+
|
77
|
+
def set_tab(self, tab):
|
78
|
+
"""
|
79
|
+
Set tab
|
80
|
+
|
81
|
+
:param tab: Tab
|
82
|
+
"""
|
83
|
+
self.tab = tab
|
44
84
|
|
45
85
|
def set_meta(self, meta: CtxMeta):
|
46
86
|
"""
|
@@ -72,12 +112,7 @@ class ChatWebOutput(QWebEngineView):
|
|
72
112
|
|
73
113
|
:param position: position
|
74
114
|
"""
|
75
|
-
menu = self
|
76
|
-
|
77
|
-
# remove defaults
|
78
|
-
for action in menu.actions()[::-1]:
|
79
|
-
menu.removeAction(action)
|
80
|
-
|
115
|
+
menu = QMenu(self)
|
81
116
|
selected_text = ""
|
82
117
|
is_selection = self.page().hasSelection()
|
83
118
|
if is_selection:
|
@@ -138,6 +173,10 @@ class ChatWebOutput(QWebEngineView):
|
|
138
173
|
if self.window.core.config.has("zoom"):
|
139
174
|
self.page().setZoomFactor(self.window.core.config.get("zoom"))
|
140
175
|
|
176
|
+
def on_focus_js(self):
|
177
|
+
"""Focus JavaScript"""
|
178
|
+
self.window.controller.ui.tabs.on_column_focus(self.tab.column_idx)
|
179
|
+
|
141
180
|
def get_zoom_value(self) -> float:
|
142
181
|
"""
|
143
182
|
Get zoom value
|
@@ -165,6 +204,7 @@ class ChatWebOutput(QWebEngineView):
|
|
165
204
|
if success:
|
166
205
|
event = RenderEvent(RenderEvent.ON_PAGE_LOAD, {
|
167
206
|
"meta": self.meta,
|
207
|
+
"tab": self.tab,
|
168
208
|
})
|
169
209
|
self.window.dispatch(event)
|
170
210
|
|
@@ -318,4 +358,4 @@ class WebEngineSignals(QObject):
|
|
318
358
|
|
319
359
|
|
320
360
|
class WebEnginePageSignals(QObject):
|
321
|
-
js_message = Signal(int, str, str) # on Javascript message
|
361
|
+
js_message = Signal(int, str, str) # on Javascript message
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pygpt-net
|
3
|
-
Version: 2.4.
|
3
|
+
Version: 2.4.40
|
4
4
|
Summary: Desktop AI Assistant powered by models: OpenAI o1, GPT-4o, GPT-4, GPT-4 Vision, GPT-3.5, DALL-E 3, Llama 3, Mistral, Gemini, Claude, Bielik, and other models supported by Langchain, Llama Index, and Ollama. Features include chatbot, text completion, image generation, vision analysis, speech-to-text, internet access, file handling, command execution and more.
|
5
5
|
Home-page: https://pygpt.net
|
6
6
|
License: MIT
|
@@ -92,7 +92,7 @@ Description-Content-Type: text/markdown
|
|
92
92
|
|
93
93
|
[](https://snapcraft.io/pygpt)
|
94
94
|
|
95
|
-
Release: **2.4.
|
95
|
+
Release: **2.4.40** | build: **2024.12.13** | Python: **>=3.10, <3.12**
|
96
96
|
|
97
97
|
> Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
|
98
98
|
>
|
@@ -2074,6 +2074,10 @@ Per-page content chunk size (max characters per chunk). *Default:* `20000`
|
|
2074
2074
|
|
2075
2075
|
Disables SSL verification when crawling web pages. *Default:* `False`
|
2076
2076
|
|
2077
|
+
- `Use raw content (without summarization)` *raw*
|
2078
|
+
|
2079
|
+
Return raw content from web search instead of summarized content. Provides more data but consumes more tokens. *Default:* `True`
|
2080
|
+
|
2077
2081
|
- `Timeout` *timeout*
|
2078
2082
|
|
2079
2083
|
Connection timeout (seconds). *Default:* `5`
|
@@ -2084,7 +2088,7 @@ User agent to use when making requests. *Default:* `Mozilla/5.0`.
|
|
2084
2088
|
|
2085
2089
|
- `Max result length` *max_result_length*
|
2086
2090
|
|
2087
|
-
Max length of summarized result (characters). *Default:* `
|
2091
|
+
Max length of the summarized or raw result (characters). *Default:* `50000`
|
2088
2092
|
|
2089
2093
|
- `Max summary tokens` *summary_max_tokens*
|
2090
2094
|
|
@@ -3963,6 +3967,25 @@ may consume additional tokens that are not displayed in the main window.
|
|
3963
3967
|
|
3964
3968
|
## Recent changes:
|
3965
3969
|
|
3970
|
+
**2.4.40 (2024-12-13)**
|
3971
|
+
|
3972
|
+
- Enhanced Split Screen mode, now promoted from beta to stable.
|
3973
|
+
- Python Code Interpreter tool added to the Tabs.
|
3974
|
+
- HTML/JS Canvas tool added to the Tabs.
|
3975
|
+
- Added attachment icon to the context list if context has attachments.
|
3976
|
+
- Improved audio playback.
|
3977
|
+
- Improved web search.
|
3978
|
+
- Added a thumbnail image to web search results.
|
3979
|
+
- Added a new commands to web search: "extract_images" and "extract_links".
|
3980
|
+
- Added the option "Use raw content (without summarization)" to the web search plugin, which provides a more detailed result to the main model.
|
3981
|
+
- Extended the default maximum result characters to 50,000 in the web search plugin.
|
3982
|
+
|
3983
|
+
**2.4.39 (2024-12-09)**
|
3984
|
+
|
3985
|
+
- Added "Split Screen" mode (accessible via the switch in the bottom-right corner of the screen), which allows you to work in two windows simultaneously. It is currently experimental (beta). Future updates will include Code Interpreter and Canvas running in tabs.
|
3986
|
+
|
3987
|
+
- Fixed: Language switch.
|
3988
|
+
|
3966
3989
|
**2.4.38 (2024-12-08)**
|
3967
3990
|
|
3968
3991
|
- Added the ability to select a style for chat display between: Blocks, ChatGPT-like, and ChatGPT-like Wide. New option in the menu: Config -> Theme -> Style...
|