matrixone-python-sdk 0.1.14__tar.gz → 0.1.15__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 (97) hide show
  1. {matrixone_python_sdk-0.1.14/matrixone_python_sdk.egg-info → matrixone_python_sdk-0.1.15}/PKG-INFO +1 -1
  2. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/async_client.py +13 -9
  3. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/client.py +20 -13
  4. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_ext/dialect.py +26 -1
  5. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15/matrixone_python_sdk.egg-info}/PKG-INFO +1 -1
  6. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/pyproject.toml +1 -1
  7. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/LICENSE +0 -0
  8. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/MANIFEST.in +0 -0
  9. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/README.md +0 -0
  10. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/README_USER.md +0 -0
  11. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_01_basic_connection.py +0 -0
  12. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_02_account_management.py +0 -0
  13. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_03_async_operations.py +0 -0
  14. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_04_transaction_management.py +0 -0
  15. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_05_snapshot_restore.py +0 -0
  16. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_06_sqlalchemy_integration.py +0 -0
  17. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_07_advanced_features.py +0 -0
  18. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_08_pubsub_operations.py +0 -0
  19. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_09_logger_integration.py +0 -0
  20. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_10_version_management.py +0 -0
  21. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_11_matrixone_version_demo.py +0 -0
  22. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_12_vector_basics.py +0 -0
  23. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_13_vector_indexes.py +0 -0
  24. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_14_vector_search.py +0 -0
  25. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_15_vector_advanced.py +0 -0
  26. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_18_snapshot_orm.py +0 -0
  27. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_19_sqlalchemy_style_orm.py +0 -0
  28. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_20_sqlalchemy_engine_integration.py +0 -0
  29. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_21_advanced_orm_features.py +0 -0
  30. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_22_unified_sql_builder.py +0 -0
  31. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_23_load_data_operations.py +0 -0
  32. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_24_query_update.py +0 -0
  33. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_25_metadata_operations.py +0 -0
  34. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_26_stage_operations.py +0 -0
  35. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_27_export_operations.py +0 -0
  36. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_28_sqlalchemy_select.py +0 -0
  37. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_29_complex_queries.py +0 -0
  38. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_30_with_snapshot_method.py +0 -0
  39. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_31_cdc_operations.py +0 -0
  40. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_32_branch_operations.py +0 -0
  41. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_33_ivf_rank_search.py +0 -0
  42. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_34_branch_diff_count.py +0 -0
  43. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_connection_hooks.py +0 -0
  44. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_dynamic_logging.py +0 -0
  45. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/examples/example_ivf_stats_complete.py +0 -0
  46. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/__init__.py +0 -0
  47. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/account.py +0 -0
  48. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/async_orm.py +0 -0
  49. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/base_client.py +0 -0
  50. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/branch.py +0 -0
  51. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/cdc.py +0 -0
  52. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/cli_tools.py +0 -0
  53. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/clone.py +0 -0
  54. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/config.py +0 -0
  55. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/connection_hooks.py +0 -0
  56. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/exceptions.py +0 -0
  57. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/export.py +0 -0
  58. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/fulltext_manager.py +0 -0
  59. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/index_utils.py +0 -0
  60. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/ivf_rank.py +0 -0
  61. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/load_data.py +0 -0
  62. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/logger.py +0 -0
  63. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/metadata.py +0 -0
  64. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/moctl.py +0 -0
  65. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/orm.py +0 -0
  66. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/pitr.py +0 -0
  67. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/pubsub.py +0 -0
  68. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/restore.py +0 -0
  69. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/search_vector_index.py +0 -0
  70. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/session.py +0 -0
  71. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/snapshot.py +0 -0
  72. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sql_builder.py +0 -0
  73. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_ext/__init__.py +0 -0
  74. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_ext/fulltext_index.py +0 -0
  75. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_ext/fulltext_search.py +0 -0
  76. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_ext/hnsw_config.py +0 -0
  77. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_ext/ivf_config.py +0 -0
  78. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_ext/json_functions.py +0 -0
  79. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_ext/json_type.py +0 -0
  80. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_ext/snapshot.py +0 -0
  81. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_ext/table_builder.py +0 -0
  82. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_ext/vector_index.py +0 -0
  83. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_ext/vector_type.py +0 -0
  84. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/sqlalchemy_select.py +0 -0
  85. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/stage.py +0 -0
  86. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/vector_manager.py +0 -0
  87. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone/version.py +0 -0
  88. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone_python_sdk.egg-info/SOURCES.txt +0 -0
  89. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone_python_sdk.egg-info/dependency_links.txt +0 -0
  90. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone_python_sdk.egg-info/entry_points.txt +0 -0
  91. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone_python_sdk.egg-info/not-zip-safe +0 -0
  92. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone_python_sdk.egg-info/requires.txt +0 -0
  93. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/matrixone_python_sdk.egg-info/top_level.txt +0 -0
  94. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/mo_diag.py +0 -0
  95. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/requirements.txt +0 -0
  96. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/setup.cfg +0 -0
  97. {matrixone_python_sdk-0.1.14 → matrixone_python_sdk-0.1.15}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: matrixone-python-sdk
3
- Version: 0.1.14
3
+ Version: 0.1.15
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
@@ -23,11 +23,13 @@ except ImportError:
23
23
 
24
24
  try:
25
25
  from sqlalchemy import text
26
+ from sqlalchemy.engine import URL
26
27
  from sqlalchemy.ext.asyncio import AsyncEngine, create_async_engine
27
28
  except ImportError:
28
29
  create_async_engine = None
29
30
  AsyncEngine = None
30
31
  text = None
32
+ URL = None
31
33
 
32
34
  from contextlib import asynccontextmanager
33
35
  from datetime import datetime
@@ -862,19 +864,21 @@ class AsyncClient(BaseMatrixOneClient):
862
864
  if not create_async_engine:
863
865
  raise ConnectionError("SQLAlchemy async engine not available. Please install sqlalchemy[asyncio]")
864
866
 
865
- # Build connection string for async engine
866
- connection_string = (
867
- f"mysql+aiomysql://{self._connection_params['user']}:"
868
- f"{self._connection_params['password']}@"
869
- f"{self._connection_params['host']}:"
870
- f"{self._connection_params['port']}/"
871
- f"{self._connection_params['database'] or ''}"
872
- f"?charset={self._connection_params['charset']}"
867
+ # Build connection URL using SQLAlchemy's URL.create() for proper escaping
868
+ # of special characters in user/password (e.g., @, #, %, etc.)
869
+ url = URL.create(
870
+ drivername="mysql+aiomysql",
871
+ username=self._connection_params["user"],
872
+ password=self._connection_params["password"],
873
+ host=self._connection_params["host"],
874
+ port=self._connection_params["port"],
875
+ database=self._connection_params["database"] or None,
876
+ query={"charset": self._connection_params["charset"]},
873
877
  )
874
878
 
875
879
  # Create async engine with connection pooling
876
880
  engine = create_async_engine(
877
- connection_string,
881
+ url,
878
882
  pool_size=5, # Smaller pool size for testing
879
883
  max_overflow=10, # Smaller max overflow
880
884
  pool_timeout=30, # Default pool timeout
@@ -25,7 +25,7 @@ if TYPE_CHECKING:
25
25
  from sqlalchemy.engine import Connection
26
26
 
27
27
  from sqlalchemy import create_engine
28
- from sqlalchemy.engine import Engine
28
+ from sqlalchemy.engine import Engine, URL
29
29
  from sqlalchemy.orm import Session as SQLAlchemySession
30
30
 
31
31
  from .account import AccountManager
@@ -548,27 +548,34 @@ class Client(BaseMatrixOneClient):
548
548
 
549
549
  def _create_engine(self) -> Engine:
550
550
  """Create SQLAlchemy engine with connection pooling"""
551
- # Build connection string
552
- connection_string = (
553
- f"mysql+pymysql://{self._connection_params['user']}:"
554
- f"{self._connection_params['password']}@"
555
- f"{self._connection_params['host']}:"
556
- f"{self._connection_params['port']}/"
557
- f"{self._connection_params['database']}"
551
+ # Build connection URL using SQLAlchemy's URL.create() for proper escaping
552
+ # of special characters in user/password (e.g., @, #, %, etc.)
553
+ connect_args = {}
554
+ if self._connection_params.get("ssl_ca"):
555
+ connect_args["ssl"] = {"ca": self._connection_params["ssl_ca"]}
556
+ if self._connection_params.get("ssl_cert"):
557
+ connect_args["ssl"]["cert"] = self._connection_params["ssl_cert"]
558
+ if self._connection_params.get("ssl_key"):
559
+ connect_args["ssl"]["key"] = self._connection_params["ssl_key"]
560
+
561
+ url = URL.create(
562
+ drivername="mysql+pymysql",
563
+ username=self._connection_params["user"],
564
+ password=self._connection_params["password"],
565
+ host=self._connection_params["host"],
566
+ port=self._connection_params["port"],
567
+ database=self._connection_params["database"] or None,
558
568
  )
559
569
 
560
- # Add SSL parameters if needed
561
- if "ssl_ca" in self._connection_params:
562
- connection_string += f"?ssl_ca={self._connection_params['ssl_ca']}"
563
-
564
570
  # Create engine with connection pooling
565
571
  engine = create_engine(
566
- connection_string,
572
+ url,
567
573
  pool_size=self.pool_size,
568
574
  max_overflow=self.max_overflow,
569
575
  pool_timeout=self.pool_timeout,
570
576
  pool_recycle=self.pool_recycle,
571
577
  pool_pre_ping=True, # Enable connection health checks
578
+ connect_args=connect_args,
572
579
  )
573
580
 
574
581
  # Replace the dialect with MatrixOne dialect for proper vector type support
@@ -17,7 +17,30 @@ MatrixOne SQLAlchemy dialect support.
17
17
  """
18
18
 
19
19
  import sqlalchemy
20
- from sqlalchemy.dialects.mysql.base import MySQLDialect
20
+ from sqlalchemy.dialects.mysql.base import MySQLDialect, ischema_names as mysql_ischema_names
21
+
22
+ from .vector_type import VectorType, VectorPrecision
23
+
24
+
25
+ class _Vecf32Type(VectorType):
26
+ """VectorType with f32 precision for ischema_names registration."""
27
+
28
+ def __init__(self, dimension=None):
29
+ super().__init__(dimension=dimension, precision=VectorPrecision.F32)
30
+
31
+
32
+ class _Vecf64Type(VectorType):
33
+ """VectorType with f64 precision for ischema_names registration."""
34
+
35
+ def __init__(self, dimension=None):
36
+ super().__init__(dimension=dimension, precision=VectorPrecision.F64)
37
+
38
+
39
+ # Extend MySQL's ischema_names with MatrixOne-specific types
40
+ _mo_ischema_names = mysql_ischema_names.copy()
41
+ _mo_ischema_names["vecf32"] = _Vecf32Type
42
+ _mo_ischema_names["vecf64"] = _Vecf64Type
43
+ _mo_ischema_names["bool"] = mysql_ischema_names["boolean"]
21
44
 
22
45
 
23
46
  class MatrixOneDialect(MySQLDialect):
@@ -62,6 +85,8 @@ class MatrixOneDialect(MySQLDialect):
62
85
  name = "matrixone"
63
86
  driver = "pymysql"
64
87
 
88
+ ischema_names = _mo_ischema_names
89
+
65
90
  def __init__(self, **kwargs):
66
91
  super().__init__(**kwargs)
67
92
  # Initialize missing MySQL dialect attributes
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: matrixone-python-sdk
3
- Version: 0.1.14
3
+ Version: 0.1.15
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "matrixone-python-sdk"
7
- version = "0.1.14"
7
+ version = "0.1.15"
8
8
  description = "A comprehensive Python SDK for MatrixOne database operations with vector search, fulltext search, and advanced features"
9
9
  readme = "README_USER.md"
10
10
  license = {text = "Apache-2.0"}