e6data-python-connector 2.3.14__tar.gz → 2.3.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.
- {e6data_python_connector-2.3.14/e6data_python_connector.egg-info → e6data_python_connector-2.3.15}/PKG-INFO +2 -2
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/README.md +1 -1
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/dialect.py +18 -1
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15/e6data_python_connector.egg-info}/PKG-INFO +2 -2
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/setup.py +1 -1
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_dialect_columns.py +32 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/LICENSE +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/MANIFEST.in +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/__init__.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/cluster_manager.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/cluster_server/__init__.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/cluster_server/cluster_pb2.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/cluster_server/cluster_pb2_grpc.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/common.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/connection_pool.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/constants.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/datainputstream.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/date_time_utils.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/e6data_grpc.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/e6x_vector/__init__.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/e6x_vector/constants.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/e6x_vector/ttypes.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/exceptions.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/server/QueryEngineService.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/server/__init__.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/server/constants.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/server/e6x_engine_pb2.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/server/e6x_engine_pb2.pyi +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/server/e6x_engine_pb2_grpc.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/server/ttypes.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/strategy.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/typeId.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector.egg-info/SOURCES.txt +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector.egg-info/dependency_links.txt +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector.egg-info/entry_points.txt +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector.egg-info/requires.txt +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector.egg-info/top_level.txt +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/gen-py/__init__.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/gen-py/e6x_vector/__init__.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/gen-py/e6x_vector/constants.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/gen-py/e6x_vector/ttypes.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/pyproject.toml +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/setup.cfg +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/__init__.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/analyze_38_nines.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/analyze_all_cases.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/analyze_binary.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/analyze_correct_value.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/analyze_fields.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/check_decimal_errors.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/cleanup_test_files.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/debug_38_nines.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/debug_binary.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/final_test.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/move_tests.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/quick_test.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_38_nines.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_all_decimal128_cases.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_cluster_manager_efficiency.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_cluster_manager_none_strategy.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_cluster_manager_strategy.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_code_optimizations.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_comprehensive.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_connection_pool.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_connection_pool_e2e.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_current_implementation.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_decimal128_binary_parsing.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_decimal128_parsing.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_fix.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_improved_parsing.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_known_case.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_manual_analysis.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_mock_server.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_multiprocessing_fix.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_new_implementation.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_pool_concurrency_simple.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_pool_threading_multiprocessing.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_simple_connection_pool.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_specific_binary.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_strategy.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_strategy_logic.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_strategy_persistence_fix.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_strategy_sharing_fix.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_user_binary_value.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/tests.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/tests_grpc.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/validate_decimal128.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/validate_implementation.py +0 -0
- {e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/verify_decimal_fix.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: e6data-python-connector
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.15
|
|
4
4
|
Summary: Client for the e6data distributed SQL Engine.
|
|
5
5
|
Home-page: https://github.com/e6x-labs/e6data-python-connector
|
|
6
6
|
Author: e6data, Inc.
|
|
@@ -39,7 +39,7 @@ Dynamic: summary
|
|
|
39
39
|
|
|
40
40
|
# e6data Python Connector
|
|
41
41
|
|
|
42
|
-

|
|
43
43
|
|
|
44
44
|
## Introduction
|
|
45
45
|
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/dialect.py
RENAMED
|
@@ -148,6 +148,13 @@ _type_map = {
|
|
|
148
148
|
'struct': types.String,
|
|
149
149
|
'uniontype': types.String,
|
|
150
150
|
'decimal': E6dataDecimal,
|
|
151
|
+
'numeric': E6dataDecimal,
|
|
152
|
+
# aliases for the short type names the e6data engine actually emits
|
|
153
|
+
'int': types.Integer,
|
|
154
|
+
'long': types.BigInteger,
|
|
155
|
+
'short': types.SmallInteger,
|
|
156
|
+
'bool': types.Boolean,
|
|
157
|
+
'real': types.Float,
|
|
151
158
|
}
|
|
152
159
|
|
|
153
160
|
|
|
@@ -328,7 +335,17 @@ class E6dataDialect(default.DefaultDialect):
|
|
|
328
335
|
row = dict()
|
|
329
336
|
row["name"] = column.get('fieldName')
|
|
330
337
|
field_type = str(column.get('fieldType')).lower()
|
|
331
|
-
|
|
338
|
+
# Engine types may carry parameters: 'decimal(7,2)', 'varchar(16)',
|
|
339
|
+
# 'array<int>'. Strip them so the base type maps; otherwise the exact
|
|
340
|
+
# key lookup misses and the column silently defaults to String.
|
|
341
|
+
base_type = field_type.split('(', 1)[0].split('<', 1)[0].strip()
|
|
342
|
+
mapped = _type_map.get(base_type)
|
|
343
|
+
if mapped is None:
|
|
344
|
+
_logger.warning(
|
|
345
|
+
"e6data dialect: unmapped column type %r -> defaulting to String",
|
|
346
|
+
column.get('fieldType'))
|
|
347
|
+
mapped = types.String
|
|
348
|
+
row["type"] = mapped
|
|
332
349
|
rows.append(row)
|
|
333
350
|
return rows
|
|
334
351
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.2
|
|
2
2
|
Name: e6data-python-connector
|
|
3
|
-
Version: 2.3.
|
|
3
|
+
Version: 2.3.15
|
|
4
4
|
Summary: Client for the e6data distributed SQL Engine.
|
|
5
5
|
Home-page: https://github.com/e6x-labs/e6data-python-connector
|
|
6
6
|
Author: e6data, Inc.
|
|
@@ -39,7 +39,7 @@ Dynamic: summary
|
|
|
39
39
|
|
|
40
40
|
# e6data Python Connector
|
|
41
41
|
|
|
42
|
-

|
|
43
43
|
|
|
44
44
|
## Introduction
|
|
45
45
|
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_dialect_columns.py
RENAMED
|
@@ -82,5 +82,37 @@ class TestDialectGetColumns(unittest.TestCase):
|
|
|
82
82
|
self.assertIs(columns[0]["type"], types.String)
|
|
83
83
|
|
|
84
84
|
|
|
85
|
+
def test_get_columns_maps_engine_short_names_and_parameterized_types(self):
|
|
86
|
+
# The e6data engine emits short names ('int') and parameterized types
|
|
87
|
+
# ('decimal(7,2)', 'varchar(16)', 'array<int>'). These must resolve to the
|
|
88
|
+
# right SQLAlchemy type, not silently default to String.
|
|
89
|
+
client = FakeClient([
|
|
90
|
+
{"fieldName": "sk", "fieldType": "int"},
|
|
91
|
+
{"fieldName": "big", "fieldType": "long"},
|
|
92
|
+
{"fieldName": "small", "fieldType": "short"},
|
|
93
|
+
{"fieldName": "flag", "fieldType": "bool"},
|
|
94
|
+
{"fieldName": "price", "fieldType": "decimal(7,2)"},
|
|
95
|
+
{"fieldName": "name", "fieldType": "varchar(16)"},
|
|
96
|
+
{"fieldName": "code", "fieldType": "char(1)"},
|
|
97
|
+
{"fieldName": "tags", "fieldType": "array<int>"},
|
|
98
|
+
])
|
|
99
|
+
connection = FakeSQLAlchemyConnection(client)
|
|
100
|
+
dialect = E6dataDialect()
|
|
101
|
+
dialect.catalog_name = "lakehouse"
|
|
102
|
+
|
|
103
|
+
with patch.object(dialect_module, "Connection", FakeSQLAlchemyConnection):
|
|
104
|
+
columns = dialect.get_columns(connection, "items", "sales")
|
|
105
|
+
|
|
106
|
+
by_name = {c["name"]: c["type"] for c in columns}
|
|
107
|
+
self.assertIs(by_name["sk"], types.Integer)
|
|
108
|
+
self.assertIs(by_name["big"], types.BigInteger)
|
|
109
|
+
self.assertIs(by_name["small"], types.SmallInteger)
|
|
110
|
+
self.assertIs(by_name["flag"], types.Boolean)
|
|
111
|
+
self.assertIs(by_name["price"], E6dataDecimal)
|
|
112
|
+
self.assertIs(by_name["name"], types.String)
|
|
113
|
+
self.assertIs(by_name["code"], types.String)
|
|
114
|
+
self.assertIs(by_name["tags"], types.String) # complex type normalizes, not a miss
|
|
115
|
+
|
|
116
|
+
|
|
85
117
|
if __name__ == "__main__":
|
|
86
118
|
unittest.main()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/common.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/e6data_python_connector/typeId.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/gen-py/e6x_vector/__init__.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/gen-py/e6x_vector/constants.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/gen-py/e6x_vector/ttypes.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/analyze_correct_value.py
RENAMED
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/check_decimal_errors.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/cleanup_test_files.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_all_decimal128_cases.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_code_optimizations.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_comprehensive.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_connection_pool.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_connection_pool_e2e.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_decimal128_parsing.py
RENAMED
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_improved_parsing.py
RENAMED
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_manual_analysis.py
RENAMED
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_multiprocessing_fix.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_new_implementation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_specific_binary.py
RENAMED
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_strategy_logic.py
RENAMED
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_strategy_sharing_fix.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/test_user_binary_value.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/validate_decimal128.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/validate_implementation.py
RENAMED
|
File without changes
|
{e6data_python_connector-2.3.14 → e6data_python_connector-2.3.15}/test/verify_decimal_fix.py
RENAMED
|
File without changes
|