e6data-python-connector 2.3.9rc9__tar.gz → 2.3.9rc11__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 (77) hide show
  1. {e6data_python_connector-2.3.9rc9/e6data_python_connector.egg-info → e6data_python_connector-2.3.9rc11}/PKG-INFO +3 -3
  2. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/README.md +1 -1
  3. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/cluster_manager.py +1 -1
  4. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/e6data_grpc.py +22 -19
  5. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11/e6data_python_connector.egg-info}/PKG-INFO +3 -3
  6. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector.egg-info/requires.txt +1 -1
  7. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/setup.py +2 -2
  8. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/LICENSE +0 -0
  9. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/MANIFEST.in +0 -0
  10. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/__init__.py +0 -0
  11. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/cluster_server/__init__.py +0 -0
  12. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/cluster_server/cluster_pb2.py +0 -0
  13. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/cluster_server/cluster_pb2_grpc.py +0 -0
  14. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/common.py +0 -0
  15. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/constants.py +0 -0
  16. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/datainputstream.py +0 -0
  17. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/date_time_utils.py +0 -0
  18. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/dialect.py +0 -0
  19. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/e6x_vector/__init__.py +0 -0
  20. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/e6x_vector/constants.py +0 -0
  21. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/e6x_vector/ttypes.py +0 -0
  22. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/exceptions.py +0 -0
  23. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/server/QueryEngineService.py +0 -0
  24. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/server/__init__.py +0 -0
  25. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/server/constants.py +0 -0
  26. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/server/e6x_engine_pb2.py +0 -0
  27. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/server/e6x_engine_pb2.pyi +0 -0
  28. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/server/e6x_engine_pb2_grpc.py +0 -0
  29. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/server/ttypes.py +0 -0
  30. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/strategy.py +0 -0
  31. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector/typeId.py +0 -0
  32. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector.egg-info/SOURCES.txt +0 -0
  33. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector.egg-info/dependency_links.txt +0 -0
  34. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector.egg-info/entry_points.txt +0 -0
  35. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/e6data_python_connector.egg-info/top_level.txt +0 -0
  36. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/pyproject.toml +0 -0
  37. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/setup.cfg +0 -0
  38. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/__init__.py +0 -0
  39. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/analyze_38_nines.py +0 -0
  40. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/analyze_all_cases.py +0 -0
  41. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/analyze_binary.py +0 -0
  42. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/analyze_correct_value.py +0 -0
  43. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/analyze_fields.py +0 -0
  44. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/check_decimal_errors.py +0 -0
  45. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/cleanup_test_files.py +0 -0
  46. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/debug_38_nines.py +0 -0
  47. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/debug_binary.py +0 -0
  48. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/final_test.py +0 -0
  49. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/move_tests.py +0 -0
  50. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/quick_test.py +0 -0
  51. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_38_nines.py +0 -0
  52. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_all_decimal128_cases.py +0 -0
  53. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_cluster_manager_efficiency.py +0 -0
  54. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_cluster_manager_none_strategy.py +0 -0
  55. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_cluster_manager_strategy.py +0 -0
  56. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_comprehensive.py +0 -0
  57. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_current_implementation.py +0 -0
  58. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_decimal128_binary_parsing.py +0 -0
  59. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_decimal128_parsing.py +0 -0
  60. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_fix.py +0 -0
  61. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_improved_parsing.py +0 -0
  62. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_known_case.py +0 -0
  63. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_manual_analysis.py +0 -0
  64. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_mock_server.py +0 -0
  65. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_multiprocessing_fix.py +0 -0
  66. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_new_implementation.py +0 -0
  67. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_specific_binary.py +0 -0
  68. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_strategy.py +0 -0
  69. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_strategy_logic.py +0 -0
  70. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_strategy_persistence_fix.py +0 -0
  71. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_strategy_sharing_fix.py +0 -0
  72. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/test_user_binary_value.py +0 -0
  73. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/tests.py +0 -0
  74. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/tests_grpc.py +0 -0
  75. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/validate_decimal128.py +0 -0
  76. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/test/validate_implementation.py +0 -0
  77. {e6data_python_connector-2.3.9rc9 → e6data_python_connector-2.3.9rc11}/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.9rc9
3
+ Version: 2.3.9rc11
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.
@@ -24,7 +24,7 @@ Requires-Dist: python-dateutil==2.9.0.post0
24
24
  Requires-Dist: pycryptodome==3.19.1
25
25
  Requires-Dist: pytz==2024.1
26
26
  Requires-Dist: thrift==0.20.0
27
- Requires-Dist: grpcio==1.65.1
27
+ Requires-Dist: grpcio>=1.74.0
28
28
  Requires-Dist: grpcio-tools
29
29
  Dynamic: author
30
30
  Dynamic: author-email
@@ -38,7 +38,7 @@ Dynamic: summary
38
38
 
39
39
  # e6data Python Connector
40
40
 
41
- ![version](https://img.shields.io/badge/version-2.3.9.rc9-blue.svg)
41
+ ![version](https://img.shields.io/badge/version-2.3.9rc11-blue.svg)
42
42
 
43
43
  ## Introduction
44
44
 
@@ -1,6 +1,6 @@
1
1
  # e6data Python Connector
2
2
 
3
- ![version](https://img.shields.io/badge/version-2.3.9.rc9-blue.svg)
3
+ ![version](https://img.shields.io/badge/version-2.3.9rc11-blue.svg)
4
4
 
5
5
  ## Introduction
6
6
 
@@ -365,7 +365,7 @@ class ClusterManager:
365
365
  # Retrieve the current cluster status with strategy header
366
366
  try:
367
367
  current_status = self._try_cluster_request("status")
368
- except _InactiveRpcError:
368
+ except _InactiveRpcError as e:
369
369
  return False
370
370
  if current_status.status == 'suspended':
371
371
  # Send the resume request with strategy header
@@ -137,9 +137,18 @@ def _strategy_debug_log(message):
137
137
  print(f"[E6DATA_STRATEGY_DEBUG] {time.strftime('%Y-%m-%d %H:%M:%S')} - {message}")
138
138
 
139
139
 
140
+ def _get_normalised_strategy_with_validate(strategy):
141
+ if not strategy:
142
+ return False
143
+ # Normalize strategy to lowercase and validate
144
+ normalized_strategy = strategy.lower()
145
+ if normalized_strategy not in ['blue', 'green']:
146
+ return False
147
+ return normalized_strategy
148
+
149
+
140
150
  def _get_shared_strategy():
141
151
  """Get or create the shared strategy storage."""
142
- global _strategy_manager, _shared_strategy
143
152
  return _local_strategy_cache
144
153
 
145
154
 
@@ -158,11 +167,8 @@ def _get_active_strategy():
158
167
 
159
168
  def _set_active_strategy(strategy):
160
169
  """Set the active deployment strategy in shared memory."""
161
- if not strategy:
162
- return
163
- # Normalize strategy to lowercase and validate
164
- normalized_strategy = strategy.lower()
165
- if normalized_strategy not in ['blue', 'green']:
170
+ normalized_strategy = _get_normalised_strategy_with_validate(strategy)
171
+ if not normalized_strategy:
166
172
  return
167
173
 
168
174
  with _strategy_lock:
@@ -195,11 +201,8 @@ def _clear_strategy_cache():
195
201
 
196
202
  def _set_pending_strategy(strategy):
197
203
  """Set the pending strategy to be used for the next query."""
198
- if not strategy:
199
- return
200
- # Normalize strategy to lowercase and validate
201
- normalized_strategy = strategy.lower()
202
- if normalized_strategy not in ['blue', 'green']:
204
+ normalized_strategy = _get_normalised_strategy_with_validate(strategy)
205
+ if not normalized_strategy:
203
206
  return
204
207
 
205
208
  with _strategy_lock:
@@ -244,11 +247,8 @@ def _invalidate_all_sessions():
244
247
 
245
248
  def _register_query_strategy(query_id, strategy):
246
249
  """Register the strategy used for a specific query."""
247
- if not query_id or not strategy:
248
- return
249
- # Normalize strategy to lowercase and validate
250
- normalized_strategy = strategy.lower()
251
- if normalized_strategy not in ['blue', 'green']:
250
+ normalized_strategy = _get_normalised_strategy_with_validate(strategy)
251
+ if not normalized_strategy:
252
252
  return
253
253
 
254
254
  with _strategy_lock:
@@ -537,8 +537,9 @@ class Connection(object):
537
537
  # Check for new strategy in authenticate response
538
538
  if hasattr(authenticate_response, 'new_strategy') and authenticate_response.new_strategy:
539
539
  new_strategy = authenticate_response.new_strategy.lower()
540
- if new_strategy != active_strategy:
541
- _set_pending_strategy(new_strategy)
540
+ normalized_strategy = _get_normalised_strategy_with_validate(new_strategy)
541
+ if normalized_strategy and normalized_strategy != active_strategy:
542
+ _set_pending_strategy(normalized_strategy)
542
543
  _apply_pending_strategy()
543
544
  self._session_id = None
544
545
  self.close()
@@ -584,7 +585,8 @@ class Connection(object):
584
585
  # Check for new strategy in authenticate response
585
586
  if hasattr(authenticate_response, 'new_strategy') and authenticate_response.new_strategy:
586
587
  new_strategy = authenticate_response.new_strategy.lower()
587
- if new_strategy != strategy:
588
+ normalized_strategy = _get_normalised_strategy_with_validate(new_strategy)
589
+ if normalized_strategy and normalized_strategy != active_strategy:
588
590
  _set_pending_strategy(new_strategy)
589
591
  _apply_pending_strategy()
590
592
  self.close()
@@ -620,6 +622,7 @@ class Connection(object):
620
622
  cluster_uuid=self.cluster_name,
621
623
  timeout=self.grpc_auto_resume_timeout_seconds
622
624
  ).resume()
625
+ print('starus', status)
623
626
  if status:
624
627
  return self.get_session_id
625
628
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: e6data-python-connector
3
- Version: 2.3.9rc9
3
+ Version: 2.3.9rc11
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.
@@ -24,7 +24,7 @@ Requires-Dist: python-dateutil==2.9.0.post0
24
24
  Requires-Dist: pycryptodome==3.19.1
25
25
  Requires-Dist: pytz==2024.1
26
26
  Requires-Dist: thrift==0.20.0
27
- Requires-Dist: grpcio==1.65.1
27
+ Requires-Dist: grpcio>=1.74.0
28
28
  Requires-Dist: grpcio-tools
29
29
  Dynamic: author
30
30
  Dynamic: author-email
@@ -38,7 +38,7 @@ Dynamic: summary
38
38
 
39
39
  # e6data Python Connector
40
40
 
41
- ![version](https://img.shields.io/badge/version-2.3.9.rc9-blue.svg)
41
+ ![version](https://img.shields.io/badge/version-2.3.9rc11-blue.svg)
42
42
 
43
43
  ## Introduction
44
44
 
@@ -4,5 +4,5 @@ python-dateutil==2.9.0.post0
4
4
  pycryptodome==3.19.1
5
5
  pytz==2024.1
6
6
  thrift==0.20.0
7
- grpcio==1.65.1
7
+ grpcio>=1.74.0
8
8
  grpcio-tools
@@ -12,7 +12,7 @@
12
12
 
13
13
  import setuptools
14
14
 
15
- VERSION = (2, 3, 9, 'rc9')
15
+ VERSION = (2, 3, 9, 'rc11',)
16
16
 
17
17
 
18
18
  def get_long_desc():
@@ -49,7 +49,7 @@ setuptools.setup(
49
49
  'pycryptodome==3.19.1',
50
50
  'pytz==2024.1',
51
51
  'thrift==0.20.0',
52
- 'grpcio==1.65.1',
52
+ 'grpcio>=1.74.0',
53
53
  'grpcio-tools',
54
54
  ],
55
55
  classifiers=[