e6data-python-connector 3.0.1rc4__tar.gz → 3.0.2__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 (125) hide show
  1. {e6data_python_connector-3.0.1rc4/e6data_python_connector.egg-info → e6data_python_connector-3.0.2}/PKG-INFO +1 -1
  2. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/datainputstream.py +11 -0
  3. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/e6data_grpc.py +8 -7
  4. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/e6x_vector/ttypes.py +3 -0
  5. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2/e6data_python_connector.egg-info}/PKG-INFO +1 -1
  6. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/setup.py +1 -1
  7. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/LICENSE +0 -0
  8. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/MANIFEST.in +0 -0
  9. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/README.md +0 -0
  10. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/__init__.py +0 -0
  11. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/aio.py +0 -0
  12. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/async_cluster_manager.py +0 -0
  13. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/async_connection.py +0 -0
  14. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/async_connection_pool.py +0 -0
  15. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/async_cursor.py +0 -0
  16. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/async_dialect.py +0 -0
  17. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/async_oauth.py +0 -0
  18. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/async_work.py +0 -0
  19. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/cluster_manager.py +0 -0
  20. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/cluster_server/__init__.py +0 -0
  21. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/cluster_server/cluster_pb2.py +0 -0
  22. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/cluster_server/cluster_pb2_grpc.py +0 -0
  23. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/common.py +0 -0
  24. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/connection_pool.py +0 -0
  25. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/constants.py +0 -0
  26. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/date_time_utils.py +0 -0
  27. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/dialect.py +0 -0
  28. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/e6x_vector/__init__.py +0 -0
  29. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/e6x_vector/constants.py +0 -0
  30. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/exceptions.py +0 -0
  31. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/oauth.py +0 -0
  32. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/oauth_cache.py +0 -0
  33. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/oauth_common.py +0 -0
  34. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/result_batch.py +0 -0
  35. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/result_decode.py +0 -0
  36. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/result_decode_worker.py +0 -0
  37. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/result_prefetch.py +0 -0
  38. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/server/QueryEngineService.py +0 -0
  39. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/server/__init__.py +0 -0
  40. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/server/constants.py +0 -0
  41. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/server/e6x_engine_pb2.py +0 -0
  42. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/server/e6x_engine_pb2.pyi +0 -0
  43. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/server/e6x_engine_pb2_grpc.py +0 -0
  44. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/server/ttypes.py +0 -0
  45. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/strategy.py +0 -0
  46. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector/typeId.py +0 -0
  47. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector.egg-info/SOURCES.txt +0 -0
  48. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector.egg-info/dependency_links.txt +0 -0
  49. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector.egg-info/entry_points.txt +0 -0
  50. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector.egg-info/requires.txt +0 -0
  51. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/e6data_python_connector.egg-info/top_level.txt +0 -0
  52. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/pyproject.toml +0 -0
  53. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/setup.cfg +0 -0
  54. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/__init__.py +0 -0
  55. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/analyze_38_nines.py +0 -0
  56. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/analyze_all_cases.py +0 -0
  57. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/analyze_binary.py +0 -0
  58. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/analyze_correct_value.py +0 -0
  59. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/analyze_fields.py +0 -0
  60. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/check_decimal_errors.py +0 -0
  61. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/cleanup_test_files.py +0 -0
  62. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/conftest.py +0 -0
  63. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/debug_38_nines.py +0 -0
  64. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/debug_binary.py +0 -0
  65. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/final_test.py +0 -0
  66. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/__init__.py +0 -0
  67. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/benchmark_preflight.py +0 -0
  68. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/benchmark_result_batch_v2.py +0 -0
  69. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/benchmark_sync_async.py +0 -0
  70. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/expiry_preflight.py +0 -0
  71. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/result_batch_benchmark_support.py +0 -0
  72. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/support.py +0 -0
  73. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/test_async_connection.py +0 -0
  74. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/test_async_pool.py +0 -0
  75. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/test_async_queries.py +0 -0
  76. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/test_async_resume.py +0 -0
  77. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/test_async_sqlalchemy.py +0 -0
  78. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/test_async_token_lifecycle.py +0 -0
  79. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/test_e2e_auth_boundary.py +0 -0
  80. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/test_e2e_oauth_continuation.py +0 -0
  81. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/test_e2e_readonly_matrix.py +0 -0
  82. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/test_result_batch_v2.py +0 -0
  83. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/test_shared_token_issuance.py +0 -0
  84. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/test_sync_oauth_lifecycle.py +0 -0
  85. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/integration/token_observation.py +0 -0
  86. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/move_tests.py +0 -0
  87. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/quick_test.py +0 -0
  88. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_38_nines.py +0 -0
  89. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_all_decimal128_cases.py +0 -0
  90. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_cluster_manager_efficiency.py +0 -0
  91. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_cluster_manager_none_strategy.py +0 -0
  92. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_cluster_manager_oauth.py +0 -0
  93. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_cluster_manager_strategy.py +0 -0
  94. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_code_optimizations.py +0 -0
  95. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_comprehensive.py +0 -0
  96. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_connection_pool.py +0 -0
  97. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_connection_pool_e2e.py +0 -0
  98. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_current_implementation.py +0 -0
  99. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_decimal128_binary_parsing.py +0 -0
  100. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_decimal128_parsing.py +0 -0
  101. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_dialect_columns.py +0 -0
  102. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_fix.py +0 -0
  103. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_improved_parsing.py +0 -0
  104. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_known_case.py +0 -0
  105. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_manual_analysis.py +0 -0
  106. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_mock_server.py +0 -0
  107. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_multiprocessing_fix.py +0 -0
  108. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_new_implementation.py +0 -0
  109. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_oauth_authentication.py +0 -0
  110. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_oauth_auto_resume.py +0 -0
  111. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_oauth_resume_integration.py +0 -0
  112. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_pool_concurrency_simple.py +0 -0
  113. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_pool_threading_multiprocessing.py +0 -0
  114. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_simple_connection_pool.py +0 -0
  115. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_specific_binary.py +0 -0
  116. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_strategy.py +0 -0
  117. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_strategy_logic.py +0 -0
  118. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_strategy_persistence_fix.py +0 -0
  119. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_strategy_sharing_fix.py +0 -0
  120. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/test_user_binary_value.py +0 -0
  121. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/tests.py +0 -0
  122. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/tests_grpc.py +0 -0
  123. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/validate_decimal128.py +0 -0
  124. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/validate_implementation.py +0 -0
  125. {e6data_python_connector-3.0.1rc4 → e6data_python_connector-3.0.2}/test/verify_decimal_fix.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: e6data-python-connector
3
- Version: 3.0.1rc4
3
+ Version: 3.0.2
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.
@@ -478,6 +478,8 @@ def read_values_from_array(query_columns_description: list, dis: DataInputStream
478
478
  try:
479
479
  if dtype == "LONG":
480
480
  value_array.append(dis.read_long())
481
+ elif dtype == "INTERVAL_DAY_SECOND":
482
+ value_array.append(timedelta(microseconds=dis.read_long()))
481
483
  elif dtype == "DATE":
482
484
  value_array.append(format_iso_date_from_epoch_micros(dis.read_long()))
483
485
  elif dtype == "DATETIME":
@@ -582,6 +584,15 @@ def get_column_from_chunk(vector: Vector, strict=False) -> list:
582
584
  continue
583
585
  value_array.append(vector.data.int64Data.data[
584
586
  row] if not vector.isConstantVector else vector.data.numericConstantData.data)
587
+ elif d_type == VectorType.INTERVAL_DAY_SECOND:
588
+ for row in range(vector.size):
589
+ if get_null(vector, row):
590
+ value_array.append(None)
591
+ continue
592
+ microseconds = (vector.data.int64Data.data[row]
593
+ if not vector.isConstantVector
594
+ else vector.data.numericConstantData.data)
595
+ value_array.append(timedelta(microseconds=microseconds))
585
596
  elif d_type == VectorType.DATE:
586
597
  # Use the JDBC-parity formatter so years > 9999 emit "+YYYYY-MM-DD"
587
598
  # instead of raising. Per-row try/except keeps a single bad value
@@ -521,17 +521,18 @@ class Connection(object):
521
521
  if enable_result_batch_v2:
522
522
  from .result_decode import validate_decode_runtime
523
523
  validate_decode_runtime()
524
- normalized = {}
525
- for key, value in (grpc_options or {}).items():
526
- key = key[5:] if key.startswith('grpc.') else key
527
- if key in normalized and normalized[key] != value:
528
- raise ValueError('Conflicting gRPC options after prefix normalization.')
529
- normalized[key] = value
524
+ normalized = {}
525
+ for key, value in (grpc_options or {}).items():
526
+ key = key[5:] if key.startswith('grpc.') else key
527
+ if key in normalized and normalized[key] != value:
528
+ raise ValueError('Conflicting gRPC options after prefix normalization.')
529
+ normalized[key] = value
530
+ grpc_options = normalized
531
+ if enable_result_batch_v2:
530
532
  limit = normalized.get('max_receive_message_length', -1)
531
533
  if isinstance(limit, bool) or not isinstance(limit, int) or (limit != -1 and limit <= 0):
532
534
  raise ValueError('V2 receive limit must be a positive integer or -1 for unlimited.')
533
535
  normalized['max_receive_message_length'] = limit
534
- grpc_options = normalized
535
536
  if enable_result_batch_v2 and grpc_options is not None and 'grpc_prepare_timeout' in grpc_options:
536
537
  timeout = grpc_options['grpc_prepare_timeout']
537
538
  if (isinstance(timeout, bool) or not isinstance(timeout, (int, float))
@@ -35,6 +35,7 @@ class VectorType(object):
35
35
  NULL = 14
36
36
  TIMESTAMP_TZ = 15
37
37
  DECIMAL128 = 16
38
+ INTERVAL_DAY_SECOND = 17
38
39
 
39
40
  _VALUES_TO_NAMES = {
40
41
  0: "BINARY",
@@ -54,6 +55,7 @@ class VectorType(object):
54
55
  14: "NULL",
55
56
  15: "TIMESTAMP_TZ",
56
57
  16: "DECIMAL128",
58
+ 17: "INTERVAL_DAY_SECOND",
57
59
  }
58
60
 
59
61
  _NAMES_TO_VALUES = {
@@ -74,6 +76,7 @@ class VectorType(object):
74
76
  "NULL": 14,
75
77
  "TIMESTAMP_TZ": 15,
76
78
  "DECIMAL128": 16,
79
+ "INTERVAL_DAY_SECOND": 17,
77
80
  }
78
81
 
79
82
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: e6data-python-connector
3
- Version: 3.0.1rc4
3
+ Version: 3.0.2
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.
@@ -12,7 +12,7 @@
12
12
 
13
13
  import setuptools
14
14
 
15
- VERSION = (3, 0, '1rc4',)
15
+ VERSION = (3, 0, 2,)
16
16
 
17
17
 
18
18
  def get_long_desc():