pygpt-net 2.6.66__py3-none-any.whl → 2.7.0__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.
- pygpt_net/CHANGELOG.txt +18 -0
- pygpt_net/__init__.py +3 -3
- pygpt_net/controller/assistant/assistant.py +13 -8
- pygpt_net/controller/assistant/batch.py +29 -15
- pygpt_net/controller/assistant/files.py +19 -14
- pygpt_net/controller/assistant/store.py +63 -41
- pygpt_net/controller/attachment/attachment.py +45 -35
- pygpt_net/controller/chat/attachment.py +50 -39
- pygpt_net/controller/config/field/dictionary.py +26 -14
- pygpt_net/controller/config/field/textarea.py +2 -2
- pygpt_net/controller/ctx/common.py +27 -17
- pygpt_net/controller/ctx/ctx.py +182 -101
- pygpt_net/controller/dialogs/info.py +2 -2
- pygpt_net/controller/files/files.py +101 -41
- pygpt_net/controller/idx/indexer.py +87 -31
- pygpt_net/controller/kernel/kernel.py +13 -2
- pygpt_net/controller/media/media.py +29 -1
- pygpt_net/controller/mode/mode.py +3 -3
- pygpt_net/controller/model/editor.py +141 -21
- pygpt_net/controller/model/importer.py +153 -54
- pygpt_net/controller/painter/painter.py +2 -2
- pygpt_net/controller/presets/experts.py +68 -15
- pygpt_net/controller/presets/presets.py +72 -36
- pygpt_net/controller/settings/editor.py +25 -1
- pygpt_net/controller/settings/profile.py +76 -35
- pygpt_net/controller/settings/workdir.py +70 -39
- pygpt_net/core/assistants/files.py +20 -18
- pygpt_net/core/filesystem/actions.py +111 -10
- pygpt_net/core/filesystem/filesystem.py +2 -1
- pygpt_net/core/idx/idx.py +12 -11
- pygpt_net/core/idx/worker.py +13 -1
- pygpt_net/core/models/models.py +4 -4
- pygpt_net/core/profile/profile.py +13 -3
- pygpt_net/core/types/image.py +10 -1
- pygpt_net/core/video/video.py +43 -3
- pygpt_net/data/config/config.json +3 -3
- pygpt_net/data/config/models.json +25 -14
- pygpt_net/data/css/style.dark.css +39 -1
- pygpt_net/data/css/style.light.css +39 -1
- pygpt_net/data/locale/locale.de.ini +4 -1
- pygpt_net/data/locale/locale.en.ini +4 -1
- pygpt_net/data/locale/locale.es.ini +4 -1
- pygpt_net/data/locale/locale.fr.ini +4 -1
- pygpt_net/data/locale/locale.it.ini +4 -1
- pygpt_net/data/locale/locale.pl.ini +5 -2
- pygpt_net/data/locale/locale.uk.ini +4 -1
- pygpt_net/data/locale/locale.zh.ini +4 -1
- pygpt_net/item/model.py +1 -1
- pygpt_net/provider/api/openai/__init__.py +4 -2
- pygpt_net/provider/api/openai/video.py +2 -2
- pygpt_net/provider/core/config/patch.py +9 -1
- pygpt_net/provider/core/model/patch.py +26 -1
- pygpt_net/tools/image_viewer/tool.py +17 -0
- pygpt_net/tools/text_editor/tool.py +9 -0
- pygpt_net/ui/__init__.py +2 -2
- pygpt_net/ui/dialog/models.py +10 -1
- pygpt_net/ui/layout/ctx/ctx_list.py +16 -6
- pygpt_net/ui/layout/toolbox/video.py +14 -6
- pygpt_net/ui/main.py +3 -1
- pygpt_net/ui/widget/calendar/select.py +3 -3
- pygpt_net/ui/widget/filesystem/explorer.py +1082 -142
- pygpt_net/ui/widget/lists/assistant.py +185 -24
- pygpt_net/ui/widget/lists/assistant_store.py +245 -42
- pygpt_net/ui/widget/lists/attachment.py +230 -47
- pygpt_net/ui/widget/lists/attachment_ctx.py +189 -33
- pygpt_net/ui/widget/lists/base_list_combo.py +2 -2
- pygpt_net/ui/widget/lists/context.py +1253 -70
- pygpt_net/ui/widget/lists/experts.py +110 -8
- pygpt_net/ui/widget/lists/model_editor.py +217 -14
- pygpt_net/ui/widget/lists/model_importer.py +125 -6
- pygpt_net/ui/widget/lists/preset.py +460 -71
- pygpt_net/ui/widget/lists/profile.py +149 -27
- pygpt_net/ui/widget/lists/uploaded.py +230 -38
- pygpt_net/ui/widget/option/combo.py +1046 -32
- pygpt_net/ui/widget/option/dictionary.py +35 -7
- pygpt_net/ui/widget/option/input.py +3 -1
- {pygpt_net-2.6.66.dist-info → pygpt_net-2.7.0.dist-info}/METADATA +20 -57
- {pygpt_net-2.6.66.dist-info → pygpt_net-2.7.0.dist-info}/RECORD +81 -81
- {pygpt_net-2.6.66.dist-info → pygpt_net-2.7.0.dist-info}/LICENSE +0 -0
- {pygpt_net-2.6.66.dist-info → pygpt_net-2.7.0.dist-info}/WHEEL +0 -0
- {pygpt_net-2.6.66.dist-info → pygpt_net-2.7.0.dist-info}/entry_points.txt +0 -0
|
@@ -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: 2025.
|
|
9
|
+
# Updated Date: 2025.12.27 21:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
|
+
from typing import List
|
|
13
|
+
|
|
12
14
|
from PySide6.QtCore import Qt, QAbstractItemModel, QModelIndex, QSize
|
|
13
15
|
from PySide6.QtGui import QIcon
|
|
14
16
|
from PySide6.QtWidgets import QWidget, QVBoxLayout, QPushButton, QTreeView, QMenu, QStyledItemDelegate, QComboBox, \
|
|
15
|
-
QCheckBox, QHeaderView, QHBoxLayout
|
|
17
|
+
QCheckBox, QHeaderView, QHBoxLayout, QAbstractItemView
|
|
16
18
|
|
|
17
19
|
from pygpt_net.utils import trans
|
|
18
20
|
|
|
@@ -133,6 +135,15 @@ class OptionDict(QWidget):
|
|
|
133
135
|
idx = index.row()
|
|
134
136
|
self.window.controller.config.dictionary.delete_item(self, idx)
|
|
135
137
|
|
|
138
|
+
def delete_items(self, idxs: List[int]):
|
|
139
|
+
"""
|
|
140
|
+
Delete multiple items (show confirm once)
|
|
141
|
+
|
|
142
|
+
:param idxs: list of row indices to delete
|
|
143
|
+
"""
|
|
144
|
+
# delegate batch deletion and confirmation to controller
|
|
145
|
+
self.window.controller.config.dictionary.delete_item(self, list(idxs))
|
|
146
|
+
|
|
136
147
|
def delete_item_execute(self, idx):
|
|
137
148
|
"""
|
|
138
149
|
Delete item (execute)
|
|
@@ -187,6 +198,10 @@ class OptionDictItems(QTreeView):
|
|
|
187
198
|
self.setIndentation(0)
|
|
188
199
|
self.setHeaderHidden(False)
|
|
189
200
|
|
|
201
|
+
# enable row-based multi selection (Ctrl/Shift)
|
|
202
|
+
self.setSelectionBehavior(QAbstractItemView.SelectRows)
|
|
203
|
+
self.setSelectionMode(QAbstractItemView.ExtendedSelection)
|
|
204
|
+
|
|
190
205
|
header = self.header()
|
|
191
206
|
header.setStretchLastSection(True)
|
|
192
207
|
header.setSectionResizeMode(QHeaderView.Stretch)
|
|
@@ -222,14 +237,27 @@ class OptionDictItems(QTreeView):
|
|
|
222
237
|
:param event: context menu event
|
|
223
238
|
"""
|
|
224
239
|
item = self.indexAt(event.pos())
|
|
225
|
-
|
|
240
|
+
sel_model = self.selectionModel()
|
|
241
|
+
selected_rows = sel_model.selectedRows() if sel_model is not None else []
|
|
242
|
+
multi = len(selected_rows) > 1
|
|
243
|
+
|
|
244
|
+
# allow context menu on empty area only when multi-selection exists
|
|
245
|
+
if not item.isValid() and not multi:
|
|
226
246
|
return
|
|
227
247
|
|
|
228
248
|
menu = QMenu(self)
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
249
|
+
if multi:
|
|
250
|
+
# only Delete is available for multi-select
|
|
251
|
+
delete_action = menu.addAction(self._icon_delete, self._act_delete_text)
|
|
252
|
+
# collect row indices from current selection
|
|
253
|
+
idxs = [ix.row() for ix in selected_rows]
|
|
254
|
+
delete_action.triggered.connect(lambda: self.parent.delete_items(idxs))
|
|
255
|
+
else:
|
|
256
|
+
# single row actions
|
|
257
|
+
edit_action = menu.addAction(self._icon_edit, self._act_edit_text)
|
|
258
|
+
delete_action = menu.addAction(self._icon_delete, self._act_delete_text)
|
|
259
|
+
edit_action.triggered.connect(lambda: self.parent.edit_item(event))
|
|
260
|
+
delete_action.triggered.connect(lambda: self.parent.delete_item(event))
|
|
233
261
|
menu.exec_(event.globalPos())
|
|
234
262
|
|
|
235
263
|
|
|
@@ -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: 2025.
|
|
9
|
+
# Updated Date: 2025.12.26 12:00:00 #
|
|
10
10
|
# ================================================== #
|
|
11
11
|
|
|
12
12
|
from PySide6.QtGui import QAction, QIcon
|
|
@@ -104,6 +104,8 @@ class OptionInput(QLineEdit):
|
|
|
104
104
|
self.real_time = self.option["real_time"]
|
|
105
105
|
if "read_only" in self.option and self.option["read_only"]:
|
|
106
106
|
self.setReadOnly(True)
|
|
107
|
+
if "placeholder" in self.option and self.option["placeholder"]:
|
|
108
|
+
self.setPlaceholderText(self.option["placeholder"])
|
|
107
109
|
|
|
108
110
|
# on update hook
|
|
109
111
|
self.textChanged.connect(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: pygpt-net
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.7.0
|
|
4
4
|
Summary: Desktop AI Assistant powered by: OpenAI GPT-5, GPT-4, o1, o3, Gemini, Claude, Grok, DeepSeek, and other models supported by Llama Index, and Ollama. Chatbot, agents, completion, image generation, vision analysis, speech-to-text, plugins, MCP, internet access, file handling, command execution and more.
|
|
5
5
|
License: MIT
|
|
6
6
|
Keywords: ai,api,api key,app,assistant,bielik,chat,chatbot,chatgpt,claude,dall-e,deepseek,desktop,gemini,gpt,gpt-3.5,gpt-4,gpt-4-vision,gpt-4o,gpt-5,gpt-oss,gpt3.5,gpt4,grok,langchain,llama-index,llama3,mistral,o1,o3,ollama,openai,presets,py-gpt,py_gpt,pygpt,pyside,qt,text completion,tts,ui,vision,whisper
|
|
@@ -119,7 +119,7 @@ Description-Content-Type: text/markdown
|
|
|
119
119
|
|
|
120
120
|
[](https://snapcraft.io/pygpt)
|
|
121
121
|
|
|
122
|
-
Release: **2.
|
|
122
|
+
Release: **2.7.0** | build: **2025-12-28** | Python: **>=3.10, <3.14**
|
|
123
123
|
|
|
124
124
|
> Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
|
|
125
125
|
>
|
|
@@ -3753,6 +3753,24 @@ may consume additional tokens that are not displayed in the main window.
|
|
|
3753
3753
|
|
|
3754
3754
|
## Recent changes:
|
|
3755
3755
|
|
|
3756
|
+
**2.7.0 (2025-12-28)**
|
|
3757
|
+
|
|
3758
|
+
- Added multi-select functionality using CTRL or SHIFT and batch actions to the context list, preset list, attachments list, and other list-based widgets.
|
|
3759
|
+
- Added a search field to comboboxes, such as the model selector.
|
|
3760
|
+
- Added a Duplicate option to the models editor.
|
|
3761
|
+
- Added drag-and-drop to context list.
|
|
3762
|
+
- Added multi-select, drag-and-drop, Cut, Copy, and Paste features to the File Explorer.
|
|
3763
|
+
- Fix: scroll restoration after actions in the context list.
|
|
3764
|
+
- Fix: 'Use as image' option in the File Explorer.
|
|
3765
|
+
- Fix: current preset system prompt disappearing on profile change.
|
|
3766
|
+
- Other UI fixes/improvements.
|
|
3767
|
+
|
|
3768
|
+
**2.6.67 (2025-12-26)**
|
|
3769
|
+
|
|
3770
|
+
- Added a provider filter to the models editor.
|
|
3771
|
+
- Added video options (resolution, duration) to the toolbox.
|
|
3772
|
+
- Updated the models configuration.
|
|
3773
|
+
|
|
3756
3774
|
**2.6.66 (2025-12-25)**
|
|
3757
3775
|
|
|
3758
3776
|
- Added Sora 2 support - #155.
|
|
@@ -3764,61 +3782,6 @@ may consume additional tokens that are not displayed in the main window.
|
|
|
3764
3782
|
- Fix: charset-normalizer 3.2.0 circular import - #152.
|
|
3765
3783
|
- Fix: Google client closed state.
|
|
3766
3784
|
|
|
3767
|
-
**2.6.65 (2025-09-28)**
|
|
3768
|
-
|
|
3769
|
-
- Added drag and drop functionality for files and directories from the filesystem in attachments and file explorer.
|
|
3770
|
-
- Added automatic thumbnail generation when uploading avatars.
|
|
3771
|
-
- Added a last status timer.
|
|
3772
|
-
- Added a fade effect to collapsed user messages.
|
|
3773
|
-
- Added a scroll area to the agent options in the presets editor.
|
|
3774
|
-
- Added a hover effect to lists.
|
|
3775
|
-
- Improved UI/UX.
|
|
3776
|
-
|
|
3777
|
-
**2.6.64 (2025-09-27)**
|
|
3778
|
-
|
|
3779
|
-
- Added translations to agent headers.
|
|
3780
|
-
- Improved presets tabs.
|
|
3781
|
-
- Added support for music (Lyria) in both image and video modes (beta).
|
|
3782
|
-
|
|
3783
|
-
**2.6.63 (2025-09-27)**
|
|
3784
|
-
|
|
3785
|
-
- Improved agents' workflows.
|
|
3786
|
-
- Enhanced the display of agents' steps in the UI.
|
|
3787
|
-
|
|
3788
|
-
**2.6.62 (2025-09-26)**
|
|
3789
|
-
|
|
3790
|
-
- Enhanced agent workflow execution.
|
|
3791
|
-
- Improved preset list handling by adding a drop field indicator and fixing auto-scroll.
|
|
3792
|
-
- Added middle-mouse button panning to Painter.
|
|
3793
|
-
- Added an input character counter.
|
|
3794
|
-
|
|
3795
|
-
**2.6.61 (2025-09-26)**
|
|
3796
|
-
|
|
3797
|
-
- Enhanced the agents node editor, custom agent flow, and instruction following.
|
|
3798
|
-
- Added drag-and-drop and reordering functionality to the presets list.
|
|
3799
|
-
- Added statistics for response tokens, including time elapsed and tokens per second.
|
|
3800
|
-
- Improved UI/UX.
|
|
3801
|
-
|
|
3802
|
-
**2.6.60 (2025-09-25)**
|
|
3803
|
-
|
|
3804
|
-
- Added a new tool: Agents Builder - allowing visual design of agent workflows using nodes - available in Tools -> Agents Builder (beta).
|
|
3805
|
-
|
|
3806
|
-
**2.6.59 (2025-09-23)**
|
|
3807
|
-
|
|
3808
|
-
- LlamaIndex has been upgraded to v0.13.6.
|
|
3809
|
-
- The Responses API is disabled by default in Agents (LlamaIndex) for compatibility.
|
|
3810
|
-
- Added WinAPI support to the System (OS) plugin.
|
|
3811
|
-
|
|
3812
|
-
**2.6.58 (2025-09-22)**
|
|
3813
|
-
|
|
3814
|
-
- Added: internal Web Browser tool.
|
|
3815
|
-
|
|
3816
|
-
**2.6.57 (2025-09-22)**
|
|
3817
|
-
|
|
3818
|
-
- Changed: The web search icon has been moved to the input area.
|
|
3819
|
-
- Improved: The local web search plugin has been enhanced to retrieve multiple URLs at once.
|
|
3820
|
-
- Added: Use proxy switch in Settings.
|
|
3821
|
-
|
|
3822
3785
|
# Credits and links
|
|
3823
3786
|
|
|
3824
3787
|
**Official website:** <https://pygpt.net>
|