vector-inspector 0.3.2__tar.gz → 0.3.5__tar.gz

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 (70) hide show
  1. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/PKG-INFO +11 -2
  2. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/README.md +5 -0
  3. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/pyproject.toml +65 -18
  4. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/connection_manager.py +55 -49
  5. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/connections/base_connection.py +127 -42
  6. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/connections/chroma_connection.py +133 -89
  7. vector_inspector-0.3.5/src/vector_inspector/core/connections/pgvector_connection.py +1100 -0
  8. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/connections/pinecone_connection.py +191 -185
  9. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/connections/qdrant_connection.py +321 -303
  10. vector_inspector-0.3.5/src/vector_inspector/core/connections/qdrant_helpers/__init__.py +4 -0
  11. vector_inspector-0.3.5/src/vector_inspector/core/connections/qdrant_helpers/qdrant_embedding_resolver.py +35 -0
  12. vector_inspector-0.3.5/src/vector_inspector/core/connections/qdrant_helpers/qdrant_filter_builder.py +51 -0
  13. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/connections/template_connection.py +55 -65
  14. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/embedding_providers/provider_factory.py +33 -38
  15. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/embedding_utils.py +34 -34
  16. vector_inspector-0.3.5/src/vector_inspector/core/logging.py +27 -0
  17. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/model_registry.py +4 -3
  18. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/main.py +6 -2
  19. vector_inspector-0.3.5/src/vector_inspector/services/backup_helpers.py +63 -0
  20. vector_inspector-0.3.5/src/vector_inspector/services/backup_restore_service.py +205 -0
  21. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/services/credential_service.py +33 -40
  22. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/services/import_export_service.py +70 -67
  23. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/services/profile_service.py +92 -94
  24. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/services/settings_service.py +68 -48
  25. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/services/visualization_service.py +40 -39
  26. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/components/connection_manager_panel.py +96 -77
  27. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/components/profile_manager_panel.py +315 -121
  28. vector_inspector-0.3.5/src/vector_inspector/ui/components/splash_window.py +57 -0
  29. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/dialogs/cross_db_migration.py +6 -5
  30. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/dialogs/embedding_config_dialog.py +79 -58
  31. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/main_window.py +222 -146
  32. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/views/connection_view.py +215 -116
  33. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/views/info_panel.py +212 -131
  34. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/views/metadata_view.py +470 -190
  35. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/views/search_view.py +97 -75
  36. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/views/visualization_view.py +140 -97
  37. vector_inspector-0.3.5/src/vector_inspector/utils/version.py +5 -0
  38. vector_inspector-0.3.5/tests/test_backup_helpers.py +22 -0
  39. vector_inspector-0.3.5/tests/test_backup_restore_service.py +97 -0
  40. vector_inspector-0.3.2/src/vector_inspector/services/backup_restore_service.py +0 -276
  41. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/__init__.py +0 -0
  42. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/__main__.py +0 -0
  43. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/config/__init__.py +0 -0
  44. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/config/known_embedding_models.json +0 -0
  45. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/__init__.py +0 -0
  46. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/cache_manager.py +0 -0
  47. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/connections/__init__.py +0 -0
  48. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/embedding_providers/__init__.py +0 -0
  49. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/embedding_providers/base_provider.py +0 -0
  50. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/embedding_providers/clip_provider.py +0 -0
  51. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/core/embedding_providers/sentence_transformer_provider.py +0 -0
  52. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/services/__init__.py +0 -0
  53. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/services/filter_service.py +0 -0
  54. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/__init__.py +0 -0
  55. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/components/__init__.py +0 -0
  56. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/components/backup_restore_dialog.py +0 -0
  57. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/components/filter_builder.py +0 -0
  58. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/components/item_dialog.py +0 -0
  59. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/components/loading_dialog.py +0 -0
  60. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/dialogs/__init__.py +0 -0
  61. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/dialogs/provider_type_dialog.py +0 -0
  62. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/views/__init__.py +0 -0
  63. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/ui/views/collection_browser.py +0 -0
  64. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/utils/__init__.py +0 -0
  65. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/src/vector_inspector/utils/lazy_imports.py +0 -0
  66. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/tests/test_connections.py +0 -0
  67. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/tests/test_filter_service.py +0 -0
  68. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/tests/test_pinecone_connection.py +0 -0
  69. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/tests/test_runner.py +0 -0
  70. {vector_inspector-0.3.2 → vector_inspector-0.3.5}/tests/test_settings_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vector-inspector
3
- Version: 0.3.2
3
+ Version: 0.3.5
4
4
  Summary: A comprehensive desktop application for visualizing, querying, and managing vector database data
5
5
  Author-Email: Anthony Dawson <anthonypdawson+github@gmail.com>
6
6
  License: MIT
@@ -8,7 +8,7 @@ Project-URL: Homepage, https://vector-inspector.divinedevops.com
8
8
  Project-URL: Source, https://github.com/anthonypdawson/vector-inspector
9
9
  Project-URL: Issues, https://github.com/anthonypdawson/vector-inspector/issues
10
10
  Project-URL: Documentation, https://github.com/anthonypdawson/vector-inspector#readme
11
- Requires-Python: <3.13,>=3.10
11
+ Requires-Python: <3.14,>=3.10
12
12
  Requires-Dist: chromadb>=0.4.22
13
13
  Requires-Dist: qdrant-client>=1.7.0
14
14
  Requires-Dist: pyside6>=6.6.0
@@ -24,8 +24,17 @@ Requires-Dist: pyarrow>=14.0.0
24
24
  Requires-Dist: pinecone>=8.0.0
25
25
  Requires-Dist: keyring>=25.7.0
26
26
  Requires-Dist: hf-xet>=1.2.0
27
+ Requires-Dist: pymilvus>=2.6.6
28
+ Requires-Dist: lancedb>=0.27.0
29
+ Requires-Dist: psycopg2>=2.9.11
30
+ Requires-Dist: pgvector>=0.4.2
27
31
  Description-Content-Type: text/markdown
28
32
 
33
+ # Latest updates
34
+ - Added and tested support for python 3.13
35
+ - Miscellaneous documentation updates and fixes
36
+ - Splash screen now shows after main window is visible
37
+ ---
29
38
 
30
39
  # Vector Inspector
31
40
 
@@ -1,3 +1,8 @@
1
+ # Latest updates
2
+ - Added and tested support for python 3.13
3
+ - Miscellaneous documentation updates and fixes
4
+ - Splash screen now shows after main window is visible
5
+ ---
1
6
 
2
7
  # Vector Inspector
3
8
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "vector-inspector"
3
- version = "0.3.2"
3
+ version = "0.3.5"
4
4
  description = "A comprehensive desktop application for visualizing, querying, and managing vector database data"
5
5
  authors = [
6
6
  { name = "Anthony Dawson", email = "anthonypdawson+github@gmail.com" },
@@ -21,8 +21,12 @@ dependencies = [
21
21
  "pinecone>=8.0.0",
22
22
  "keyring>=25.7.0",
23
23
  "hf-xet>=1.2.0",
24
+ "pymilvus>=2.6.6",
25
+ "lancedb>=0.27.0",
26
+ "psycopg2>=2.9.11",
27
+ "pgvector>=0.4.2",
24
28
  ]
25
- requires-python = ">=3.10,<3.13"
29
+ requires-python = ">=3.10,<3.14"
26
30
  readme = "README.md"
27
31
 
28
32
  [project.license]
@@ -37,6 +41,65 @@ Documentation = "https://github.com/anthonypdawson/vector-inspector#readme"
37
41
  [project.scripts]
38
42
  vector-inspector = "vector_inspector.main:main"
39
43
 
44
+ [build-system]
45
+ requires = [
46
+ "pdm-backend",
47
+ ]
48
+ build-backend = "pdm.backend"
49
+
50
+ [dependency-groups]
51
+ dev = [
52
+ "pytest>=7.4.0",
53
+ "pytest-qt>=4.2.0",
54
+ "black>=23.12.0",
55
+ "ruff>=0.14.14",
56
+ "mypy>=1.19.1",
57
+ "ipython>=8.18.0",
58
+ ]
59
+
60
+ [tool.ruff]
61
+ line-length = 100
62
+ target-version = "py310"
63
+ extend-exclude = [
64
+ "build",
65
+ "dist",
66
+ ".venv",
67
+ ]
68
+
69
+ [tool.ruff.format]
70
+ quote-style = "double"
71
+ indent-style = "space"
72
+ line-ending = "auto"
73
+ skip-magic-trailing-comma = false
74
+
75
+ [tool.ruff.lint]
76
+ select = [
77
+ "E",
78
+ "F",
79
+ "W",
80
+ "I",
81
+ "UP",
82
+ "B",
83
+ "A",
84
+ "C4",
85
+ "DTZ",
86
+ "T20",
87
+ "RET",
88
+ "SIM",
89
+ "ARG",
90
+ "RUF",
91
+ ]
92
+ ignore = [
93
+ "E501",
94
+ "I001",
95
+ ]
96
+
97
+ [tool.ruff.lint.isort]
98
+ combine-as-imports = true
99
+ known-first-party = [
100
+ "vector_inspector",
101
+ ]
102
+
40
103
  [tool.pdm]
41
104
  distribution = true
42
105
 
@@ -48,19 +111,3 @@ cmd = "python -m vector_inspector.main"
48
111
 
49
112
  [tool.pdm.scripts.vector-inspector.env]
50
113
  PYTHONPATH = "src"
51
-
52
- [tool.pdm.dev-dependencies]
53
- dev = [
54
- "pytest>=7.4.0",
55
- "pytest-qt>=4.2.0",
56
- "black>=23.12.0",
57
- "ruff>=0.1.0",
58
- "mypy>=1.7.0",
59
- "ipython>=8.18.0",
60
- ]
61
-
62
- [build-system]
63
- requires = [
64
- "pdm-backend",
65
- ]
66
- build-backend = "pdm.backend"
@@ -6,10 +6,12 @@ from enum import Enum
6
6
  from PySide6.QtCore import QObject, Signal
7
7
 
8
8
  from .connections.base_connection import VectorDBConnection
9
+ from vector_inspector.core.logging import log_error
9
10
 
10
11
 
11
12
  class ConnectionState(Enum):
12
13
  """Possible connection states."""
14
+
13
15
  DISCONNECTED = "disconnected"
14
16
  CONNECTING = "connecting"
15
17
  CONNECTED = "connected"
@@ -18,18 +20,18 @@ class ConnectionState(Enum):
18
20
 
19
21
  class ConnectionInstance:
20
22
  """Represents a single active connection with its state and context."""
21
-
23
+
22
24
  def __init__(
23
25
  self,
24
26
  connection_id: str,
25
27
  name: str,
26
28
  provider: str,
27
29
  connection: VectorDBConnection,
28
- config: Dict[str, Any]
30
+ config: Dict[str, Any],
29
31
  ):
30
32
  """
31
33
  Initialize a connection instance.
32
-
34
+
33
35
  Args:
34
36
  connection_id: Unique connection identifier
35
37
  name: User-friendly connection name
@@ -46,11 +48,11 @@ class ConnectionInstance:
46
48
  self.active_collection: Optional[str] = None
47
49
  self.collections: List[str] = []
48
50
  self.error_message: Optional[str] = None
49
-
51
+
50
52
  def get_display_name(self) -> str:
51
53
  """Get a display-friendly connection name."""
52
54
  return f"{self.name} ({self.provider})"
53
-
55
+
54
56
  def get_breadcrumb(self) -> str:
55
57
  """Get breadcrumb showing connection > collection."""
56
58
  if self.active_collection:
@@ -60,7 +62,7 @@ class ConnectionInstance:
60
62
 
61
63
  class ConnectionManager(QObject):
62
64
  """Manages multiple vector database connections and saved profiles.
63
-
65
+
64
66
  Signals:
65
67
  connection_opened: Emitted when a new connection is opened (connection_id)
66
68
  connection_closed: Emitted when a connection is closed (connection_id)
@@ -69,7 +71,7 @@ class ConnectionManager(QObject):
69
71
  active_collection_changed: Emitted when active collection changes (connection_id, collection_name or None)
70
72
  collections_updated: Emitted when collections list is updated (connection_id, collections)
71
73
  """
72
-
74
+
73
75
  # Signals
74
76
  connection_opened = Signal(str) # connection_id
75
77
  connection_closed = Signal(str) # connection_id
@@ -77,116 +79,119 @@ class ConnectionManager(QObject):
77
79
  active_connection_changed = Signal(object) # connection_id or None
78
80
  active_collection_changed = Signal(str, object) # connection_id, collection_name or None
79
81
  collections_updated = Signal(str, list) # connection_id, collections
80
-
82
+
81
83
  MAX_CONNECTIONS = 10 # Limit to prevent resource exhaustion
82
-
84
+
83
85
  def __init__(self):
84
86
  """Initialize the connection manager."""
85
87
  super().__init__()
86
88
  self._connections: Dict[str, ConnectionInstance] = {}
87
89
  self._active_connection_id: Optional[str] = None
88
-
90
+
89
91
  def create_connection(
90
92
  self,
91
93
  name: str,
92
94
  provider: str,
93
95
  connection: VectorDBConnection,
94
- config: Dict[str, Any]
96
+ config: Dict[str, Any],
97
+ connection_id: str = None,
95
98
  ) -> str:
96
99
  """
97
100
  Create a new connection instance (not yet connected).
98
-
101
+
99
102
  Args:
100
103
  name: User-friendly connection name
101
104
  provider: Provider type
102
105
  connection: The connection object
103
106
  config: Connection configuration
104
-
107
+ connection_id: Optional. Use this ID instead of generating a new one (for profiles).
108
+
105
109
  Returns:
106
110
  The connection ID
107
-
111
+
108
112
  Raises:
109
113
  RuntimeError: If maximum connections limit reached
110
114
  """
111
115
  if len(self._connections) >= self.MAX_CONNECTIONS:
112
116
  raise RuntimeError(f"Maximum number of connections ({self.MAX_CONNECTIONS}) reached")
113
-
114
- connection_id = str(uuid.uuid4())
117
+
118
+ if connection_id is None:
119
+ connection_id = str(uuid.uuid4())
115
120
  instance = ConnectionInstance(connection_id, name, provider, connection, config)
116
121
  self._connections[connection_id] = instance
117
-
122
+
118
123
  # Set as active if it's the first connection
119
124
  if len(self._connections) == 1:
120
125
  self._active_connection_id = connection_id
121
126
  self.active_connection_changed.emit(connection_id)
122
-
127
+
123
128
  # Don't emit connection_opened yet - wait until actually connected
124
129
  return connection_id
125
-
130
+
126
131
  def mark_connection_opened(self, connection_id: str):
127
132
  """
128
133
  Mark a connection as opened (after successful connection).
129
-
134
+
130
135
  Args:
131
136
  connection_id: ID of connection that opened
132
137
  """
133
138
  if connection_id in self._connections:
134
139
  self.connection_opened.emit(connection_id)
135
-
140
+
136
141
  def get_connection(self, connection_id: str) -> Optional[ConnectionInstance]:
137
142
  """Get a connection instance by ID."""
138
143
  return self._connections.get(connection_id)
139
-
144
+
140
145
  def get_active_connection(self) -> Optional[ConnectionInstance]:
141
146
  """Get the currently active connection instance."""
142
147
  if self._active_connection_id:
143
148
  return self._connections.get(self._active_connection_id)
144
149
  return None
145
-
150
+
146
151
  def get_active_connection_id(self) -> Optional[str]:
147
152
  """Get the currently active connection ID."""
148
153
  return self._active_connection_id
149
-
154
+
150
155
  def set_active_connection(self, connection_id: str) -> bool:
151
156
  """
152
157
  Set the active connection.
153
-
158
+
154
159
  Args:
155
160
  connection_id: ID of connection to make active
156
-
161
+
157
162
  Returns:
158
163
  True if successful, False if connection not found
159
164
  """
160
165
  if connection_id not in self._connections:
161
166
  return False
162
-
167
+
163
168
  self._active_connection_id = connection_id
164
169
  self.active_connection_changed.emit(connection_id)
165
170
  return True
166
-
171
+
167
172
  def close_connection(self, connection_id: str) -> bool:
168
173
  """
169
174
  Close and remove a connection.
170
-
175
+
171
176
  Args:
172
177
  connection_id: ID of connection to close
173
-
178
+
174
179
  Returns:
175
180
  True if successful, False if connection not found
176
181
  """
177
182
  instance = self._connections.get(connection_id)
178
183
  if not instance:
179
184
  return False
180
-
185
+
181
186
  # Disconnect the connection
182
187
  try:
183
188
  instance.connection.disconnect()
184
189
  except Exception as e:
185
- print(f"Error disconnecting: {e}")
186
-
190
+ log_error("Error disconnecting: %s", e)
191
+
187
192
  # Remove from connections dict
188
193
  del self._connections[connection_id]
189
-
194
+
190
195
  # If this was the active connection, set a new one or None
191
196
  if self._active_connection_id == connection_id:
192
197
  if self._connections:
@@ -196,14 +201,16 @@ class ConnectionManager(QObject):
196
201
  else:
197
202
  self._active_connection_id = None
198
203
  self.active_connection_changed.emit(None)
199
-
204
+
200
205
  self.connection_closed.emit(connection_id)
201
206
  return True
202
-
203
- def update_connection_state(self, connection_id: str, state: ConnectionState, error: Optional[str] = None):
207
+
208
+ def update_connection_state(
209
+ self, connection_id: str, state: ConnectionState, error: Optional[str] = None
210
+ ):
204
211
  """
205
212
  Update the state of a connection.
206
-
213
+
207
214
  Args:
208
215
  connection_id: ID of connection
209
216
  state: New connection state
@@ -217,11 +224,11 @@ class ConnectionManager(QObject):
217
224
  else:
218
225
  instance.error_message = None
219
226
  self.connection_state_changed.emit(connection_id, state)
220
-
227
+
221
228
  def update_collections(self, connection_id: str, collections: List[str]):
222
229
  """
223
230
  Update the collections list for a connection.
224
-
231
+
225
232
  Args:
226
233
  connection_id: ID of connection
227
234
  collections: List of collection names
@@ -230,11 +237,11 @@ class ConnectionManager(QObject):
230
237
  if instance:
231
238
  instance.collections = collections
232
239
  self.collections_updated.emit(connection_id, collections)
233
-
240
+
234
241
  def set_active_collection(self, connection_id: str, collection_name: Optional[str]):
235
242
  """
236
243
  Set the active collection for a connection.
237
-
244
+
238
245
  Args:
239
246
  connection_id: ID of connection
240
247
  collection_name: Name of collection to make active, or None
@@ -243,29 +250,29 @@ class ConnectionManager(QObject):
243
250
  if instance:
244
251
  instance.active_collection = collection_name
245
252
  self.active_collection_changed.emit(connection_id, collection_name)
246
-
253
+
247
254
  def get_all_connections(self) -> List[ConnectionInstance]:
248
255
  """Get list of all connection instances."""
249
256
  return list(self._connections.values())
250
-
257
+
251
258
  def get_connection_count(self) -> int:
252
259
  """Get the number of active connections."""
253
260
  return len(self._connections)
254
-
261
+
255
262
  def close_all_connections(self):
256
263
  """Close all connections. Typically called on application exit."""
257
264
  connection_ids = list(self._connections.keys())
258
265
  for conn_id in connection_ids:
259
266
  self.close_connection(conn_id)
260
-
267
+
261
268
  def rename_connection(self, connection_id: str, new_name: str) -> bool:
262
269
  """
263
270
  Rename a connection.
264
-
271
+
265
272
  Args:
266
273
  connection_id: ID of connection
267
274
  new_name: New name for the connection
268
-
275
+
269
276
  Returns:
270
277
  True if successful, False if connection not found
271
278
  """
@@ -274,4 +281,3 @@ class ConnectionManager(QObject):
274
281
  instance.name = new_name
275
282
  return True
276
283
  return False
277
-