matrixone-python-sdk 0.1.0__py3-none-any.whl → 0.1.1__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.
- matrixone/async_client.py +24 -8
- matrixone/client.py +41 -8
- matrixone/restore.py +6 -2
- {matrixone_python_sdk-0.1.0.dist-info → matrixone_python_sdk-0.1.1.dist-info}/METADATA +17 -1
- {matrixone_python_sdk-0.1.0.dist-info → matrixone_python_sdk-0.1.1.dist-info}/RECORD +18 -18
- tests/offline/test_async_client_query_comprehensive.py +4 -2
- tests/online/test_async_client_interfaces.py +1 -1
- tests/online/test_async_client_online.py +1 -1
- tests/online/test_async_orm_online.py +5 -3
- tests/online/test_async_transaction_simple_query.py +1 -1
- tests/online/test_transaction_contexts.py +10 -10
- tests/online/test_transaction_insert_methods.py +2 -2
- tests/online/test_transaction_query_methods.py +2 -2
- tests/online/test_unified_filter_online.py +1 -1
- {matrixone_python_sdk-0.1.0.dist-info → matrixone_python_sdk-0.1.1.dist-info}/WHEEL +0 -0
- {matrixone_python_sdk-0.1.0.dist-info → matrixone_python_sdk-0.1.1.dist-info}/entry_points.txt +0 -0
- {matrixone_python_sdk-0.1.0.dist-info → matrixone_python_sdk-0.1.1.dist-info}/licenses/LICENSE +0 -0
- {matrixone_python_sdk-0.1.0.dist-info → matrixone_python_sdk-0.1.1.dist-info}/top_level.txt +0 -0
matrixone/async_client.py
CHANGED
@@ -1488,11 +1488,12 @@ class AsyncClient(BaseMatrixOneClient):
|
|
1488
1488
|
|
1489
1489
|
async def connect(
|
1490
1490
|
self,
|
1491
|
-
|
1492
|
-
|
1493
|
-
|
1494
|
-
|
1495
|
-
|
1491
|
+
*,
|
1492
|
+
host: str = "localhost",
|
1493
|
+
port: int = 6001,
|
1494
|
+
user: str = "root",
|
1495
|
+
password: str = "111",
|
1496
|
+
database: str,
|
1496
1497
|
account: Optional[str] = None,
|
1497
1498
|
role: Optional[str] = None,
|
1498
1499
|
charset: str = "utf8mb4",
|
@@ -1573,8 +1574,12 @@ class AsyncClient(BaseMatrixOneClient):
|
|
1573
1574
|
|
1574
1575
|
self.logger.log_connection(host, port, final_user, database or "default", success=True)
|
1575
1576
|
|
1576
|
-
# Setup connection hook if provided
|
1577
|
-
|
1577
|
+
# Setup connection hook (default to ENABLE_ALL if not provided)
|
1578
|
+
# Allow empty list [] to explicitly disable hooks
|
1579
|
+
if on_connect is None:
|
1580
|
+
on_connect = [ConnectionAction.ENABLE_ALL]
|
1581
|
+
|
1582
|
+
if on_connect: # Only setup if not empty list
|
1578
1583
|
self._setup_connection_hook(on_connect)
|
1579
1584
|
# Execute the hook once immediately for the initial connection
|
1580
1585
|
await self._execute_connection_hook_immediately(on_connect)
|
@@ -1582,7 +1587,18 @@ class AsyncClient(BaseMatrixOneClient):
|
|
1582
1587
|
except Exception as e:
|
1583
1588
|
self.logger.log_connection(host, port, final_user, database or "default", success=False)
|
1584
1589
|
self.logger.log_error(e, context="Async connection")
|
1585
|
-
|
1590
|
+
|
1591
|
+
# Provide user-friendly error messages for common issues
|
1592
|
+
error_msg = str(e)
|
1593
|
+
if 'Unknown database' in error_msg or '1049' in error_msg:
|
1594
|
+
db_name = database or "default"
|
1595
|
+
raise ConnectionError(
|
1596
|
+
f"Database '{db_name}' does not exist. Please create it first:\n"
|
1597
|
+
f" mysql -h{host} -P{port} -u{user.split('#')[0] if '#' in user else user} -p{password} "
|
1598
|
+
f"-e \"CREATE DATABASE {db_name}\""
|
1599
|
+
) from e
|
1600
|
+
else:
|
1601
|
+
raise ConnectionError(f"Failed to connect to MatrixOne: {e}") from e
|
1586
1602
|
|
1587
1603
|
def _setup_connection_hook(
|
1588
1604
|
self, on_connect: Union[ConnectionHook, List[Union[ConnectionAction, str]], Callable]
|
matrixone/client.py
CHANGED
@@ -244,10 +244,11 @@ class Client(BaseMatrixOneClient):
|
|
244
244
|
|
245
245
|
def connect(
|
246
246
|
self,
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
247
|
+
*,
|
248
|
+
host: str = "localhost",
|
249
|
+
port: int = 6001,
|
250
|
+
user: str = "root",
|
251
|
+
password: str = "111",
|
251
252
|
database: str,
|
252
253
|
ssl_mode: str = "preferred",
|
253
254
|
ssl_ca: Optional[str] = None,
|
@@ -345,8 +346,12 @@ class Client(BaseMatrixOneClient):
|
|
345
346
|
except Exception as e:
|
346
347
|
self.logger.warning(f"Failed to detect backend version: {e}")
|
347
348
|
|
348
|
-
# Setup connection hook if provided
|
349
|
-
|
349
|
+
# Setup connection hook (default to ENABLE_ALL if not provided)
|
350
|
+
# Allow empty list [] to explicitly disable hooks
|
351
|
+
if on_connect is None:
|
352
|
+
on_connect = [ConnectionAction.ENABLE_ALL]
|
353
|
+
|
354
|
+
if on_connect: # Only setup if not empty list
|
350
355
|
self._setup_connection_hook(on_connect)
|
351
356
|
# Execute the hook once immediately for the initial connection
|
352
357
|
self._execute_connection_hook_immediately(on_connect)
|
@@ -354,7 +359,17 @@ class Client(BaseMatrixOneClient):
|
|
354
359
|
except Exception as e:
|
355
360
|
self.logger.log_connection(host, port, final_user, database, success=False)
|
356
361
|
self.logger.log_error(e, context="Connection")
|
357
|
-
|
362
|
+
|
363
|
+
# Provide user-friendly error messages for common issues
|
364
|
+
error_msg = str(e)
|
365
|
+
if 'Unknown database' in error_msg or '1049' in error_msg:
|
366
|
+
raise ConnectionError(
|
367
|
+
f"Database '{database}' does not exist. Please create it first:\n"
|
368
|
+
f" mysql -h{host} -P{port} -u{user.split('#')[0] if '#' in user else user} -p{password} "
|
369
|
+
f"-e \"CREATE DATABASE {database}\""
|
370
|
+
) from e
|
371
|
+
else:
|
372
|
+
raise ConnectionError(f"Failed to connect to MatrixOne: {e}") from e
|
358
373
|
|
359
374
|
def _setup_connection_hook(
|
360
375
|
self, on_connect: Union[ConnectionHook, List[Union[ConnectionAction, str]], Callable]
|
@@ -1686,7 +1701,25 @@ class Client(BaseMatrixOneClient):
|
|
1686
1701
|
from .sqlalchemy_ext import FulltextIndex, VectorIndex
|
1687
1702
|
from sqlalchemy.schema import CreateTable, CreateIndex
|
1688
1703
|
|
1689
|
-
|
1704
|
+
try:
|
1705
|
+
engine_context = self.get_sqlalchemy_engine().begin()
|
1706
|
+
except Exception as e:
|
1707
|
+
# Handle database connection errors with user-friendly messages
|
1708
|
+
error_msg = str(e)
|
1709
|
+
if 'Unknown database' in error_msg or '1049' in error_msg:
|
1710
|
+
db_name = self._connection_params.get('database', 'unknown')
|
1711
|
+
raise ConnectionError(
|
1712
|
+
f"Database '{db_name}' does not exist. Please create it first:\n"
|
1713
|
+
f" mysql -h{self._connection_params.get('host', 'localhost')} "
|
1714
|
+
f"-P{self._connection_params.get('port', 6001)} "
|
1715
|
+
f"-u{self._connection_params.get('user', 'root')} "
|
1716
|
+
f"-p{self._connection_params.get('password', '***')} "
|
1717
|
+
f"-e \"CREATE DATABASE {db_name}\""
|
1718
|
+
) from e
|
1719
|
+
else:
|
1720
|
+
raise ConnectionError(f"Failed to connect to database: {error_msg}") from e
|
1721
|
+
|
1722
|
+
with engine_context as conn:
|
1690
1723
|
# Create table without indexes first
|
1691
1724
|
# Build CREATE TABLE statement without indexes
|
1692
1725
|
create_table_sql = str(CreateTable(table).compile(dialect=conn.dialect))
|
matrixone/restore.py
CHANGED
@@ -204,7 +204,9 @@ class RestoreManager:
|
|
204
204
|
result = self._client.execute(sql)
|
205
205
|
return result is not None
|
206
206
|
except Exception as e:
|
207
|
-
raise RestoreError(
|
207
|
+
raise RestoreError(
|
208
|
+
f"Failed to restore database '{database_name}' from snapshot '{snapshot_name}': {e}"
|
209
|
+
) from None
|
208
210
|
|
209
211
|
def restore_table(
|
210
212
|
self,
|
@@ -323,7 +325,9 @@ class RestoreManager:
|
|
323
325
|
)
|
324
326
|
elif restore_type == "table":
|
325
327
|
if not all([account_name, database_name, table_name]):
|
326
|
-
raise RestoreError(
|
328
|
+
raise RestoreError(
|
329
|
+
"Account name, database name, and table name are required for table restore"
|
330
|
+
) from None
|
327
331
|
if to_account:
|
328
332
|
sql = (
|
329
333
|
f"RESTORE ACCOUNT {self._client._escape_identifier(account_name)} "
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: matrixone-python-sdk
|
3
|
-
Version: 0.1.
|
3
|
+
Version: 0.1.1
|
4
4
|
Summary: A comprehensive Python SDK for MatrixOne database operations with vector search, fulltext search, and advanced features
|
5
5
|
Home-page: https://github.com/matrixorigin/matrixone
|
6
6
|
Author: MatrixOne Team
|
@@ -185,6 +185,22 @@ print(f"MatrixOne version: {version}")
|
|
185
185
|
client.disconnect()
|
186
186
|
```
|
187
187
|
|
188
|
+
> **📝 Connection Parameters**
|
189
|
+
>
|
190
|
+
> The `connect()` method requires **keyword arguments** (not positional):
|
191
|
+
> - `database` - **Required**, no default value
|
192
|
+
> - `host` - Default: `'localhost'`
|
193
|
+
> - `port` - Default: `6001`
|
194
|
+
> - `user` - Default: `'root'`
|
195
|
+
> - `password` - Default: `'111'`
|
196
|
+
>
|
197
|
+
> **Minimal connection** (uses all defaults):
|
198
|
+
> ```python
|
199
|
+
> client.connect(database='test')
|
200
|
+
> ```
|
201
|
+
>
|
202
|
+
> By default, all features (IVF, HNSW, fulltext) are automatically enabled via `on_connect=[ConnectionAction.ENABLE_ALL]`.
|
203
|
+
|
188
204
|
### Async Usage
|
189
205
|
|
190
206
|
```python
|
@@ -1,11 +1,11 @@
|
|
1
1
|
matrixone/__init__.py,sha256=7bePzwzerZTiZIlbUT9zI_u4fp49DvQNcIqyiIvEVVs,3966
|
2
2
|
matrixone/account.py,sha256=0r9xLNTiUfXa3xWZQUhEJ_uUcNp_gja-YulOR5iYDU4,24712
|
3
|
-
matrixone/async_client.py,sha256=
|
3
|
+
matrixone/async_client.py,sha256=krF9xtn_aGS45VcShV5eYy89FHk0mCI9Ig-8RufBJmY,151518
|
4
4
|
matrixone/async_metadata_manager.py,sha256=7k5qtQbKO-52IXzhDN0qhvYdp5wars5M6ZjdSLfD8RM,10230
|
5
5
|
matrixone/async_orm.py,sha256=O4Rf85MnZg0_fuLvbHGfOPrHI2OLznYwLk9eam5J5ik,4864
|
6
6
|
matrixone/async_vector_index_manager.py,sha256=i881732IV4shT4NqqLBbEW9_z7XYCNlaJgPitCyIkhM,22953
|
7
7
|
matrixone/base_client.py,sha256=PUhq0c7Si9OIk83B4ZZ73ozwaHDRZ1zi0Q94YixseqY,6952
|
8
|
-
matrixone/client.py,sha256=
|
8
|
+
matrixone/client.py,sha256=uEKeA2BMjEd_n38lxBSJEv3NcJBr4S3lYV7a7fw_V-A,182693
|
9
9
|
matrixone/config.py,sha256=jrm1rLBhLWrX3dVdPx67sFaZ_9M8Vj4hImVrAmFaYbw,13917
|
10
10
|
matrixone/connection_hooks.py,sha256=kjv0HMCUZkma-9nTndNBV66NVcp4cTWs-8u5b6KCj2E,13530
|
11
11
|
matrixone/exceptions.py,sha256=oUQUY_TD8UTSzZzbwGdUgQ0kFJIYZq5Fx-vFsMaOfvw,1787
|
@@ -15,7 +15,7 @@ matrixone/moctl.py,sha256=rLt69ZlhIr_pCbyu8cImKgdR_YOGf85XvqCHcW12sc0,6714
|
|
15
15
|
matrixone/orm.py,sha256=QWNdfJ067KcgWU-eB__vXwJuANBaDUeVVG7thFH5kiU,90473
|
16
16
|
matrixone/pitr.py,sha256=NPsexPsJXIAiJTH3oMyFOwiXWjvfohPzWQyFHhQKh5k,21632
|
17
17
|
matrixone/pubsub.py,sha256=ckaG6Z3IuEtcdwp11qvB88PrCDHYymocSOJ1v4TftzY,26893
|
18
|
-
matrixone/restore.py,sha256=
|
18
|
+
matrixone/restore.py,sha256=xAbsRUL-2hCk6YpuouVLbiwc3GwUNzCoIVEFtcmghkg,15791
|
19
19
|
matrixone/search_vector_index.py,sha256=NjQpluaPcja66herm-OYq3nNeNAqY_-FGGL4SOBOWNA,46075
|
20
20
|
matrixone/snapshot.py,sha256=cOatk26Z6Jt6aAdasOMejxxiv73S7Z2o2if_va20Ihg,18103
|
21
21
|
matrixone/sql_builder.py,sha256=ZR9TpRkV4cN_RiDJQXMLwSzodpESyxAqV-TTIr--ZbY,29009
|
@@ -30,12 +30,12 @@ matrixone/sqlalchemy_ext/ivf_config.py,sha256=-esAijWMfyF1GUJivpZh-F4lvyKRmY8LYI
|
|
30
30
|
matrixone/sqlalchemy_ext/table_builder.py,sha256=JVritBPnCXZt0eJUivDrmGdlpaYO-uL7i2n24HiarEE,12870
|
31
31
|
matrixone/sqlalchemy_ext/vector_index.py,sha256=UIWuU30HjWypyfq30UiqUJ078DoD7Q5HtD_7iWwjnb0,54832
|
32
32
|
matrixone/sqlalchemy_ext/vector_type.py,sha256=HaOJ9dRdW_yrecD9qGUucW9bMfM3zCxbDC-0Ca32Kmk,30669
|
33
|
-
matrixone_python_sdk-0.1.
|
33
|
+
matrixone_python_sdk-0.1.1.dist-info/licenses/LICENSE,sha256=-PpUMwDyMyFlH9H7cnzkTh0Uo42tRvz43k7hnxe7G_I,11252
|
34
34
|
tests/__init__.py,sha256=odB22tIaJIHSwRhumhDlQYD6Fug_C0opWa07dSKkeQs,694
|
35
35
|
tests/offline/__init__.py,sha256=M13mz7gtVDS0_dJUW1EFyyiAGhEj282k3ia7eWA3dPs,703
|
36
36
|
tests/offline/conftest.py,sha256=Mz_NT6GBOxqSZsSCR2SXe1pkSpLGKT2-ssWNHhh9xOg,2494
|
37
37
|
tests/offline/test_account.py,sha256=uCHKPOBGiJrpEwXdyF2CoNoS5yqxuyKJgLTPMvKZQbk,26723
|
38
|
-
tests/offline/test_async_client_query_comprehensive.py,sha256=
|
38
|
+
tests/offline/test_async_client_query_comprehensive.py,sha256=HmLg8iYlD6l5K4lJN5VSXhJDtKGg17vym-9KaX6WDzY,45416
|
39
39
|
tests/offline/test_basic.py,sha256=pVyPnidD5jIoC8_40U1iXND29399G-0O5e4itm-2uhc,1710
|
40
40
|
tests/offline/test_case_sensitivity.py,sha256=aYlhA5F8RSlSy6wl3HWIrPylE3Z3eAUf4RWQohwD0eA,8715
|
41
41
|
tests/offline/test_connection_hooks_offline.py,sha256=pMbkjiEdn5ShljuX8QZRVnsMQLbJxI43tfb0saohBRw,11678
|
@@ -75,12 +75,12 @@ tests/online/__init__.py,sha256=91rCeFIUZe6Ld-d4PonsoBc2rSHxPGlt6pYGSNsjyzY,692
|
|
75
75
|
tests/online/conftest.py,sha256=1xOqAAFYsx9Io0e3m7DUQNX60B3sqvY98l8JhXY1CAA,7504
|
76
76
|
tests/online/test_account_management.py,sha256=mWIF3kPaegcb-JEhHBM9LrSae2xZ3ppjkRefWEzzwH4,6929
|
77
77
|
tests/online/test_advanced_features.py,sha256=f0oOe1bB6dT4bXZqx4LzrWd4ljwwcr9iIZLDHnTdPhU,13641
|
78
|
-
tests/online/test_async_client_interfaces.py,sha256=
|
79
|
-
tests/online/test_async_client_online.py,sha256=
|
78
|
+
tests/online/test_async_client_interfaces.py,sha256=ZT2kWm-ZT_O-_ZkGE7mVLE5c52_eRsbCC_wEksrUis0,12295
|
79
|
+
tests/online/test_async_client_online.py,sha256=LZp0QXk4l4FfuQOHNNg__degRTwh9K61StFtEmeUmZ8,10906
|
80
80
|
tests/online/test_async_model_insert_online.py,sha256=YPlcNjuaeimvG355JjjgyZUPfa9J0HtC5FVJr9uIp_k,10857
|
81
|
-
tests/online/test_async_orm_online.py,sha256=
|
81
|
+
tests/online/test_async_orm_online.py,sha256=8wjQb9oXMyNh4HQ1YkwiFYfHo73_YVPicOR_aiXrbEg,11039
|
82
82
|
tests/online/test_async_simple_query_online.py,sha256=nBMsCv-GaEiSRxh1juLNCiXNNsfUwWRApQvStzLeGr4,31021
|
83
|
-
tests/online/test_async_transaction_simple_query.py,sha256=
|
83
|
+
tests/online/test_async_transaction_simple_query.py,sha256=cLOH4C1fWW6vaCmBK33XjswQafxOMitMU0S4r-PAUxU,11825
|
84
84
|
tests/online/test_basic_connection.py,sha256=rDukB2MN3Gy_yLCG9_lHtUCcfFoSdkABCTpLsdwJYWo,5010
|
85
85
|
tests/online/test_client_online.py,sha256=w9ainOy0VnjSFOkGsSzrdB0jE-0wc87Hp4IqQTJS0OM,8716
|
86
86
|
tests/online/test_config.py,sha256=YwghdNuw5VBXP99kxKwxO47-fn5Hv6tXmtRxCCUZQMs,3323
|
@@ -109,14 +109,14 @@ tests/online/test_simple_fulltext_online.py,sha256=gNHETrSZ9sXZENmI0YkJ1fTJm2cK9
|
|
109
109
|
tests/online/test_snapshot_comprehensive.py,sha256=A8_Qvzxg5f6hkFF0tkESTyDQJSPsMX7nnBEsyY5Vmcc,40603
|
110
110
|
tests/online/test_sqlalchemy_engine_integration.py,sha256=XmdgvkJc9TOzkCP4O_GBCTRBdjQ5RncYfuKkcuHqick,12096
|
111
111
|
tests/online/test_sqlalchemy_integration.py,sha256=Za2s5Z55SxSAGdwTAfee2I7xoDuH6KLGSBGd-rsF_Wo,15439
|
112
|
-
tests/online/test_transaction_contexts.py,sha256=
|
113
|
-
tests/online/test_transaction_insert_methods.py,sha256=
|
114
|
-
tests/online/test_transaction_query_methods.py,sha256=
|
115
|
-
tests/online/test_unified_filter_online.py,sha256=
|
112
|
+
tests/online/test_transaction_contexts.py,sha256=ZPsP5vtN1dspCmgZvZ5AUVmX171pymdaIMj_JJ-5_14,49993
|
113
|
+
tests/online/test_transaction_insert_methods.py,sha256=TgonknmyidAk_86K8QVowqOG6nLlJ056msGR0tykhxU,14075
|
114
|
+
tests/online/test_transaction_query_methods.py,sha256=VaPvHOYskwJVyM7lvVvBJ6HqhdPsXAibFfDyIv1Ox1A,10975
|
115
|
+
tests/online/test_unified_filter_online.py,sha256=86JwEKUaBLNuLGJlR4E0zjzdWL5xVFyYLvyxbzkdEVI,21214
|
116
116
|
tests/online/test_vector_comprehensive.py,sha256=vmnwwVXLA7lUI_zSK3fJcf1HKx2AvrVDcUT0_d-gQwg,26980
|
117
117
|
tests/online/test_version_management.py,sha256=BU8Vc1fDKNCwhRliZi6XmEnd0HYdHuki9Xxi09vnriA,11416
|
118
|
-
matrixone_python_sdk-0.1.
|
119
|
-
matrixone_python_sdk-0.1.
|
120
|
-
matrixone_python_sdk-0.1.
|
121
|
-
matrixone_python_sdk-0.1.
|
122
|
-
matrixone_python_sdk-0.1.
|
118
|
+
matrixone_python_sdk-0.1.1.dist-info/METADATA,sha256=XudxtXRH_tppDic5p80YsrvQYNLJpUXmCnr8o0kGNJQ,20815
|
119
|
+
matrixone_python_sdk-0.1.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
120
|
+
matrixone_python_sdk-0.1.1.dist-info/entry_points.txt,sha256=4wUGPC_7_f5ZDR33JRo1LZmmTuyfkYAv41_5H5Qy-Ik,138
|
121
|
+
matrixone_python_sdk-0.1.1.dist-info/top_level.txt,sha256=LQZabpBx_dtQk8JbKeH3MbjmC8HYDLE8UQeEf6NfQJA,16
|
122
|
+
matrixone_python_sdk-0.1.1.dist-info/RECORD,,
|
@@ -263,7 +263,7 @@ class TestAsyncClientConnection(unittest.IsolatedAsyncioTestCase):
|
|
263
263
|
# Mock create_async_engine to return our mock engine
|
264
264
|
mock_create_async_engine.return_value = mock_engine
|
265
265
|
|
266
|
-
await self.client.connect(host="localhost", port=6001, user="root", password="111", database="test")
|
266
|
+
await self.client.connect(host="localhost", port=6001, user="root", password="111", database="test", on_connect=[])
|
267
267
|
|
268
268
|
# Verify create_async_engine was called
|
269
269
|
mock_create_async_engine.assert_called_once()
|
@@ -280,7 +280,9 @@ class TestAsyncClientConnection(unittest.IsolatedAsyncioTestCase):
|
|
280
280
|
mock_create_async_engine.side_effect = Exception("Connection failed")
|
281
281
|
|
282
282
|
with self.assertRaises(Exception):
|
283
|
-
await self.client.connect(
|
283
|
+
await self.client.connect(
|
284
|
+
host="localhost", port=6001, user="root", password="111", database="test", on_connect=[]
|
285
|
+
)
|
284
286
|
|
285
287
|
async def test_disconnect(self):
|
286
288
|
"""Test async disconnection"""
|
@@ -38,7 +38,7 @@ class TestAsyncClientMissingInterfaces:
|
|
38
38
|
"""Create and connect AsyncClient for testing"""
|
39
39
|
host, port, user, password, database = get_connection_params()
|
40
40
|
client = AsyncClient(logger=create_default_logger())
|
41
|
-
await client.connect(host, port, user, password, database)
|
41
|
+
await client.connect(host=host, port=port, user=user, password=password, database=database)
|
42
42
|
try:
|
43
43
|
yield client
|
44
44
|
finally:
|
@@ -40,7 +40,7 @@ class TestAsyncClientOnline:
|
|
40
40
|
"""Create and connect AsyncClient for testing"""
|
41
41
|
host, port, user, password, database = online_config.get_connection_params()
|
42
42
|
client = AsyncClient()
|
43
|
-
await client.connect(host, port, user, password, database)
|
43
|
+
await client.connect(host=host, port=port, user=user, password=password, database=database)
|
44
44
|
try:
|
45
45
|
yield client
|
46
46
|
finally:
|
@@ -100,13 +100,15 @@ class TestAsyncORMOnline:
|
|
100
100
|
|
101
101
|
# First create the database using default connection
|
102
102
|
temp_client = AsyncClient()
|
103
|
-
await temp_client.connect(
|
103
|
+
await temp_client.connect(
|
104
|
+
host=host, port=port, user=user, password=password, database="test"
|
105
|
+
) # Connect to default database
|
104
106
|
await temp_client.execute(f"CREATE DATABASE IF NOT EXISTS {test_database}")
|
105
107
|
await temp_client.disconnect()
|
106
108
|
|
107
109
|
# Now connect to the test database
|
108
110
|
client = AsyncClient()
|
109
|
-
await client.connect(host, port, user, password, test_database)
|
111
|
+
await client.connect(host=host, port=port, user=user, password=password, database=test_database)
|
110
112
|
|
111
113
|
try:
|
112
114
|
# Create test tables
|
@@ -158,7 +160,7 @@ class TestAsyncORMOnline:
|
|
158
160
|
await client.disconnect()
|
159
161
|
# Clean up database
|
160
162
|
cleanup_client = AsyncClient()
|
161
|
-
await cleanup_client.connect(host, port, user, password, "test")
|
163
|
+
await cleanup_client.connect(host=host, port=port, user=user, password=password, database="test")
|
162
164
|
await cleanup_client.execute(f"DROP DATABASE IF EXISTS {test_database}")
|
163
165
|
await cleanup_client.disconnect()
|
164
166
|
except Exception as e:
|
@@ -29,7 +29,7 @@ class TestAsyncTransactionSimpleQuery:
|
|
29
29
|
async def async_client_setup(self):
|
30
30
|
"""Setup async client for testing"""
|
31
31
|
client = AsyncClient()
|
32
|
-
await client.connect("127.0.0.1", 6001, "root", "111", "test")
|
32
|
+
await client.connect(host="127.0.0.1", port=6001, user="root", password="111", database="test")
|
33
33
|
|
34
34
|
# Enable fulltext indexing
|
35
35
|
await client.execute("SET experimental_fulltext_index=1")
|
@@ -34,7 +34,7 @@ class TestSyncTransactionContexts:
|
|
34
34
|
"""Setup sync client for testing"""
|
35
35
|
client = Client()
|
36
36
|
host, port, user, password, database = online_config.get_connection_params()
|
37
|
-
client.connect(host, port, user, password, database)
|
37
|
+
client.connect(host=host, port=port, user=user, password=password, database=database)
|
38
38
|
|
39
39
|
# Enable fulltext indexing
|
40
40
|
client.execute("SET experimental_fulltext_index=1")
|
@@ -154,7 +154,7 @@ class TestAsyncTransactionContexts:
|
|
154
154
|
"""Setup async client for testing"""
|
155
155
|
client = AsyncClient()
|
156
156
|
host, port, user, password, database = online_config.get_connection_params()
|
157
|
-
await client.connect(host, port, user, password, database)
|
157
|
+
await client.connect(host=host, port=port, user=user, password=password, database=database)
|
158
158
|
|
159
159
|
# Enable fulltext indexing
|
160
160
|
await client.execute("SET experimental_fulltext_index=1")
|
@@ -295,7 +295,7 @@ class TestTransactionContextCompatibility:
|
|
295
295
|
"""Setup sync client for testing"""
|
296
296
|
client = Client()
|
297
297
|
host, port, user, password, database = online_config.get_connection_params()
|
298
|
-
client.connect(host, port, user, password, database)
|
298
|
+
client.connect(host=host, port=port, user=user, password=password, database=database)
|
299
299
|
|
300
300
|
# Enable fulltext indexing
|
301
301
|
client.execute("SET experimental_fulltext_index=1")
|
@@ -364,7 +364,7 @@ class TestTransactionContextCompatibility:
|
|
364
364
|
"""Test that async transaction wrapper has all necessary managers"""
|
365
365
|
client = AsyncClient()
|
366
366
|
host, port, user, password, database = online_config.get_connection_params()
|
367
|
-
await client.connect(host, port, user, password, database)
|
367
|
+
await client.connect(host=host, port=port, user=user, password=password, database=database)
|
368
368
|
|
369
369
|
try:
|
370
370
|
# Enable fulltext indexing
|
@@ -432,7 +432,7 @@ class TestTransactionContextFeatures:
|
|
432
432
|
"""Setup sync client for testing"""
|
433
433
|
client = Client()
|
434
434
|
host, port, user, password, database = online_config.get_connection_params()
|
435
|
-
client.connect(host, port, user, password, database)
|
435
|
+
client.connect(host=host, port=port, user=user, password=password, database=database)
|
436
436
|
|
437
437
|
# Enable fulltext indexing
|
438
438
|
client.execute("SET experimental_fulltext_index=1")
|
@@ -537,7 +537,7 @@ class TestTransactionContextFeatures:
|
|
537
537
|
"""Test fulltext features in async transaction context"""
|
538
538
|
client = AsyncClient()
|
539
539
|
host, port, user, password, database = online_config.get_connection_params()
|
540
|
-
await client.connect(host, port, user, password, database)
|
540
|
+
await client.connect(host=host, port=port, user=user, password=password, database=database)
|
541
541
|
|
542
542
|
try:
|
543
543
|
# Enable fulltext indexing
|
@@ -648,7 +648,7 @@ class TestGetConnectionInterface:
|
|
648
648
|
"""Setup sync client for testing"""
|
649
649
|
client = Client()
|
650
650
|
host, port, user, password, database = online_config.get_connection_params()
|
651
|
-
client.connect(host, port, user, password, database)
|
651
|
+
client.connect(host=host, port=port, user=user, password=password, database=database)
|
652
652
|
|
653
653
|
# Create test database and table
|
654
654
|
test_db = "get_conn_test"
|
@@ -758,7 +758,7 @@ class TestGetConnectionInterface:
|
|
758
758
|
"""Test basic usage of get_connection in async transaction"""
|
759
759
|
client = AsyncClient()
|
760
760
|
host, port, user, password, database = online_config.get_connection_params()
|
761
|
-
await client.connect(host, port, user, password, database)
|
761
|
+
await client.connect(host=host, port=port, user=user, password=password, database=database)
|
762
762
|
|
763
763
|
try:
|
764
764
|
# Create test database and table
|
@@ -869,7 +869,7 @@ class TestAsyncTransactionManagerConsistency:
|
|
869
869
|
"""Setup sync client for testing"""
|
870
870
|
client = Client()
|
871
871
|
host, port, user, password, database = online_config.get_connection_params()
|
872
|
-
client.connect(host, port, user, password, database)
|
872
|
+
client.connect(host=host, port=port, user=user, password=password, database=database)
|
873
873
|
|
874
874
|
# Create test database and table
|
875
875
|
test_db = "sync_async_consistency_test"
|
@@ -920,7 +920,7 @@ class TestAsyncTransactionManagerConsistency:
|
|
920
920
|
"""Setup async client for testing"""
|
921
921
|
client = AsyncClient()
|
922
922
|
host, port, user, password, database = online_config.get_connection_params()
|
923
|
-
await client.connect(host, port, user, password, database)
|
923
|
+
await client.connect(host=host, port=port, user=user, password=password, database=database)
|
924
924
|
|
925
925
|
# Create test database and table
|
926
926
|
test_db = "async_consistency_test"
|
@@ -30,7 +30,7 @@ class TestTransactionInsertMethods:
|
|
30
30
|
"""Setup sync client for testing"""
|
31
31
|
client = Client()
|
32
32
|
host, port, user, password, database = online_config.get_connection_params()
|
33
|
-
client.connect(host, port, user, password, database)
|
33
|
+
client.connect(host=host, port=port, user=user, password=password, database=database)
|
34
34
|
|
35
35
|
# Create test database
|
36
36
|
test_db = "sync_insert_test"
|
@@ -64,7 +64,7 @@ class TestTransactionInsertMethods:
|
|
64
64
|
"""Setup async client for testing"""
|
65
65
|
client = AsyncClient()
|
66
66
|
host, port, user, password, database = online_config.get_connection_params()
|
67
|
-
await client.connect(host, port, user, password, database)
|
67
|
+
await client.connect(host=host, port=port, user=user, password=password, database=database)
|
68
68
|
|
69
69
|
# Create test database
|
70
70
|
test_db = "async_insert_test"
|
@@ -30,7 +30,7 @@ class TestTransactionQueryMethods:
|
|
30
30
|
"""Setup sync client for testing"""
|
31
31
|
client = Client()
|
32
32
|
host, port, user, password, database = online_config.get_connection_params()
|
33
|
-
client.connect(host, port, user, password, database)
|
33
|
+
client.connect(host=host, port=port, user=user, password=password, database=database)
|
34
34
|
|
35
35
|
# Create test database
|
36
36
|
test_db = "sync_query_test"
|
@@ -74,7 +74,7 @@ class TestTransactionQueryMethods:
|
|
74
74
|
"""Setup async client for testing"""
|
75
75
|
client = AsyncClient()
|
76
76
|
host, port, user, password, database = online_config.get_connection_params()
|
77
|
-
await client.connect(host, port, user, password, database)
|
77
|
+
await client.connect(host=host, port=port, user=user, password=password, database=database)
|
78
78
|
|
79
79
|
# Create test database
|
80
80
|
test_db = "async_query_test"
|
@@ -71,7 +71,7 @@ class TestUnifiedFilterOnline(unittest.TestCase):
|
|
71
71
|
|
72
72
|
# Create client
|
73
73
|
cls.client = Client()
|
74
|
-
cls.client.connect(host, port, user, password, database)
|
74
|
+
cls.client.connect(host=host, port=port, user=user, password=password, database=database)
|
75
75
|
|
76
76
|
# Create test database
|
77
77
|
cls.test_db = "unified_filter_test"
|
File without changes
|
{matrixone_python_sdk-0.1.0.dist-info → matrixone_python_sdk-0.1.1.dist-info}/entry_points.txt
RENAMED
File without changes
|
{matrixone_python_sdk-0.1.0.dist-info → matrixone_python_sdk-0.1.1.dist-info}/licenses/LICENSE
RENAMED
File without changes
|
File without changes
|