pygpt-net 2.4.44__py3-none-any.whl → 2.4.45__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 +4 -0
- README.md +5 -1
- pygpt_net/CHANGELOG.txt +4 -0
- pygpt_net/__init__.py +1 -1
- pygpt_net/controller/lang/mapping.py +32 -9
- pygpt_net/data/config/config.json +2 -2
- pygpt_net/data/config/models.json +2 -2
- pygpt_net/data/config/modes.json +2 -2
- pygpt_net/data/css/style.css +1 -0
- pygpt_net/data/locale/locale.de.ini +2 -2
- pygpt_net/data/locale/locale.en.ini +1 -1
- pygpt_net/data/locale/locale.es.ini +2 -2
- pygpt_net/data/locale/locale.fr.ini +2 -2
- pygpt_net/data/locale/locale.it.ini +2 -2
- pygpt_net/data/locale/locale.pl.ini +2 -2
- pygpt_net/data/locale/locale.uk.ini +2 -2
- pygpt_net/data/locale/locale.zh.ini +2 -2
- pygpt_net/provider/core/config/patch.py +6 -0
- pygpt_net/provider/loaders/hub/google/gmail.py +2 -2
- pygpt_net/provider/loaders/web_github_issues.py +13 -0
- pygpt_net/provider/loaders/web_github_repo.py +10 -0
- pygpt_net/provider/loaders/web_google_gmail.py +3 -2
- pygpt_net/provider/loaders/web_rss.py +1 -0
- pygpt_net/provider/loaders/web_sitemap.py +7 -2
- pygpt_net/tools/indexer/ui/web.py +14 -3
- pygpt_net/ui/widget/dialog/url.py +14 -3
- {pygpt_net-2.4.44.dist-info → pygpt_net-2.4.45.dist-info}/METADATA +6 -2
- {pygpt_net-2.4.44.dist-info → pygpt_net-2.4.45.dist-info}/RECORD +31 -31
- {pygpt_net-2.4.44.dist-info → pygpt_net-2.4.45.dist-info}/LICENSE +0 -0
- {pygpt_net-2.4.44.dist-info → pygpt_net-2.4.45.dist-info}/WHEEL +0 -0
- {pygpt_net-2.4.44.dist-info → pygpt_net-2.4.45.dist-info}/entry_points.txt +0 -0
CHANGELOG.md
CHANGED
README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
[](https://snapcraft.io/pygpt)
|
4
4
|
|
5
|
-
Release: **2.4.
|
5
|
+
Release: **2.4.45** | build: **2024.12.16** | Python: **>=3.10, <3.12**
|
6
6
|
|
7
7
|
> Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
|
8
8
|
>
|
@@ -3938,6 +3938,10 @@ may consume additional tokens that are not displayed in the main window.
|
|
3938
3938
|
|
3939
3939
|
## Recent changes:
|
3940
3940
|
|
3941
|
+
**2.4.45 (2024-12-16)**
|
3942
|
+
|
3943
|
+
- Enhanced web data loaders UI.
|
3944
|
+
|
3941
3945
|
**2.4.44 (2024-12-16)**
|
3942
3946
|
|
3943
3947
|
- Enhanced web data loaders.
|
pygpt_net/CHANGELOG.txt
CHANGED
pygpt_net/__init__.py
CHANGED
@@ -13,7 +13,7 @@ __author__ = "Marcin Szczygliński"
|
|
13
13
|
__copyright__ = "Copyright 2024, Marcin Szczygliński"
|
14
14
|
__credits__ = ["Marcin Szczygliński"]
|
15
15
|
__license__ = "MIT"
|
16
|
-
__version__ = "2.4.
|
16
|
+
__version__ = "2.4.45"
|
17
17
|
__build__ = "2024.12.16"
|
18
18
|
__maintainer__ = "Marcin Szczygliński"
|
19
19
|
__github__ = "https://github.com/szczyglis-dev/py-gpt"
|
@@ -34,42 +34,66 @@ class Mapping:
|
|
34
34
|
# nodes labels
|
35
35
|
for k in self.mapping['nodes']:
|
36
36
|
if k in self.window.ui.nodes:
|
37
|
-
|
37
|
+
try:
|
38
|
+
self.window.ui.nodes[k].setText(trans(self.mapping['nodes'][k]))
|
39
|
+
except:
|
40
|
+
pass
|
38
41
|
|
39
42
|
# menu title
|
40
43
|
for k in self.mapping['menu.title']:
|
41
44
|
if k in self.window.ui.menu:
|
42
|
-
|
45
|
+
try:
|
46
|
+
self.window.ui.menu[k].setTitle(trans(self.mapping['menu.title'][k]))
|
47
|
+
except:
|
48
|
+
pass
|
43
49
|
|
44
50
|
# menu text
|
45
51
|
for k in self.mapping['menu.text']:
|
46
52
|
if k in self.window.ui.menu:
|
47
|
-
|
53
|
+
try:
|
54
|
+
self.window.ui.menu[k].setText(trans(self.mapping['menu.text'][k]))
|
55
|
+
except:
|
56
|
+
pass
|
48
57
|
|
49
58
|
# menu tooltip
|
50
59
|
for k in self.mapping['menu.tooltip']:
|
51
60
|
if k in self.window.ui.menu:
|
52
|
-
|
61
|
+
try:
|
62
|
+
self.window.ui.menu[k].setToolTip(trans(self.mapping['menu.tooltip'][k]))
|
63
|
+
except:
|
64
|
+
pass
|
53
65
|
|
54
66
|
# dialog title
|
55
67
|
for k in self.mapping['dialog.title']:
|
56
68
|
if k in self.window.ui.dialog:
|
57
|
-
|
69
|
+
try:
|
70
|
+
self.window.ui.dialog[k].setWindowTitle(trans(self.mapping['dialog.title'][k]))
|
71
|
+
except:
|
72
|
+
pass
|
58
73
|
|
59
74
|
# tooltip
|
60
75
|
for k in self.mapping['tooltip']:
|
61
76
|
if k in self.window.ui.nodes:
|
62
|
-
|
77
|
+
try:
|
78
|
+
self.window.ui.nodes[k].setToolTip(trans(self.mapping['tooltip'][k]))
|
79
|
+
except:
|
80
|
+
pass
|
63
81
|
|
64
82
|
# placeholder
|
65
83
|
for k in self.mapping['placeholder']:
|
66
84
|
if k in self.window.ui.nodes:
|
67
|
-
|
85
|
+
try:
|
86
|
+
self.window.ui.nodes[k].setPlaceholderText(trans(self.mapping['placeholder'][k]))
|
87
|
+
except:
|
88
|
+
pass
|
68
89
|
|
69
90
|
# menu tab tools
|
70
91
|
for k in self.window.controller.tools.get_tab_tools():
|
71
92
|
if k in self.window.ui.menu:
|
72
|
-
|
93
|
+
try:
|
94
|
+
self.window.ui.menu[k].setText(trans("output.tab." + self.window.controller.tools.get_tab_tools()[k][0]))
|
95
|
+
except:
|
96
|
+
pass
|
73
97
|
|
74
98
|
def get_mapping(self) -> Dict[str, Dict[str, str]]:
|
75
99
|
"""
|
@@ -313,7 +337,6 @@ class Mapping:
|
|
313
337
|
nodes['tool.indexer.file.options.replace'] = 'tool.indexer.option.replace'
|
314
338
|
nodes['tool.indexer.web.loader.label'] = 'tool.indexer.tab.web.loader'
|
315
339
|
nodes['tool.indexer.web.options.label'] = 'tool.indexer.tab.web.source'
|
316
|
-
nodes['tool.indexer.web.config.label'] = 'tool.indexer.tab.web.cfg'
|
317
340
|
nodes['tool.indexer.web.options.replace'] = 'tool.indexer.option.replace'
|
318
341
|
nodes['tool.indexer.file.header.tip'] = 'tool.indexer.tab.files.tip'
|
319
342
|
nodes['tool.indexer.web.header.tip'] = 'tool.indexer.tab.web.tip'
|
pygpt_net/data/config/modes.json
CHANGED
pygpt_net/data/css/style.css
CHANGED
@@ -100,7 +100,7 @@ assistant.tool.retrieval = Werkzeug: Abruf
|
|
100
100
|
assistant.vector_store = Vektor Speicher
|
101
101
|
attachments.auto_index = Automatische Indizierung beim Hochladen
|
102
102
|
attachments.btn.add = Datei hinzufügen
|
103
|
-
attachments.btn.add_url =
|
103
|
+
attachments.btn.add_url = Web
|
104
104
|
attachments.btn.clear = Dateien löschen
|
105
105
|
attachments.capture_clear = Beim Erfassen löschen
|
106
106
|
attachments.clear.confirm = Liste löschen?
|
@@ -346,7 +346,7 @@ dialog.start.title = API-KEY ist noch nicht konfiguriert
|
|
346
346
|
dialog.start.title.text = Ihr API-Schlüssel ist noch nicht konfiguriert...\nSie erhalten einen API-Schlüssel, indem Sie ein Konto auf der OpenAI-Website registrieren:
|
347
347
|
dialog.url.dismiss = Abbrechen
|
348
348
|
dialog.url.tip = Geben Sie die URL der Webseite an, die Sie als zusätzlichen Kontext anfügen möchten, z.B. https://de.wikipedia.org/wiki/Elon_Musk, oder ein YouTube-Video zur Transkription, z.B. https://www.youtube.com/watch?v=CRRlbK5w8AE.
|
349
|
-
dialog.url.title = Web
|
349
|
+
dialog.url.title = Fügen Sie Web- oder externe Inhalte als zusätzlichen Kontext hinzu.
|
350
350
|
dialog.url.update = Hinzufügen
|
351
351
|
dialog.workdir.change.confirm = Sind Sie sicher, dass Sie das Arbeitsverzeichnis zu folgendem ändern/verschieben möchten:\n{path}?
|
352
352
|
dialog.workdir.change.empty.alert = Verzeichnis ist nicht leer! Vorgang wird abgebrochen.
|
@@ -378,7 +378,7 @@ dialog.start.title = Api Key is not configured yet
|
|
378
378
|
dialog.start.title.text = Your API key is not configured yet...\nYou will obtain an API key by registering an account on the OpenAI website:
|
379
379
|
dialog.url.dismiss = Cancel
|
380
380
|
dialog.url.tip = Provide the URL of the web page you want to attach as additional context, e.g., https://pl.wikipedia.org/wiki/Elon_Musk, or a YouTube video to transcribe, e.g., https://www.youtube.com/watch?v=CRRlbK5w8AE.
|
381
|
-
dialog.url.title =
|
381
|
+
dialog.url.title = Add web or external content to provide additional context.
|
382
382
|
dialog.url.update = Add
|
383
383
|
dialog.workdir.change.confirm = Are you sure you want to change/move workdir to:\n{path}?
|
384
384
|
dialog.workdir.change.empty.alert = Directory is not empty! Aborting.
|
@@ -100,7 +100,7 @@ assistant.tool.retrieval = Herramienta: recuperación
|
|
100
100
|
assistant.vector_store = Almacén de vectores
|
101
101
|
attachments.auto_index = Indexación automática al subir
|
102
102
|
attachments.btn.add = Añadir archivo
|
103
|
-
attachments.btn.add_url =
|
103
|
+
attachments.btn.add_url = Web
|
104
104
|
attachments.btn.clear = Limpiar archivos
|
105
105
|
attachments.capture_clear = Limpiar al capturar
|
106
106
|
attachments.clear.confirm = ¿Limpiar la lista?
|
@@ -346,7 +346,7 @@ dialog.start.title = La API KEY aún no está configurada
|
|
346
346
|
dialog.start.title.text = Su clave de API aún no está configurada...\nObtendrá una clave de API registrando una cuenta en el sitio web de OpenAI:
|
347
347
|
dialog.url.dismiss = Cancelar
|
348
348
|
dialog.url.tip = Proporcione la URL de la página web que desea adjuntar como contexto adicional, por ejemplo, https://es.wikipedia.org/wiki/Elon_Musk, o un video de YouTube para transcribir, por ejemplo, https://www.youtube.com/watch?v=CRRlbK5w8AE.
|
349
|
-
dialog.url.title =
|
349
|
+
dialog.url.title = Añadir contenido web o externo como contexto adicional.
|
350
350
|
dialog.url.update = Agregar
|
351
351
|
dialog.workdir.change.confirm = ¿Está seguro de querer cambiar/mover el directorio de trabajo a:\n{path}?
|
352
352
|
dialog.workdir.change.empty.alert = ¡El directorio no está vacío! Cancelando la operación.
|
@@ -100,7 +100,7 @@ assistant.tool.retrieval = Outil : récupération
|
|
100
100
|
assistant.vector_store = Base vectorielle
|
101
101
|
attachments.auto_index = Indexation automatique lors du téléchargement
|
102
102
|
attachments.btn.add = Ajouter un fichier
|
103
|
-
attachments.btn.add_url =
|
103
|
+
attachments.btn.add_url = Web
|
104
104
|
attachments.btn.clear = Effacer les fichiers
|
105
105
|
attachments.capture_clear = Effacer à la capture
|
106
106
|
attachments.clear.confirm = Effacer la liste ?
|
@@ -346,7 +346,7 @@ dialog.start.title = La CLÉ API n’est pas encore configurée
|
|
346
346
|
dialog.start.title.text = Votre clé API n'est pas encore configurée...\nVous obtiendrez une clé API en vous inscrivant sur le site web d'OpenAI :
|
347
347
|
dialog.url.dismiss = Annuler
|
348
348
|
dialog.url.tip = Fournissez l'URL de la page Web que vous souhaitez joindre comme contexte supplémentaire, par exemple, https://fr.wikipedia.org/wiki/Elon_Musk, ou une vidéo YouTube à transcrire, par exemple, https://www.youtube.com/watch?v=CRRlbK5w8AE.
|
349
|
-
dialog.url.title =
|
349
|
+
dialog.url.title = Ajoutez du contenu web ou externe comme contexte supplémentaire.
|
350
350
|
dialog.url.update = Ajouter
|
351
351
|
dialog.workdir.change.confirm = Êtes-vous sûr de vouloir changer/déplacer le répertoire de travail vers :\n{path}?
|
352
352
|
dialog.workdir.change.empty.alert = Le répertoire n'est pas vide ! Opération annulée.
|
@@ -100,7 +100,7 @@ assistant.tool.retrieval = Strumento: recupero
|
|
100
100
|
assistant.vector_store = Archivio vettoriale
|
101
101
|
attachments.auto_index = Indicizzazione automatica al caricamento
|
102
102
|
attachments.btn.add = Aggiungi file
|
103
|
-
attachments.btn.add_url =
|
103
|
+
attachments.btn.add_url = Web
|
104
104
|
attachments.btn.clear = Pulisci file
|
105
105
|
attachments.capture_clear = Pulisci alla cattura
|
106
106
|
attachments.clear.confirm = Pulire l'elenco?
|
@@ -346,7 +346,7 @@ dialog.start.title = API KEY non ancora configurata
|
|
346
346
|
dialog.start.title.text = La tua API key non è ancora configurata...\nOtterrai una API key registrando un account sul sito web di OpenAI:
|
347
347
|
dialog.url.dismiss = Annulla
|
348
348
|
dialog.url.tip = Fornisci l'URL della pagina web che desideri allegare come contesto aggiuntivo, ad esempio, https://it.wikipedia.org/wiki/Elon_Musk, o un video YouTube da trascrivere, ad esempio, https://www.youtube.com/watch?v=CRRlbK5w8AE.
|
349
|
-
dialog.url.title =
|
349
|
+
dialog.url.title = Aggiungi contenuti web o esterni come contesto aggiuntivo.
|
350
350
|
dialog.url.update = Aggiungi
|
351
351
|
dialog.workdir.change.confirm = Sei sicuro di voler cambiare/spostare la workdir a:\n{path}?
|
352
352
|
dialog.workdir.change.empty.alert = La cartella non è vuota! Annullamento dell'operazione.
|
@@ -100,7 +100,7 @@ assistant.tool.retrieval = Tool: retrieval
|
|
100
100
|
assistant.vector_store = Baza wektorowa
|
101
101
|
attachments.auto_index = Auto-indeksacja przy przesyłaniu
|
102
102
|
attachments.btn.add = Dodaj plik
|
103
|
-
attachments.btn.add_url =
|
103
|
+
attachments.btn.add_url = Sieć
|
104
104
|
attachments.btn.clear = Wyczyść
|
105
105
|
attachments.capture_clear = Wyczyść przy przechwytywaniu
|
106
106
|
attachments.clear.confirm = Wyczyścić listę plików?
|
@@ -346,7 +346,7 @@ dialog.start.title = Klucz API nie jest zdefiniowany
|
|
346
346
|
dialog.start.title.text = Nie skonfigurowałeś jeszcze klucza API...\nKlucz API uzyskasz rejestrując konto na stronie internetowej OpenAI:
|
347
347
|
dialog.url.dismiss = Anuluj
|
348
348
|
dialog.url.tip = Podaj URL strony internetowej, którą chcesz dołączyć jako dodatkowy kontekst, np. https://pl.wikipedia.org/wiki/Elon_Musk, lub film na YouTube do transkrypcji, np. https://www.youtube.com/watch?v=CRRlbK5w8AE.
|
349
|
-
dialog.url.title =
|
349
|
+
dialog.url.title = Dodaj treść z sieci lub zewnętrzne jako dodatkowy kontekst.
|
350
350
|
dialog.url.update = Dodaj
|
351
351
|
dialog.workdir.change.confirm = Czy jesteś pewny, że chcesz zmienić/przenieść katalog roboczy do:\n{path}?
|
352
352
|
dialog.workdir.change.empty.alert = Katalog nie jest pusty! Anulowanie.
|
@@ -100,7 +100,7 @@ assistant.tool.retrieval = Інструмент: пошук
|
|
100
100
|
assistant.vector_store = Векторне сховище
|
101
101
|
attachments.auto_index = Автоматичне індексування при завантаженні
|
102
102
|
attachments.btn.add = Додати файл
|
103
|
-
attachments.btn.add_url =
|
103
|
+
attachments.btn.add_url = Веб
|
104
104
|
attachments.btn.clear = Очистити файли
|
105
105
|
attachments.capture_clear = Очистити під час захоплення
|
106
106
|
attachments.clear.confirm = Очистити список?
|
@@ -346,7 +346,7 @@ dialog.start.title = API КЛЮЧ ще не налаштований
|
|
346
346
|
dialog.start.title.text = Ваш API ключ ще не налаштований...\nВи отримаєте API ключ, зареєструвавшись на сайті OpenAI:
|
347
347
|
dialog.url.dismiss = Скасувати
|
348
348
|
dialog.url.tip = Вкажіть URL веб-сторінки, яку ви хочете прикріпити як додатковий контекст, наприклад, https://uk.wikipedia.org/wiki/Ілон_Маск, або відео на YouTube для транскрипції, наприклад, https://www.youtube.com/watch?v=CRRlbK5w8AE.
|
349
|
-
dialog.url.title =
|
349
|
+
dialog.url.title = Додайте веб-або зовнішній контент як додатковий контекст.
|
350
350
|
dialog.url.update = Додати
|
351
351
|
dialog.workdir.change.confirm = Ви впевнені, що хочете змінити/перемістити робочий каталог до:\n{path}?
|
352
352
|
dialog.workdir.change.empty.alert = Каталог не порожній! Операцію скасовано.
|
@@ -102,7 +102,7 @@ assistant.tool.retrieval = 工具:檢索
|
|
102
102
|
assistant.vector_store = 向量存储库
|
103
103
|
attachments.auto_index = 上传时自动索引
|
104
104
|
attachments.btn.add = 添加文件
|
105
|
-
attachments.btn.add_url =
|
105
|
+
attachments.btn.add_url = 网络
|
106
106
|
attachments.btn.clear = 清除文件
|
107
107
|
attachments.capture_clear = 捕獲後清除
|
108
108
|
attachments.clear.confirm = 清除列表?
|
@@ -356,7 +356,7 @@ dialog.start.title = API KEY尚未配置
|
|
356
356
|
dialog.start.title.text = 您的API密鑰尚未配置...\n您將通過在OpenAI網站上註冊賬戶獲得API密鑰:
|
357
357
|
dialog.url.dismiss = 取消
|
358
358
|
dialog.url.tip = 提供您要附加为附加上下文的网页 URL,例如,https://zh.wikipedia.org/wiki/Elon_Musk,或一个要转录的 YouTube 视频,例如,https://www.youtube.com/watch?v=CRRlbK5w8AE。
|
359
|
-
dialog.url.title =
|
359
|
+
dialog.url.title = 添加网络或外部内容作为额外的上下文。
|
360
360
|
dialog.url.update = 添加
|
361
361
|
dialog.workdir.change.confirm = 您确定要更改/移动工作目录到:\n{path}吗?
|
362
362
|
dialog.workdir.change.empty.alert = 目录不为空!操作取消。
|
@@ -1782,6 +1782,12 @@ class Patch:
|
|
1782
1782
|
data["ctx.records.folders.top"] = True
|
1783
1783
|
updated = True
|
1784
1784
|
|
1785
|
+
# < 2.4.45
|
1786
|
+
if old < parse_version("2.4.45"):
|
1787
|
+
print("Migrating config from < 2.4.45...")
|
1788
|
+
self.window.core.updater.patch_css('style.css', True) # force update
|
1789
|
+
updated = True
|
1790
|
+
|
1785
1791
|
# update file
|
1786
1792
|
migrated = False
|
1787
1793
|
if updated:
|
@@ -21,7 +21,7 @@ class GmailReader(BaseReader, BaseModel):
|
|
21
21
|
Reads emails
|
22
22
|
|
23
23
|
Args:
|
24
|
-
max_results (int): Defaults to 10
|
24
|
+
max_results (int): Defaults to 10.``
|
25
25
|
query (str): Gmail query. Defaults to None.
|
26
26
|
service (Any): Gmail service. Defaults to None.
|
27
27
|
results_per_page (Optional[int]): Max number of results per page. Defaults to 10.
|
@@ -32,7 +32,7 @@ class GmailReader(BaseReader, BaseModel):
|
|
32
32
|
token_path: str = "token.json"
|
33
33
|
use_iterative_parser: bool = False
|
34
34
|
max_results: int = 10
|
35
|
-
service: Any
|
35
|
+
service: Any = None
|
36
36
|
results_per_page: Optional[int]
|
37
37
|
|
38
38
|
def load_data(self, query: str = None) -> List[Document]:
|
@@ -30,19 +30,27 @@ class Loader(BaseLoader):
|
|
30
30
|
"args": {
|
31
31
|
"owner": {
|
32
32
|
"type": "str",
|
33
|
+
"label": "Owner",
|
33
34
|
},
|
34
35
|
"repository": {
|
35
36
|
"type": "str",
|
37
|
+
"label": "Repository",
|
36
38
|
},
|
37
39
|
"state": {
|
38
40
|
"type": "enum",
|
39
41
|
"options": ["open", "closed", "all"],
|
42
|
+
"label": "State",
|
43
|
+
"description": "Issue state, default: open, available options: open, closed, all",
|
40
44
|
},
|
41
45
|
"label_filters_include": {
|
42
46
|
"type": "list",
|
47
|
+
"label": "Label filters include",
|
48
|
+
"description": "List of labels to include, separated by comma (,)",
|
43
49
|
},
|
44
50
|
"label_filters_exclude": {
|
45
51
|
"type": "list",
|
52
|
+
"label": "Label filters exclude",
|
53
|
+
"description": "List of labels to exclude, separated by comma (,)",
|
46
54
|
},
|
47
55
|
},
|
48
56
|
}
|
@@ -98,6 +106,11 @@ class Loader(BaseLoader):
|
|
98
106
|
if "repository" in kwargs and kwargs.get("repository"):
|
99
107
|
if isinstance(kwargs.get("repository"), str):
|
100
108
|
args["repository"] = kwargs.get("repository") # repo name
|
109
|
+
if "state" in kwargs and kwargs.get("state"):
|
110
|
+
if isinstance(kwargs.get("state"), str):
|
111
|
+
args["state"] = kwargs.get("state")
|
112
|
+
if args["state"] not in ["open", "closed", "all"]:
|
113
|
+
args["state"] = "open"
|
101
114
|
|
102
115
|
# filters
|
103
116
|
if "label_filters_include" in kwargs and kwargs.get("label_filters_include"):
|
@@ -30,15 +30,19 @@ class Loader(BaseLoader):
|
|
30
30
|
"args": {
|
31
31
|
"commit_sha": {
|
32
32
|
"type": "str",
|
33
|
+
"label": "Commit SHA",
|
33
34
|
},
|
34
35
|
"branch": {
|
35
36
|
"type": "str",
|
37
|
+
"label": "Branch",
|
36
38
|
},
|
37
39
|
"owner": {
|
38
40
|
"type": "str",
|
41
|
+
"label": "Owner",
|
39
42
|
},
|
40
43
|
"repository": {
|
41
44
|
"type": "str",
|
45
|
+
"label": "Repository",
|
42
46
|
}
|
43
47
|
},
|
44
48
|
},
|
@@ -68,6 +72,12 @@ class Loader(BaseLoader):
|
|
68
72
|
"filter_file_ext_include": "list",
|
69
73
|
"filter_file_ext_exclude": "list",
|
70
74
|
}
|
75
|
+
self.init_args_desc = {
|
76
|
+
"filter_dirs_include": "List of directories to include, separated by comma (,)",
|
77
|
+
"filter_dirs_exclude": "List of directories to exclude, separated by comma (,)",
|
78
|
+
"filter_file_ext_include": "List of file extensions to include, separated by comma (,)",
|
79
|
+
"filter_file_ext_exclude": "list of file extensions to exclude, separated by comma (,)",
|
80
|
+
}
|
71
81
|
|
72
82
|
def get(self) -> BaseReader:
|
73
83
|
"""
|
@@ -31,6 +31,7 @@ class Loader(BaseLoader):
|
|
31
31
|
"query": {
|
32
32
|
"type": "str",
|
33
33
|
"label": "Query",
|
34
|
+
"description": "Query to search emails, e.g. from:me after:2023-01-01",
|
34
35
|
},
|
35
36
|
},
|
36
37
|
}
|
@@ -41,7 +42,7 @@ class Loader(BaseLoader):
|
|
41
42
|
"token_path": "token.json",
|
42
43
|
"use_iterative_parser": False,
|
43
44
|
"max_results": 10,
|
44
|
-
"service": None,
|
45
|
+
# "service": None,
|
45
46
|
"results_per_page": None,
|
46
47
|
}
|
47
48
|
self.init_args_types = {
|
@@ -49,7 +50,7 @@ class Loader(BaseLoader):
|
|
49
50
|
"token_path": "str",
|
50
51
|
"use_iterative_parser": "bool",
|
51
52
|
"max_results": "int",
|
52
|
-
"service": "str",
|
53
|
+
# "service": "str",
|
53
54
|
"results_per_page": "int",
|
54
55
|
}
|
55
56
|
|
@@ -23,12 +23,13 @@ class Loader(BaseLoader):
|
|
23
23
|
self.type = ["web"]
|
24
24
|
self.instructions = [
|
25
25
|
{
|
26
|
-
"
|
27
|
-
"description": "read
|
26
|
+
"sitemap": {
|
27
|
+
"description": "read all web pages from sitemap.xml",
|
28
28
|
"args": {
|
29
29
|
"url": {
|
30
30
|
"type": "str",
|
31
31
|
"label": "URL",
|
32
|
+
"description": "URL to sitemap XML, e.g. https://example.com/sitemap.xml, all pages will be read",
|
32
33
|
},
|
33
34
|
},
|
34
35
|
}
|
@@ -42,6 +43,10 @@ class Loader(BaseLoader):
|
|
42
43
|
"html_to_text": "bool",
|
43
44
|
"limit": "int",
|
44
45
|
}
|
46
|
+
self.init_args_desc = {
|
47
|
+
"html_to_text": "Whether to convert HTML to text",
|
48
|
+
"limit": "Maximum number of concurrent requests",
|
49
|
+
}
|
45
50
|
|
46
51
|
def get(self) -> BaseReader:
|
47
52
|
"""
|
@@ -12,11 +12,12 @@
|
|
12
12
|
import json
|
13
13
|
|
14
14
|
from PySide6.QtCore import Qt
|
15
|
+
from PySide6.QtGui import QIcon
|
15
16
|
from PySide6.QtWidgets import QLabel, QVBoxLayout, QWidget, QCheckBox, QHBoxLayout, QScrollArea, \
|
16
17
|
QSizePolicy
|
17
18
|
|
18
19
|
from pygpt_net.ui.widget.element.group import QVLine, QHLine
|
19
|
-
from pygpt_net.ui.widget.element.labels import HelpLabel, UrlLabel
|
20
|
+
from pygpt_net.ui.widget.element.labels import HelpLabel, UrlLabel, IconLabel
|
20
21
|
from pygpt_net.ui.widget.option.combo import OptionCombo
|
21
22
|
from pygpt_net.ui.widget.option.input import OptionInput
|
22
23
|
from pygpt_net.utils import trans
|
@@ -62,7 +63,18 @@ class WebTab:
|
|
62
63
|
self.window.ui.add_hook("update.tool.indexer.web.loader", self.hook_loader_change)
|
63
64
|
|
64
65
|
self.window.ui.nodes["tool.indexer.web.options.label"] = HelpLabel(trans("tool.indexer.tab.web.source"))
|
65
|
-
|
66
|
+
|
67
|
+
config_label = HelpLabel(trans("tool.indexer.tab.web.cfg"))
|
68
|
+
config_label.setWordWrap(False)
|
69
|
+
|
70
|
+
config_label_layout = QHBoxLayout()
|
71
|
+
config_label_layout.addWidget(IconLabel(QIcon(":/icons/settings_filled.svg")))
|
72
|
+
config_label_layout.addWidget(config_label)
|
73
|
+
config_label_layout.setAlignment(Qt.AlignLeft)
|
74
|
+
|
75
|
+
self.window.ui.nodes["tool.indexer.web.config.label"] = QWidget()
|
76
|
+
self.window.ui.nodes["tool.indexer.web.config.label"].setLayout(config_label_layout)
|
77
|
+
|
66
78
|
self.window.ui.nodes["tool.indexer.web.config.help"] = UrlLabel(
|
67
79
|
trans("tool.indexer.tab.web.help"),
|
68
80
|
"https://pygpt.readthedocs.io/en/latest/configuration.html#data-loaders")
|
@@ -95,7 +107,6 @@ class WebTab:
|
|
95
107
|
|
96
108
|
# config
|
97
109
|
params_layout.addWidget(self.window.ui.nodes["tool.indexer.web.config.label"])
|
98
|
-
self.window.ui.nodes["tool.indexer.web.config.label"].setAlignment(Qt.AlignCenter)
|
99
110
|
inputs, groups = self.window.core.idx.ui.loaders.setup_loader_config()
|
100
111
|
for loader in inputs:
|
101
112
|
for k in inputs[loader]:
|
@@ -10,10 +10,11 @@
|
|
10
10
|
# ================================================== #
|
11
11
|
|
12
12
|
from PySide6.QtCore import Qt
|
13
|
+
from PySide6.QtGui import QIcon
|
13
14
|
from PySide6.QtWidgets import QDialog, QLabel, QHBoxLayout, QVBoxLayout, QPushButton, QScrollArea, QWidget, QSizePolicy
|
14
15
|
|
15
16
|
from pygpt_net.ui.widget.element.group import QHLine
|
16
|
-
from pygpt_net.ui.widget.element.labels import HelpLabel, UrlLabel
|
17
|
+
from pygpt_net.ui.widget.element.labels import HelpLabel, UrlLabel, IconLabel
|
17
18
|
from pygpt_net.ui.widget.option.combo import OptionCombo
|
18
19
|
from pygpt_net.utils import trans
|
19
20
|
from pygpt_net.ui.widget.textarea.url import UrlInput
|
@@ -85,7 +86,18 @@ class UrlDialog(QDialog):
|
|
85
86
|
self.window.ui.add_hook("update.dialog.url.web.loader", self.hook_loader_change)
|
86
87
|
|
87
88
|
self.window.ui.nodes["dialog.url.options.label"] = HelpLabel(trans("tool.indexer.tab.web.source"))
|
88
|
-
|
89
|
+
|
90
|
+
config_label = HelpLabel(trans("tool.indexer.tab.web.cfg"))
|
91
|
+
config_label.setWordWrap(False)
|
92
|
+
|
93
|
+
config_label_layout = QHBoxLayout()
|
94
|
+
config_label_layout.addWidget(IconLabel(QIcon(":/icons/settings_filled.svg")))
|
95
|
+
config_label_layout.addWidget(config_label)
|
96
|
+
config_label_layout.setAlignment(Qt.AlignLeft)
|
97
|
+
|
98
|
+
self.window.ui.nodes["dialog.url.config.label"] = QWidget()
|
99
|
+
self.window.ui.nodes["dialog.url.config.label"].setLayout(config_label_layout)
|
100
|
+
|
89
101
|
self.window.ui.nodes["dialog.url.config.help"] = UrlLabel(
|
90
102
|
trans("tool.indexer.tab.web.help"),
|
91
103
|
"https://pygpt.readthedocs.io/en/latest/configuration.html#data-loaders")
|
@@ -117,7 +129,6 @@ class UrlDialog(QDialog):
|
|
117
129
|
|
118
130
|
# config
|
119
131
|
params_layout.addWidget(self.window.ui.nodes["dialog.url.config.label"])
|
120
|
-
self.window.ui.nodes["dialog.url.config.label"].setAlignment(Qt.AlignCenter)
|
121
132
|
inputs, groups = self.window.core.idx.ui.loaders.setup_loader_config()
|
122
133
|
|
123
134
|
for loader in inputs:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pygpt-net
|
3
|
-
Version: 2.4.
|
3
|
+
Version: 2.4.45
|
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.45** | build: **2024.12.16** | Python: **>=3.10, <3.12**
|
96
96
|
|
97
97
|
> Official website: https://pygpt.net | Documentation: https://pygpt.readthedocs.io
|
98
98
|
>
|
@@ -4028,6 +4028,10 @@ may consume additional tokens that are not displayed in the main window.
|
|
4028
4028
|
|
4029
4029
|
## Recent changes:
|
4030
4030
|
|
4031
|
+
**2.4.45 (2024-12-16)**
|
4032
|
+
|
4033
|
+
- Enhanced web data loaders UI.
|
4034
|
+
|
4031
4035
|
**2.4.44 (2024-12-16)**
|
4032
4036
|
|
4033
4037
|
- Enhanced web data loaders.
|
@@ -1,9 +1,9 @@
|
|
1
|
-
CHANGELOG.md,sha256=
|
2
|
-
README.md,sha256=
|
1
|
+
CHANGELOG.md,sha256=i4WebjD604rHjXAZW919DqCF4E_dlM50lA8V4eWrtHQ,80091
|
2
|
+
README.md,sha256=FyxcDQXhoQ2OWe0TXe01HniGKNO5rLTnO3qwPpHSfds,163356
|
3
3
|
icon.png,sha256=CzcINJaU23a9hNjsDlDNbyuiEvKZ4Wg6DQVYF6SpuRg,13970
|
4
|
-
pygpt_net/CHANGELOG.txt,sha256=
|
4
|
+
pygpt_net/CHANGELOG.txt,sha256=Y89GFqRzvP_drqfT3xChx-IPaZai2rTBW8dWmJzgiIg,78620
|
5
5
|
pygpt_net/LICENSE,sha256=6Ku72-zJ8wO5VIR87UoJ5P_coCVjPghaFL9ZF2jLp7E,1146
|
6
|
-
pygpt_net/__init__.py,sha256=
|
6
|
+
pygpt_net/__init__.py,sha256=WrF45IKMdaraGha65Zgj_JOg7yGyvsrhGK3EGDNN8Bs,1067
|
7
7
|
pygpt_net/app.py,sha256=i02M96uLngAs_XZCS1Mi84vb3Okx8ZZewbTdhCqFolM,16029
|
8
8
|
pygpt_net/config.py,sha256=Qc1FOBtTf3O6A6-6KoqUGtoJ0u8hXQeowvCVbZFwtik,16405
|
9
9
|
pygpt_net/container.py,sha256=BemiVZPpPNIzfB-ZvnZeeBPFu-AcX2c30OqYFylEjJc,4023
|
@@ -72,7 +72,7 @@ pygpt_net/controller/kernel/reply.py,sha256=-5z1QHsXh2PvtZSC18gXc-fdyVVK5WACiEK_
|
|
72
72
|
pygpt_net/controller/kernel/stack.py,sha256=aPLetBoQDKYawQJg8pkAO3tHfJgKwO_NvDOR8F2wJkM,3767
|
73
73
|
pygpt_net/controller/lang/__init__.py,sha256=pTSX0il3xLNGHoh4XAOdIUlbC2f9kIBCzthRDDOjyNY,3287
|
74
74
|
pygpt_net/controller/lang/custom.py,sha256=sA8fC9CqNNbaJ3cywa4xlZXBTJP9QUWJLa1YliKHPRw,5802
|
75
|
-
pygpt_net/controller/lang/mapping.py,sha256=
|
75
|
+
pygpt_net/controller/lang/mapping.py,sha256=1q9tbuTM7j4VOqdxQA_CwqoiLCK3LWtRfQbjRjUe6pc,23560
|
76
76
|
pygpt_net/controller/lang/plugins.py,sha256=JEiOajXB7BfxPPfBkYl82K1_gKpRVcMEPNPwsNAJ6WU,3879
|
77
77
|
pygpt_net/controller/lang/settings.py,sha256=awPEshWbHlOt11Zyg_uQKlbYjvABXrQ7QMHdpu2L9ZI,2634
|
78
78
|
pygpt_net/controller/launcher.py,sha256=om6aEZx31cSiCuShnDHp5Fs-Lj6Rb_pmbOO5fBweEWU,1899
|
@@ -246,9 +246,9 @@ pygpt_net/css_rc.py,sha256=i13kX7irhbYCWZ5yJbcMmnkFp_UfS4PYnvRFSPF7XXo,11349
|
|
246
246
|
pygpt_net/data/audio/click_off.mp3,sha256=aNiRDP1pt-Jy7ija4YKCNFBwvGWbzU460F4pZWZDS90,65201
|
247
247
|
pygpt_net/data/audio/click_on.mp3,sha256=qfdsSnthAEHVXzeyN4LlC0OvXuyW8p7stb7VXtlvZ1k,65201
|
248
248
|
pygpt_net/data/audio/ok.mp3,sha256=LTiV32pEBkpUGBkKkcOdOFB7Eyt_QoP2Nv6c5AaXftk,32256
|
249
|
-
pygpt_net/data/config/config.json,sha256=
|
250
|
-
pygpt_net/data/config/models.json,sha256=
|
251
|
-
pygpt_net/data/config/modes.json,sha256=
|
249
|
+
pygpt_net/data/config/config.json,sha256=IikODdsLIhUO_3CngNX7ru7cUMtEfYLz5PqHwcA746w,19535
|
250
|
+
pygpt_net/data/config/models.json,sha256=waqDijgxxiOTMksaSmsbq5oHRZk7AXyUcgcQuax_aqc,48872
|
251
|
+
pygpt_net/data/config/modes.json,sha256=FdUSFJVScMxp8_-Rwu5d3glGM80Rq3FRXBt9AAHGjFc,1923
|
252
252
|
pygpt_net/data/config/presets/agent_openai.json,sha256=vMTR-soRBiEZrpJJHuFLWyx8a3Ez_BqtqjyXgxCAM_Q,733
|
253
253
|
pygpt_net/data/config/presets/agent_openai_assistant.json,sha256=awJw9lNTGpKML6SJUShVn7lv8AXh0oic7wBeyoN7AYs,798
|
254
254
|
pygpt_net/data/config/presets/agent_planner.json,sha256=a6Rv58Bnm2STNWB0Rw_dGhnsz6Lb3J8_GwsUVZaTIXc,742
|
@@ -274,7 +274,7 @@ pygpt_net/data/css/fix_windows.css,sha256=Mks14Vg25ncbMqZJfAMStrhvZmgHF6kU75ohTW
|
|
274
274
|
pygpt_net/data/css/markdown.css,sha256=yaoJPogZZ_ghbqP8vTXTycwVyD61Ik5_033NpzuUzC0,1122
|
275
275
|
pygpt_net/data/css/markdown.dark.css,sha256=ixAwuT69QLesZttKhO4RAy-QukplZwwfXCZsWLN9TP4,730
|
276
276
|
pygpt_net/data/css/markdown.light.css,sha256=UZdv0jtuFgJ_4bYWsDaDQ4X4AP9tVNLUHBAckC_oD8k,833
|
277
|
-
pygpt_net/data/css/style.css,sha256
|
277
|
+
pygpt_net/data/css/style.css,sha256=-yFk2bpE6fegZs6Fpj_1WB9xrubqxsXK-U8zyaLv7-0,428
|
278
278
|
pygpt_net/data/css/style.dark.css,sha256=5GqBiCiTdofU3AfgbuQEezFPE3iSf_mx3dkU4kAtygQ,729
|
279
279
|
pygpt_net/data/css/style.light.css,sha256=szc-rgR_UoLOTegJerDoL2Rx_l-E6BOYSe956snPE3k,1741
|
280
280
|
pygpt_net/data/css/web-blocks.css,sha256=AhgdeXhdj1rk8jYT9a7I5ftAImNHknOqJCnkzUn8dtI,6175
|
@@ -1484,14 +1484,14 @@ pygpt_net/data/js/katex/fonts/KaTeX_Typewriter-Regular.woff,sha256=4U_tArGrp86fW
|
|
1484
1484
|
pygpt_net/data/js/katex/fonts/KaTeX_Typewriter-Regular.woff2,sha256=cdUX1ngneHz6vfGGkUzDNY7aU543kxlB8rL9SiH2jAs,13568
|
1485
1485
|
pygpt_net/data/js/katex/katex.min.css,sha256=lVaKnUaQNG4pI71WHffQZVALLQF4LMZEk4nOia8U9ow,23532
|
1486
1486
|
pygpt_net/data/js/katex/katex.min.js,sha256=KLASOtKS2x8pUxWVzCDmlWJ4jhuLb0vtrgakbD6gDDo,276757
|
1487
|
-
pygpt_net/data/locale/locale.de.ini,sha256=
|
1488
|
-
pygpt_net/data/locale/locale.en.ini,sha256=
|
1489
|
-
pygpt_net/data/locale/locale.es.ini,sha256=
|
1490
|
-
pygpt_net/data/locale/locale.fr.ini,sha256=
|
1491
|
-
pygpt_net/data/locale/locale.it.ini,sha256=
|
1492
|
-
pygpt_net/data/locale/locale.pl.ini,sha256=
|
1493
|
-
pygpt_net/data/locale/locale.uk.ini,sha256=
|
1494
|
-
pygpt_net/data/locale/locale.zh.ini,sha256=
|
1487
|
+
pygpt_net/data/locale/locale.de.ini,sha256=H_ez3-Yuw6fd2PHeMH8shNcpQHgznhDl2jlJuFHWtRs,62590
|
1488
|
+
pygpt_net/data/locale/locale.en.ini,sha256=vIXVwa4elbaCv9uvjXRNuKDEEgxazNnZE0SXkCDGQsE,75162
|
1489
|
+
pygpt_net/data/locale/locale.es.ini,sha256=rh6A7R5BZyO399Qz0BHUsv7N0U-44yvlBG2X1xcZhFQ,62809
|
1490
|
+
pygpt_net/data/locale/locale.fr.ini,sha256=hTGh4_en056SAVzAicOx-1MhNuwh-KKypZLpgHNDrQA,64854
|
1491
|
+
pygpt_net/data/locale/locale.it.ini,sha256=XafZlQrASzOCmfM1JS7AxxUorkATmi6DPzQQQuw6gm8,61671
|
1492
|
+
pygpt_net/data/locale/locale.pl.ini,sha256=73CIq7xhibjqv5wVVahHlvZCmk2SH1N73VWEdj7BF2s,61744
|
1493
|
+
pygpt_net/data/locale/locale.uk.ini,sha256=xGlJsW2-vwPjvSRmiT0vupC461VI-xV1qrRLOZTArJk,86186
|
1494
|
+
pygpt_net/data/locale/locale.zh.ini,sha256=66xR0yhEcUK-PPj0Sfg1oI5Ze7RKG5_N92axWZKCZzA,63480
|
1495
1495
|
pygpt_net/data/locale/plugin.agent.de.ini,sha256=BY28KpfFvgfVYJzcw2o5ScWnR4uuErIYGyc3NVHlmTw,1714
|
1496
1496
|
pygpt_net/data/locale/plugin.agent.en.ini,sha256=88LkZUpilbV9l4QDbMyIdq_K9sbWt-CQPpavEttPjJU,1489
|
1497
1497
|
pygpt_net/data/locale/plugin.agent.es.ini,sha256=bqaJQne8HPKFVtZ8Ukzo1TSqVW41yhYbGUqW3j2x1p8,1680
|
@@ -1819,7 +1819,7 @@ pygpt_net/provider/core/calendar/db_sqlite/storage.py,sha256=QDclQCQdr4QyRIqjgGX
|
|
1819
1819
|
pygpt_net/provider/core/config/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
|
1820
1820
|
pygpt_net/provider/core/config/base.py,sha256=cbvzbMNqL2XgC-36gGubnU37t94AX7LEw0lecb2Nm80,1365
|
1821
1821
|
pygpt_net/provider/core/config/json_file.py,sha256=P78SRQpNr_nF7TYftYLnHl_DVo7GLPNs4_lvw97sqq8,5122
|
1822
|
-
pygpt_net/provider/core/config/patch.py,sha256=
|
1822
|
+
pygpt_net/provider/core/config/patch.py,sha256=xUa8t3ePfVAui2RsuzjJplUD1yBelBSDHrqJ7LOPIOY,94217
|
1823
1823
|
pygpt_net/provider/core/ctx/__init__.py,sha256=jQQgG9u_ZLsZWXustoc1uvC-abUvj4RBKPAM30-f2Kc,488
|
1824
1824
|
pygpt_net/provider/core/ctx/base.py,sha256=Tfb4MDNe9BXXPU3lbzpdYwJF9S1oa2-mzgu5XT4It9g,3003
|
1825
1825
|
pygpt_net/provider/core/ctx/db_sqlite/__init__.py,sha256=G2pB7kZfREJRLJZmfv3DKTslXC-K7EhNN2sn56q6BFA,11753
|
@@ -1914,7 +1914,7 @@ pygpt_net/provider/loaders/hub/github/repo.py,sha256=y00tCQ473i9nE1yedVXtGxwsBp1
|
|
1914
1914
|
pygpt_net/provider/loaders/hub/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1915
1915
|
pygpt_net/provider/loaders/hub/google/calendar.py,sha256=G2Xvbch9Ik9Ntx54iFqrCd5rJoTg9hYw9kG0s08qyJI,2658
|
1916
1916
|
pygpt_net/provider/loaders/hub/google/docs.py,sha256=CFAcv95qmVB6WxW_F0oRLuRQUvXfb3CEZeuhQQMyDDM,5370
|
1917
|
-
pygpt_net/provider/loaders/hub/google/gmail.py,sha256=
|
1917
|
+
pygpt_net/provider/loaders/hub/google/gmail.py,sha256=Vudf9Lgq2SOkcNiJSRI42BqmTDN6k8Tk0_1g6Eh2CEo,6781
|
1918
1918
|
pygpt_net/provider/loaders/hub/google/keep.py,sha256=il_MW5IG-Em2EljS5eICoTIIKHE1HsvP1MCCX7DiaPI,1633
|
1919
1919
|
pygpt_net/provider/loaders/hub/google/sheets.py,sha256=gGKqwnZgbfp-sTHQQDNiZWIa6Z68h3w61fRmdcaJJ_s,5282
|
1920
1920
|
pygpt_net/provider/loaders/hub/image_vision/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -1935,18 +1935,18 @@ pygpt_net/provider/loaders/hub/yt/utils.py,sha256=uDEaDQJGrcyMBeNeazJmXVVDIJOyPw
|
|
1935
1935
|
pygpt_net/provider/loaders/web_bitbucket.py,sha256=FwzBTfP0pJQD8pn0FurpOOwqMS-d-mEUQKt2gxC6pWc,3626
|
1936
1936
|
pygpt_net/provider/loaders/web_chatgpt_retrieval.py,sha256=Lh0cWcbx5XFMiLHIpB1qrKvnzYIWSaR59w0_m-2ZpYQ,2580
|
1937
1937
|
pygpt_net/provider/loaders/web_database.py,sha256=zuQLI__a5CO7f-5fwSWZ1ca7bTZWd6D1AyMhG7aOg2A,3293
|
1938
|
-
pygpt_net/provider/loaders/web_github_issues.py,sha256=
|
1939
|
-
pygpt_net/provider/loaders/web_github_repo.py,sha256=
|
1938
|
+
pygpt_net/provider/loaders/web_github_issues.py,sha256=l4DAz0PMw0uAgiI6F7NL-YMqDSetqgVjRrEBx9zjWEw,5009
|
1939
|
+
pygpt_net/provider/loaders/web_github_repo.py,sha256=M67-8ZgVcaJlE5_CNkslnT7vUxwewuSyODkIDOxzZzc,5002
|
1940
1940
|
pygpt_net/provider/loaders/web_google_calendar.py,sha256=mHVQ3F9VC2y8brjyh_BLk9_7Mth3RVy2iYWeFzwm0JE,3366
|
1941
1941
|
pygpt_net/provider/loaders/web_google_docs.py,sha256=HS0g2ibhY-6jWldh7hxl7ymxYCfsE4uY_KLN3sAJyiM,2821
|
1942
1942
|
pygpt_net/provider/loaders/web_google_drive.py,sha256=UPM2jG2Cp6K9oj2J7df-1CEsbRxfqx1yTT63DjDqtN4,4244
|
1943
|
-
pygpt_net/provider/loaders/web_google_gmail.py,sha256=
|
1943
|
+
pygpt_net/provider/loaders/web_google_gmail.py,sha256=80O-UHbPJaLAlIrj6UVKe7bnIdCMU0gCKXHD5MNjkEE,2860
|
1944
1944
|
pygpt_net/provider/loaders/web_google_keep.py,sha256=kcD5tQa66lCxOoYRR0mwPqhCwBMZ3JtEgKV8l1mCwUQ,2698
|
1945
1945
|
pygpt_net/provider/loaders/web_google_sheets.py,sha256=iZcVFi6xlmJ8axj-FKUYQu5voS9PyB8x3jyh6h-hgL8,2891
|
1946
1946
|
pygpt_net/provider/loaders/web_microsoft_onedrive.py,sha256=HGD2jRMPlqcC-cGJil3kgPE_Ivz3MJFgvuX7yHKhIXE,4924
|
1947
1947
|
pygpt_net/provider/loaders/web_page.py,sha256=PfUF6WaOZO-YhHSCW0wtc96hNyIkq81Ma8JQUEqxqxA,1719
|
1948
|
-
pygpt_net/provider/loaders/web_rss.py,sha256=
|
1949
|
-
pygpt_net/provider/loaders/web_sitemap.py,sha256=
|
1948
|
+
pygpt_net/provider/loaders/web_rss.py,sha256=yV7c_AB5fXwCyauvsMj7pGQP0gPx-HikblSLSyH75GE,1725
|
1949
|
+
pygpt_net/provider/loaders/web_sitemap.py,sha256=zFIW3abS93ZzsyVasq24MHAiy2ZtrOro-xFl3oaCfyQ,2205
|
1950
1950
|
pygpt_net/provider/loaders/web_twitter.py,sha256=geW_fHMfl-Uh9TmoE3NAk8Ifk0h1VBxMreP7EgKbxhA,2954
|
1951
1951
|
pygpt_net/provider/loaders/web_yt.py,sha256=1j68SbIS6h7Da3pcSPvDnBw5K_jjX3huT39WLQSmArY,2739
|
1952
1952
|
pygpt_net/provider/vector_stores/__init__.py,sha256=ep6B8xlMHcvQTq48Z_4Tr2csO4xEJ4Lqr0Pu--_eTHk,8338
|
@@ -1984,7 +1984,7 @@ pygpt_net/tools/indexer/ui/browse.py,sha256=N27NI28VejG52UfZr0FJi0lsjYkmRh9-JpOo
|
|
1984
1984
|
pygpt_net/tools/indexer/ui/ctx.py,sha256=HkJpBOL0MoY30dZXpsx6Em_hVo8TETxd5gyXxOtbL7U,4355
|
1985
1985
|
pygpt_net/tools/indexer/ui/dialogs.py,sha256=u59bNO9lwBHSu3-jVK2RUPHYNRd99Wo3VgKcLm4cszA,7985
|
1986
1986
|
pygpt_net/tools/indexer/ui/files.py,sha256=Y9xV6DO3k5F1nGfO-IGHN3jY6QrihUyUgj53ino04aQ,4034
|
1987
|
-
pygpt_net/tools/indexer/ui/web.py,sha256=
|
1987
|
+
pygpt_net/tools/indexer/ui/web.py,sha256=dVCtcgPyv6-lEnyLKOAW5zw7IJeSNHwnNskVpMGa-go,8668
|
1988
1988
|
pygpt_net/tools/indexer/ui/widgets.py,sha256=wEFh9UyzFvsmYeJZtz6yDMk27THeDCT9Fq9DajFpnm4,3562
|
1989
1989
|
pygpt_net/tools/media_player/__init__.py,sha256=S84y_Yig4Rgn-xZzgWqZ61MRfsdefDgzqwrxfLfRS9w,6104
|
1990
1990
|
pygpt_net/tools/media_player/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -2101,7 +2101,7 @@ pygpt_net/ui/widget/dialog/settings.py,sha256=fKzbme2tdxzTSiQMNnCEgyD3lwCzFjLi85
|
|
2101
2101
|
pygpt_net/ui/widget/dialog/settings_plugin.py,sha256=Kf1ZK_RY9CAnfeuzPoQ4wgsFb2yQl7X-VKzsYETA55o,1696
|
2102
2102
|
pygpt_net/ui/widget/dialog/snap.py,sha256=ESGmSSpExvf6WJ_EwiHJ9QK-t0NccfWeym5SSJNfi8I,2724
|
2103
2103
|
pygpt_net/ui/widget/dialog/update.py,sha256=0z4motDKCchD8whFHGZJui9omM_dmpviqi3g5yjy6p0,6789
|
2104
|
-
pygpt_net/ui/widget/dialog/url.py,sha256=
|
2104
|
+
pygpt_net/ui/widget/dialog/url.py,sha256=7I17Pp9P2c3G1pODEY5dum_AF0nFnu2BMfbWTgEES-M,8765
|
2105
2105
|
pygpt_net/ui/widget/dialog/workdir.py,sha256=D-C3YIt-wCoI-Eh7z--Z4R6P1UvtpkxeiaVcI-ycFck,1523
|
2106
2106
|
pygpt_net/ui/widget/draw/__init__.py,sha256=oSYKtNEGNL0vDjn3wCgdnBAbxUqNGIEIf-75I2DIn7Q,488
|
2107
2107
|
pygpt_net/ui/widget/draw/painter.py,sha256=gxtnW--roiXYwcERVromle2zfdtf0vHdBWS5zZVuWhY,10903
|
@@ -2173,8 +2173,8 @@ pygpt_net/ui/widget/textarea/web.py,sha256=9FoL02QY6mOxtc4t4fe8X7fVDIdPn9Sb_fwsv
|
|
2173
2173
|
pygpt_net/ui/widget/vision/__init__.py,sha256=8HT4tQFqQogEEpGYTv2RplKBthlsFKcl5egnv4lzzEw,488
|
2174
2174
|
pygpt_net/ui/widget/vision/camera.py,sha256=T8b5cmK6uhf_WSSxzPt_Qod8JgMnst6q8sQqRvgQiSA,2584
|
2175
2175
|
pygpt_net/utils.py,sha256=ES35jv1OV2etVIQcArpI-FSdfH2SMI86Gdu-V-MDbRQ,6132
|
2176
|
-
pygpt_net-2.4.
|
2177
|
-
pygpt_net-2.4.
|
2178
|
-
pygpt_net-2.4.
|
2179
|
-
pygpt_net-2.4.
|
2180
|
-
pygpt_net-2.4.
|
2176
|
+
pygpt_net-2.4.45.dist-info/LICENSE,sha256=GLKQTnJOPK4dDIWfkAIM4GwOxKJXi5zcMGt7FjLR1xk,1126
|
2177
|
+
pygpt_net-2.4.45.dist-info/METADATA,sha256=ZtzXke6aXvivfa-4yQTHRIjWmHWSGBOTlmxRKGCpZhc,168158
|
2178
|
+
pygpt_net-2.4.45.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
2179
|
+
pygpt_net-2.4.45.dist-info/entry_points.txt,sha256=qvpII6UHIt8XfokmQWnCYQrTgty8FeJ9hJvOuUFCN-8,43
|
2180
|
+
pygpt_net-2.4.45.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|