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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. CHANGELOG.md +8 -0
  2. README.md +135 -70
  3. pygpt_net/CHANGELOG.txt +8 -0
  4. pygpt_net/__init__.py +3 -3
  5. pygpt_net/app.py +3 -1
  6. pygpt_net/controller/audio/__init__.py +2 -2
  7. pygpt_net/controller/camera.py +1 -10
  8. pygpt_net/controller/chat/audio.py +2 -2
  9. pygpt_net/controller/config/placeholder.py +15 -1
  10. pygpt_net/controller/ui/mode.py +16 -21
  11. pygpt_net/core/audio/__init__.py +4 -1
  12. pygpt_net/core/audio/whisper.py +37 -0
  13. pygpt_net/core/bridge/worker.py +2 -2
  14. pygpt_net/core/debug/events.py +22 -10
  15. pygpt_net/core/debug/tabs.py +6 -3
  16. pygpt_net/core/history.py +3 -2
  17. pygpt_net/core/idx/__init__.py +16 -4
  18. pygpt_net/core/idx/chat.py +15 -5
  19. pygpt_net/core/idx/indexing.py +24 -8
  20. pygpt_net/core/installer.py +2 -4
  21. pygpt_net/core/models.py +62 -17
  22. pygpt_net/core/modes.py +11 -13
  23. pygpt_net/core/notepad.py +4 -4
  24. pygpt_net/core/plugins.py +27 -16
  25. pygpt_net/core/presets.py +20 -9
  26. pygpt_net/core/profile.py +11 -3
  27. pygpt_net/core/render/web/parser.py +3 -1
  28. pygpt_net/core/settings.py +5 -5
  29. pygpt_net/core/tabs/tab.py +10 -2
  30. pygpt_net/core/tokens.py +8 -6
  31. pygpt_net/core/web/__init__.py +105 -0
  32. pygpt_net/core/{web.py → web/helpers.py} +93 -67
  33. pygpt_net/data/config/config.json +3 -3
  34. pygpt_net/data/config/models.json +3 -3
  35. pygpt_net/data/config/modes.json +3 -3
  36. pygpt_net/data/locale/locale.en.ini +1 -0
  37. pygpt_net/data/locale/plugin.cmd_web.en.ini +2 -0
  38. pygpt_net/data/locale/plugin.mailer.en.ini +21 -0
  39. pygpt_net/item/ctx.py +13 -2
  40. pygpt_net/plugin/agent/__init__.py +7 -2
  41. pygpt_net/plugin/audio_output/__init__.py +6 -1
  42. pygpt_net/plugin/base/plugin.py +58 -26
  43. pygpt_net/plugin/base/worker.py +20 -17
  44. pygpt_net/plugin/cmd_history/config.py +2 -2
  45. pygpt_net/plugin/cmd_web/__init__.py +3 -4
  46. pygpt_net/plugin/cmd_web/config.py +71 -3
  47. pygpt_net/plugin/cmd_web/websearch.py +20 -12
  48. pygpt_net/plugin/cmd_web/worker.py +67 -4
  49. pygpt_net/plugin/idx_llama_index/config.py +3 -3
  50. pygpt_net/plugin/mailer/__init__.py +123 -0
  51. pygpt_net/plugin/mailer/config.py +149 -0
  52. pygpt_net/plugin/mailer/runner.py +285 -0
  53. pygpt_net/plugin/mailer/worker.py +123 -0
  54. pygpt_net/provider/agents/base.py +5 -2
  55. pygpt_net/provider/agents/openai.py +4 -2
  56. pygpt_net/provider/agents/openai_assistant.py +4 -2
  57. pygpt_net/provider/agents/planner.py +4 -2
  58. pygpt_net/provider/agents/react.py +4 -2
  59. pygpt_net/provider/audio_output/openai_tts.py +5 -11
  60. pygpt_net/provider/core/assistant/base.py +5 -3
  61. pygpt_net/provider/core/assistant/json_file.py +8 -5
  62. pygpt_net/provider/core/assistant_file/base.py +4 -3
  63. pygpt_net/provider/core/assistant_file/db_sqlite/__init__.py +4 -3
  64. pygpt_net/provider/core/assistant_file/db_sqlite/storage.py +3 -2
  65. pygpt_net/provider/core/assistant_store/base.py +6 -4
  66. pygpt_net/provider/core/assistant_store/db_sqlite/__init__.py +5 -4
  67. pygpt_net/provider/core/assistant_store/db_sqlite/storage.py +5 -3
  68. pygpt_net/provider/core/attachment/base.py +5 -3
  69. pygpt_net/provider/core/attachment/json_file.py +4 -3
  70. pygpt_net/provider/core/calendar/base.py +5 -3
  71. pygpt_net/provider/core/calendar/db_sqlite/__init__.py +6 -5
  72. pygpt_net/provider/core/calendar/db_sqlite/storage.py +5 -4
  73. pygpt_net/provider/core/config/base.py +8 -6
  74. pygpt_net/provider/core/config/json_file.py +9 -7
  75. pygpt_net/provider/core/ctx/base.py +27 -25
  76. pygpt_net/provider/core/ctx/db_sqlite/__init__.py +51 -35
  77. pygpt_net/provider/core/ctx/db_sqlite/storage.py +42 -31
  78. pygpt_net/provider/core/ctx/db_sqlite/utils.py +11 -9
  79. pygpt_net/provider/core/index/base.py +129 -23
  80. pygpt_net/provider/core/index/db_sqlite/__init__.py +130 -23
  81. pygpt_net/provider/core/index/db_sqlite/storage.py +130 -23
  82. pygpt_net/provider/core/index/db_sqlite/utils.py +4 -2
  83. pygpt_net/provider/core/mode/base.py +5 -3
  84. pygpt_net/provider/core/mode/json_file.py +7 -6
  85. pygpt_net/provider/core/model/base.py +6 -4
  86. pygpt_net/provider/core/model/json_file.py +9 -7
  87. pygpt_net/provider/core/notepad/base.py +5 -3
  88. pygpt_net/provider/core/notepad/db_sqlite/__init__.py +5 -4
  89. pygpt_net/provider/core/notepad/db_sqlite/storage.py +4 -3
  90. pygpt_net/provider/core/plugin_preset/base.py +4 -2
  91. pygpt_net/provider/core/plugin_preset/json_file.py +5 -3
  92. pygpt_net/provider/core/preset/base.py +6 -4
  93. pygpt_net/provider/core/preset/json_file.py +9 -9
  94. pygpt_net/provider/core/prompt/base.py +6 -3
  95. pygpt_net/provider/core/prompt/json_file.py +11 -6
  96. pygpt_net/provider/gpt/assistants.py +15 -6
  97. pygpt_net/provider/gpt/audio.py +5 -5
  98. pygpt_net/provider/gpt/chat.py +7 -5
  99. pygpt_net/provider/gpt/completion.py +8 -4
  100. pygpt_net/provider/gpt/image.py +3 -3
  101. pygpt_net/provider/gpt/store.py +46 -12
  102. pygpt_net/provider/gpt/vision.py +16 -11
  103. pygpt_net/provider/llms/anthropic.py +7 -2
  104. pygpt_net/provider/llms/azure_openai.py +26 -5
  105. pygpt_net/provider/llms/base.py +47 -9
  106. pygpt_net/provider/llms/google.py +7 -2
  107. pygpt_net/provider/llms/hugging_face.py +13 -3
  108. pygpt_net/provider/llms/hugging_face_api.py +18 -4
  109. pygpt_net/provider/llms/local.py +7 -2
  110. pygpt_net/provider/llms/ollama.py +30 -6
  111. pygpt_net/provider/llms/openai.py +32 -6
  112. pygpt_net/provider/vector_stores/__init__.py +45 -14
  113. pygpt_net/provider/vector_stores/base.py +35 -8
  114. pygpt_net/provider/vector_stores/chroma.py +13 -3
  115. pygpt_net/provider/vector_stores/ctx_attachment.py +31 -12
  116. pygpt_net/provider/vector_stores/elasticsearch.py +12 -3
  117. pygpt_net/provider/vector_stores/pinecode.py +12 -3
  118. pygpt_net/provider/vector_stores/redis.py +12 -3
  119. pygpt_net/provider/vector_stores/simple.py +12 -3
  120. pygpt_net/provider/vector_stores/temp.py +16 -4
  121. pygpt_net/provider/web/base.py +10 -3
  122. pygpt_net/provider/web/google_custom_search.py +9 -3
  123. pygpt_net/provider/web/microsoft_bing.py +9 -3
  124. pygpt_net/tools/__init__.py +13 -5
  125. pygpt_net/tools/audio_transcriber/__init__.py +4 -3
  126. pygpt_net/tools/base.py +15 -8
  127. pygpt_net/tools/code_interpreter/__init__.py +4 -3
  128. pygpt_net/tools/html_canvas/__init__.py +4 -3
  129. pygpt_net/tools/image_viewer/__init__.py +10 -4
  130. pygpt_net/tools/indexer/__init__.py +8 -7
  131. pygpt_net/tools/media_player/__init__.py +4 -3
  132. pygpt_net/tools/text_editor/__init__.py +36 -10
  133. pygpt_net/ui/layout/chat/output.py +2 -2
  134. pygpt_net/ui/menu/audio.py +12 -1
  135. {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.42.dist-info}/METADATA +136 -71
  136. {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.42.dist-info}/RECORD +139 -132
  137. {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.42.dist-info}/LICENSE +0 -0
  138. {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.42.dist-info}/WHEEL +0 -0
  139. {pygpt_net-2.4.41.dist-info → pygpt_net-2.4.42.dist-info}/entry_points.txt +0 -0
@@ -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.08.20 19:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import os
13
13
  import shutil
14
+ from typing import Optional
14
15
 
15
16
  from llama_index.core.indices.base import BaseIndex
16
17
  from llama_index.core.indices.service_context import ServiceContext
@@ -31,7 +32,12 @@ class BaseStore:
31
32
  self.prefix = "" # prefix for index directory
32
33
  self.indexes = {}
33
34
 
34
- def index_from_store(self, vector_store, storage_context: StorageContext, service_context: ServiceContext = None):
35
+ def index_from_store(
36
+ self,
37
+ vector_store,
38
+ storage_context: StorageContext,
39
+ service_context: Optional[ServiceContext] = None
40
+ ):
35
41
  """
36
42
  Get index instance
37
43
 
@@ -74,7 +80,10 @@ class BaseStore:
74
80
  self.prefix + id,
75
81
  )
76
82
 
77
- def exists(self, id: str = None) -> bool:
83
+ def exists(
84
+ self,
85
+ id: Optional[str] = None
86
+ ) -> bool:
78
87
  """
79
88
  Check if index with id exists
80
89
 
@@ -94,7 +103,11 @@ class BaseStore:
94
103
  """
95
104
  pass
96
105
 
97
- def get(self, id: str, service_context: ServiceContext = None) -> BaseIndex:
106
+ def get(
107
+ self,
108
+ id: str,
109
+ service_context: Optional[ServiceContext] = None
110
+ ) -> BaseIndex:
98
111
  """
99
112
  Get index instance
100
113
 
@@ -104,7 +117,11 @@ class BaseStore:
104
117
  """
105
118
  pass
106
119
 
107
- def store(self, id: str, index: BaseIndex = None):
120
+ def store(
121
+ self,
122
+ id: str,
123
+ index: Optional[BaseIndex] = None
124
+ ):
108
125
  """
109
126
  Store/persist index
110
127
 
@@ -113,7 +130,10 @@ class BaseStore:
113
130
  """
114
131
  pass
115
132
 
116
- def remove(self, id: str) -> bool:
133
+ def remove(
134
+ self,
135
+ id: str
136
+ ) -> bool:
117
137
  """
118
138
  Clear index
119
139
 
@@ -127,7 +147,10 @@ class BaseStore:
127
147
  shutil.rmtree(path)
128
148
  return True
129
149
 
130
- def truncate(self, id: str) -> bool:
150
+ def truncate(
151
+ self,
152
+ id: str
153
+ ) -> bool:
131
154
  """
132
155
  Truncate index
133
156
 
@@ -136,7 +159,11 @@ class BaseStore:
136
159
  """
137
160
  return self.remove(id)
138
161
 
139
- def remove_document(self, id: str, doc_id: str) -> bool:
162
+ def remove_document(
163
+ self,
164
+ id: str,
165
+ doc_id: str
166
+ ) -> bool:
140
167
  """
141
168
  Remove document from index
142
169
 
@@ -6,10 +6,12 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.14 05:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import os.path
13
+ from typing import Optional
14
+
13
15
  import chromadb
14
16
  from chromadb.config import Settings
15
17
 
@@ -64,7 +66,11 @@ class ChromaProvider(BaseStore):
64
66
  index=index,
65
67
  )
66
68
 
67
- def get(self, id: str, service_context: ServiceContext = None) -> BaseIndex:
69
+ def get(
70
+ self,
71
+ id: str,
72
+ service_context: Optional[ServiceContext] = None
73
+ ) -> BaseIndex:
68
74
  """
69
75
  Get index
70
76
 
@@ -86,7 +92,11 @@ class ChromaProvider(BaseStore):
86
92
  self.indexes[id] = self.index_from_store(vector_store, storage_context, service_context)
87
93
  return self.indexes[id]
88
94
 
89
- def store(self, id: str, index: BaseIndex = None):
95
+ def store(
96
+ self,
97
+ id: str,
98
+ index: Optional[BaseIndex] = None
99
+ ):
90
100
  """
91
101
  Store index
92
102
 
@@ -6,10 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.23 00:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import os.path
13
+ from typing import Optional
13
14
 
14
15
  from llama_index.core import StorageContext, load_index_from_storage
15
16
  from llama_index.core.indices.base import BaseIndex
@@ -32,7 +33,7 @@ class CtxAttachmentProvider(BaseStore):
32
33
  self.id = "CtxAttachmentVectorStore"
33
34
  self.index = None
34
35
 
35
- def get_path(self) -> str:
36
+ def get_path(self, id: str) -> str:
36
37
  """
37
38
  Get database path
38
39
 
@@ -40,7 +41,10 @@ class CtxAttachmentProvider(BaseStore):
40
41
  """
41
42
  return self.path
42
43
 
43
- def exists(self) -> bool:
44
+ def exists(
45
+ self,
46
+ id: Optional[str] = None
47
+ ) -> bool:
44
48
  """
45
49
  Check if index exists
46
50
 
@@ -53,27 +57,37 @@ class CtxAttachmentProvider(BaseStore):
53
57
  return True
54
58
  return False
55
59
 
56
- def create(self):
57
- """Create empty index"""
58
- path = self.get_path()
60
+ def create(self, id: str):
61
+ """
62
+ Create empty index
63
+
64
+ :param id: index name (not used)
65
+ """
66
+ path = self.get_path(id)
59
67
  if not os.path.exists(path):
60
68
  index = self.index_from_empty() # create empty index
61
69
  self.store(
70
+ id=id,
62
71
  index=index,
63
72
  )
64
73
  else:
65
74
  self.index = self.index_from_empty()
66
75
 
67
- def get(self, service_context: ServiceContext = None) -> BaseIndex:
76
+ def get(
77
+ self,
78
+ id: str,
79
+ service_context: Optional[ServiceContext] = None
80
+ ) -> BaseIndex:
68
81
  """
69
82
  Get index
70
83
 
84
+ :param id: index name (not used)
71
85
  :param service_context: Service context
72
86
  :return: index instance
73
87
  """
74
88
  if not self.exists():
75
- self.create()
76
- path = self.get_path()
89
+ self.create(id)
90
+ path = self.get_path(id)
77
91
  storage_context = StorageContext.from_defaults(
78
92
  persist_dir=path,
79
93
  )
@@ -84,13 +98,18 @@ class CtxAttachmentProvider(BaseStore):
84
98
 
85
99
  return self.index
86
100
 
87
- def store(self, index: BaseIndex = None):
101
+ def store(
102
+ self,
103
+ id: str,
104
+ index: Optional[BaseIndex] = None
105
+ ):
88
106
  """
89
107
  Store index
90
108
 
109
+ :param id: index name (not used)
91
110
  :param index: index instance
92
111
  """
93
- path = self.get_path()
112
+ path = self.get_path(id)
94
113
  index.storage_context.persist(
95
114
  persist_dir=path,
96
115
  )
@@ -99,6 +118,6 @@ class CtxAttachmentProvider(BaseStore):
99
118
  def clean(self):
100
119
  """Clean index"""
101
120
  self.index = None
102
- path = self.get_path()
121
+ path = self.get_path("")
103
122
  if os.path.exists(path):
104
123
  os.remove(path)
@@ -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.11.14 05:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import datetime
13
13
  import os.path
14
+ from typing import Optional
14
15
 
15
16
  from llama_index.core.indices.base import BaseIndex
16
17
  from llama_index.core.indices.service_context import ServiceContext
@@ -67,7 +68,11 @@ class ElasticsearchProvider(BaseStore):
67
68
  **additional_args
68
69
  )
69
70
 
70
- def get(self, id: str, service_context: ServiceContext = None) -> BaseIndex:
71
+ def get(
72
+ self,
73
+ id: str,
74
+ service_context: Optional[ServiceContext] = None
75
+ ) -> BaseIndex:
71
76
  """
72
77
  Get index
73
78
 
@@ -84,7 +89,11 @@ class ElasticsearchProvider(BaseStore):
84
89
  self.indexes[id] = self.index_from_store(vector_store, storage_context, service_context)
85
90
  return self.indexes[id]
86
91
 
87
- def store(self, id: str, index: BaseIndex = None):
92
+ def store(
93
+ self,
94
+ id: str,
95
+ index: Optional[BaseIndex] = None
96
+ ):
88
97
  """
89
98
  Store index
90
99
 
@@ -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.11.14 05:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import datetime
13
13
  import os.path
14
+ from typing import Optional
14
15
 
15
16
  from pinecone import Pinecone, ServerlessSpec
16
17
 
@@ -122,7 +123,11 @@ class PinecodeProvider(BaseStore):
122
123
  pinecone_index=pinecone_index,
123
124
  )
124
125
 
125
- def get(self, id: str, service_context: ServiceContext = None) -> BaseIndex:
126
+ def get(
127
+ self,
128
+ id: str,
129
+ service_context: Optional[ServiceContext] = None
130
+ ) -> BaseIndex:
126
131
  """
127
132
  Get index
128
133
 
@@ -139,7 +144,11 @@ class PinecodeProvider(BaseStore):
139
144
  self.indexes[id] = self.index_from_store(vector_store, storage_context, service_context)
140
145
  return self.indexes[id]
141
146
 
142
- def store(self, id: str, index: BaseIndex = None):
147
+ def store(
148
+ self,
149
+ id: str,
150
+ index: Optional[BaseIndex] = None
151
+ ):
143
152
  """
144
153
  Store index
145
154
 
@@ -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.11.14 05:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import datetime
13
13
  import os.path
14
+ from typing import Optional
14
15
 
15
16
  from llama_index.core import StorageContext
16
17
  from llama_index.core.indices.base import BaseIndex
@@ -67,7 +68,11 @@ class RedisProvider(BaseStore):
67
68
  **additional_args
68
69
  )
69
70
 
70
- def get(self, id: str, service_context: ServiceContext = None) -> BaseIndex:
71
+ def get(
72
+ self,
73
+ id: str,
74
+ service_context: Optional[ServiceContext] = None
75
+ ) -> BaseIndex:
71
76
  """
72
77
  Get index
73
78
 
@@ -84,7 +89,11 @@ class RedisProvider(BaseStore):
84
89
  self.indexes[id] = self.index_from_store(vector_store, storage_context, service_context)
85
90
  return self.indexes[id]
86
91
 
87
- def store(self, id: str, index: BaseIndex = None):
92
+ def store(
93
+ self,
94
+ id: str,
95
+ index: Optional[BaseIndex] = None
96
+ ):
88
97
  """
89
98
  Store index
90
99
 
@@ -6,10 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.14 05:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import os.path
13
+ from typing import Optional
13
14
 
14
15
  from llama_index.core import StorageContext, load_index_from_storage
15
16
  from llama_index.core.indices.base import BaseIndex
@@ -46,7 +47,11 @@ class SimpleProvider(BaseStore):
46
47
  index=index,
47
48
  )
48
49
 
49
- def get(self, id: str, service_context: ServiceContext = None) -> BaseIndex:
50
+ def get(
51
+ self,
52
+ id: str,
53
+ service_context: Optional[ServiceContext] = None
54
+ ) -> BaseIndex:
50
55
  """
51
56
  Get index
52
57
 
@@ -66,7 +71,11 @@ class SimpleProvider(BaseStore):
66
71
  )
67
72
  return self.indexes[id]
68
73
 
69
- def store(self, id: str, index: BaseIndex = None):
74
+ def store(
75
+ self,
76
+ id: str,
77
+ index: Optional[BaseIndex] = None
78
+ ):
70
79
  """
71
80
  Store index
72
81
 
@@ -6,10 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.14 05:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import os.path
13
+ from typing import Optional
13
14
 
14
15
  from llama_index.core import StorageContext, load_index_from_storage
15
16
  from llama_index.core.indices.base import BaseIndex
@@ -64,7 +65,10 @@ class TempProvider(BaseStore):
64
65
  )
65
66
  return path
66
67
 
67
- def exists(self, id: str = None) -> bool:
68
+ def exists(
69
+ self,
70
+ id: Optional[str] = None
71
+ ) -> bool:
68
72
  """
69
73
  Check if index with id exists
70
74
 
@@ -100,7 +104,11 @@ class TempProvider(BaseStore):
100
104
  else:
101
105
  self.indexes[id] = self.index_from_empty()
102
106
 
103
- def get(self, id: str, service_context: ServiceContext = None) -> BaseIndex:
107
+ def get(
108
+ self,
109
+ id: str,
110
+ service_context: Optional[ServiceContext] = None
111
+ ) -> BaseIndex:
104
112
  """
105
113
  Get index
106
114
 
@@ -123,7 +131,11 @@ class TempProvider(BaseStore):
123
131
 
124
132
  return self.indexes[id]
125
133
 
126
- def store(self, id: str, index: BaseIndex = None):
134
+ def store(
135
+ self,
136
+ id: str,
137
+ index: Optional[BaseIndex] = None
138
+ ):
127
139
  """
128
140
  Store index
129
141
 
@@ -6,9 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.18 21:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import List, Dict
13
+
12
14
  from pygpt_net.plugin.base.plugin import BasePlugin
13
15
 
14
16
 
@@ -45,7 +47,12 @@ class BaseProvider:
45
47
  """Initialize provider options (for plugin settings)"""
46
48
  pass
47
49
 
48
- def search(self, query, limit: int = 10, offset: int = 0):
50
+ def search(
51
+ self,
52
+ query,
53
+ limit: int = 10,
54
+ offset: int = 0
55
+ ) -> List[str]:
49
56
  """
50
57
  Execute search query and return list of urls
51
58
 
@@ -56,7 +63,7 @@ class BaseProvider:
56
63
  """
57
64
  pass
58
65
 
59
- def is_configured(self, cmds: list) -> bool:
66
+ def is_configured(self, cmds: List[Dict]) -> bool:
60
67
  """
61
68
  Check if provider is configured
62
69
 
@@ -6,10 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.02.25 01:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import json
13
+ from typing import List, Dict
13
14
  from urllib.parse import quote
14
15
  from .base import BaseProvider
15
16
 
@@ -63,7 +64,12 @@ class GoogleCustomSearch(BaseProvider):
63
64
  urls=url_cx,
64
65
  )
65
66
 
66
- def search(self, query: str, limit: int = 10, offset: int = 0) -> list:
67
+ def search(
68
+ self,
69
+ query: str,
70
+ limit: int = 10,
71
+ offset: int = 0
72
+ ) -> List[str]:
67
73
  """
68
74
  Execute search query and return list of urls
69
75
 
@@ -103,7 +109,7 @@ class GoogleCustomSearch(BaseProvider):
103
109
 
104
110
  return urls
105
111
 
106
- def is_configured(self, cmds: list) -> bool:
112
+ def is_configured(self, cmds: List[Dict]) -> bool:
107
113
  """
108
114
  Check if provider is configured (required API keys, etc.)
109
115
 
@@ -6,10 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.02.25 01:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import json
13
+ from typing import List, Dict
13
14
  from urllib.parse import quote
14
15
 
15
16
  import requests
@@ -60,7 +61,12 @@ class MicrosoftBingSearch(BaseProvider):
60
61
  tab="microsoft_bing",
61
62
  )
62
63
 
63
- def search(self, query: str, limit: int = 10, offset: int = 0) -> list:
64
+ def search(
65
+ self,
66
+ query: str,
67
+ limit: int = 10,
68
+ offset: int = 0
69
+ ) -> List[str]:
64
70
  """
65
71
  Execute search query and return list of urls
66
72
 
@@ -97,7 +103,7 @@ class MicrosoftBingSearch(BaseProvider):
97
103
  print('Error:', response.status_code, response.text)
98
104
  return urls
99
105
 
100
- def is_configured(self, cmds: list) -> bool:
106
+ def is_configured(self, cmds: List[Dict]) -> bool:
101
107
  """
102
108
  Check if provider is configured (required API keys, etc.)
103
109
 
@@ -6,9 +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.12.09 23:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
+ from typing import Dict, Optional
13
+
14
+ from PySide6.QtGui import QAction
15
+
12
16
  from pygpt_net.ui.widget.dialog.base import BaseDialog
13
17
  from .base import BaseTool
14
18
 
@@ -42,7 +46,7 @@ class Tools:
42
46
  if id in self.tools:
43
47
  return self.tools[id]
44
48
 
45
- def get_all(self) -> dict:
49
+ def get_all(self) -> Dict[str, BaseTool]:
46
50
  """
47
51
  Get all tools
48
52
 
@@ -83,7 +87,7 @@ class Tools:
83
87
  for id in self.tools:
84
88
  self.tools[id].on_reload()
85
89
 
86
- def setup_menu_actions(self) -> dict:
90
+ def setup_menu_actions(self) -> Dict[str, QAction]:
87
91
  """
88
92
  Setup Tools menu actions
89
93
 
@@ -110,7 +114,11 @@ class Tools:
110
114
  for id in self.tools:
111
115
  self.tools[id].setup_theme()
112
116
 
113
- def get_instance(self, type_id: str, dialog_id: str = None) -> BaseDialog:
117
+ def get_instance(
118
+ self,
119
+ type_id: str,
120
+ dialog_id: Optional[str] = None
121
+ ) -> Optional[BaseDialog]:
114
122
  """
115
123
  Spawn and return dialog instance
116
124
 
@@ -123,7 +131,7 @@ class Tools:
123
131
  if instance is not None:
124
132
  return instance
125
133
 
126
- def get_lang_mappings(self) -> dict:
134
+ def get_lang_mappings(self) -> Dict[str, dict]:
127
135
  """
128
136
  Get language mappings
129
137
 
@@ -6,10 +6,11 @@
6
6
  # GitHub: https://github.com/szczyglis-dev/py-gpt #
7
7
  # MIT License #
8
8
  # Created By : Marcin Szczygliński #
9
- # Updated Date: 2024.11.20 03:00:00 #
9
+ # Updated Date: 2024.12.14 22:00:00 #
10
10
  # ================================================== #
11
11
 
12
12
  import os
13
+ from typing import Dict
13
14
 
14
15
  from PySide6.QtGui import QAction, QIcon
15
16
  from PySide6.QtWidgets import QFileDialog
@@ -255,7 +256,7 @@ class AudioTranscriber(BaseTool):
255
256
  self.window.ui.nodes['audio.transcribe.status'].setText("")
256
257
  self.store("")
257
258
 
258
- def setup_menu(self) -> dict:
259
+ def setup_menu(self) -> Dict[str, QAction]:
259
260
  """
260
261
  Setup main menu
261
262
 
@@ -278,7 +279,7 @@ class AudioTranscriber(BaseTool):
278
279
  self.dialog = AudioTranscribe(self.window)
279
280
  self.dialog.setup()
280
281
 
281
- def get_lang_mappings(self) -> dict:
282
+ def get_lang_mappings(self) -> Dict[str, Dict]:
282
283
  """
283
284
  Get language mappings
284
285