e6data-python-connector 2.3.10rc4__tar.gz → 2.3.10rc5__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.10rc4/e6data_python_connector.egg-info → e6data_python_connector-2.3.10rc5}/PKG-INFO +2 -2
  2. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/README.md +1 -1
  3. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/e6data_grpc.py +38 -21
  4. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5/e6data_python_connector.egg-info}/PKG-INFO +2 -2
  5. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/setup.py +1 -1
  6. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/LICENSE +0 -0
  7. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/MANIFEST.in +0 -0
  8. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/__init__.py +0 -0
  9. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/cluster_manager.py +0 -0
  10. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/cluster_server/__init__.py +0 -0
  11. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/cluster_server/cluster_pb2.py +0 -0
  12. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/cluster_server/cluster_pb2_grpc.py +0 -0
  13. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/common.py +0 -0
  14. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/constants.py +0 -0
  15. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/datainputstream.py +0 -0
  16. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/date_time_utils.py +0 -0
  17. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/dialect.py +0 -0
  18. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/e6x_vector/__init__.py +0 -0
  19. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/e6x_vector/constants.py +0 -0
  20. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/e6x_vector/ttypes.py +0 -0
  21. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/exceptions.py +0 -0
  22. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/server/QueryEngineService.py +0 -0
  23. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/server/__init__.py +0 -0
  24. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/server/constants.py +0 -0
  25. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/server/e6x_engine_pb2.py +0 -0
  26. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/server/e6x_engine_pb2.pyi +0 -0
  27. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/server/e6x_engine_pb2_grpc.py +0 -0
  28. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/server/ttypes.py +0 -0
  29. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/strategy.py +0 -0
  30. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector/typeId.py +0 -0
  31. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector.egg-info/SOURCES.txt +0 -0
  32. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector.egg-info/dependency_links.txt +0 -0
  33. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector.egg-info/entry_points.txt +0 -0
  34. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector.egg-info/requires.txt +0 -0
  35. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/e6data_python_connector.egg-info/top_level.txt +0 -0
  36. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/pyproject.toml +0 -0
  37. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/setup.cfg +0 -0
  38. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/__init__.py +0 -0
  39. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/analyze_38_nines.py +0 -0
  40. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/analyze_all_cases.py +0 -0
  41. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/analyze_binary.py +0 -0
  42. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/analyze_correct_value.py +0 -0
  43. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/analyze_fields.py +0 -0
  44. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/check_decimal_errors.py +0 -0
  45. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/cleanup_test_files.py +0 -0
  46. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/debug_38_nines.py +0 -0
  47. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/debug_binary.py +0 -0
  48. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/final_test.py +0 -0
  49. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/move_tests.py +0 -0
  50. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/quick_test.py +0 -0
  51. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_38_nines.py +0 -0
  52. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_all_decimal128_cases.py +0 -0
  53. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_cluster_manager_efficiency.py +0 -0
  54. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_cluster_manager_none_strategy.py +0 -0
  55. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_cluster_manager_strategy.py +0 -0
  56. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_comprehensive.py +0 -0
  57. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_current_implementation.py +0 -0
  58. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_decimal128_binary_parsing.py +0 -0
  59. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_decimal128_parsing.py +0 -0
  60. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_fix.py +0 -0
  61. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_improved_parsing.py +0 -0
  62. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_known_case.py +0 -0
  63. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_manual_analysis.py +0 -0
  64. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_mock_server.py +0 -0
  65. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_multiprocessing_fix.py +0 -0
  66. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_new_implementation.py +0 -0
  67. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_specific_binary.py +0 -0
  68. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_strategy.py +0 -0
  69. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_strategy_logic.py +0 -0
  70. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_strategy_persistence_fix.py +0 -0
  71. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_strategy_sharing_fix.py +0 -0
  72. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/test_user_binary_value.py +0 -0
  73. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/tests.py +0 -0
  74. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/tests_grpc.py +0 -0
  75. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/validate_decimal128.py +0 -0
  76. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/test/validate_implementation.py +0 -0
  77. {e6data_python_connector-2.3.10rc4 → e6data_python_connector-2.3.10rc5}/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.10rc4
3
+ Version: 2.3.10rc5
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.
@@ -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.10,rc4-blue.svg)
41
+ ![version](https://img.shields.io/badge/version-2.3.10,rc5-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.10,rc4-blue.svg)
3
+ ![version](https://img.shields.io/badge/version-2.3.10,rc5-blue.svg)
4
4
 
5
5
  ## Introduction
6
6
 
@@ -10,6 +10,7 @@ import datetime
10
10
  import re
11
11
  import sys
12
12
  import time
13
+ import uuid
13
14
  from decimal import Decimal
14
15
  from io import BytesIO
15
16
  from ssl import CERT_NONE, CERT_OPTIONAL, CERT_REQUIRED
@@ -135,10 +136,15 @@ STRATEGY_CACHE_TIMEOUT = 300
135
136
  # Global set to track debug-enabled connections
136
137
  _debug_connections = set()
137
138
 
138
- def _strategy_debug_log(message):
139
+ def _generate_trace_id():
140
+ """Generate a unique trace ID for tracking requests across a session."""
141
+ return str(uuid.uuid4())[:8] # Use first 8 characters for readability
142
+
143
+ def _strategy_debug_log(message, trace_id=None):
139
144
  """Log strategy debug messages if any connection has debug enabled."""
140
145
  if _debug_connections:
141
- _logger.debug(f"[E6DATA_STRATEGY_DEBUG] {time.strftime('%Y-%m-%d %H:%M:%S')} - {message}")
146
+ trace_info = f"[{trace_id}] " if trace_id else ""
147
+ _logger.debug(f"[E6DATA_STRATEGY_DEBUG] {time.strftime('%Y-%m-%d %H:%M:%S')} - {trace_info}{message}")
142
148
 
143
149
 
144
150
  def _get_shared_strategy():
@@ -304,7 +310,7 @@ def _get_strategy_debug_info():
304
310
  }
305
311
 
306
312
 
307
- def _get_grpc_header(engine_ip=None, cluster=None, strategy=None, session_id=None, request_type=None):
313
+ def _get_grpc_header(engine_ip=None, cluster=None, strategy=None, session_id=None, request_type=None, trace_id=None):
308
314
  """Generate gRPC metadata headers for the request."""
309
315
  # Use the strategy module's implementation
310
316
  headers = _get_strategy_header(engine_ip=engine_ip, cluster=cluster, strategy=strategy)
@@ -313,7 +319,7 @@ def _get_grpc_header(engine_ip=None, cluster=None, strategy=None, session_id=Non
313
319
  if _debug_connections:
314
320
  session_info = f", session: {session_id}" if session_id else ""
315
321
  request_info = f" [{request_type}]" if request_type else ""
316
- _strategy_debug_log(f"Sending headers{request_info}: strategy={strategy}, cluster={cluster}, engine_ip={engine_ip}{session_info}")
322
+ _strategy_debug_log(f"Sending headers{request_info}: strategy={strategy}, cluster={cluster}, engine_ip={engine_ip}{session_info}", trace_id)
317
323
 
318
324
  return headers
319
325
 
@@ -387,6 +393,7 @@ class Connection(object):
387
393
  self.cluster_name = cluster_name
388
394
  self._session_id = None
389
395
  self._session_strategy = None # Track which strategy was used for current session
396
+ self._trace_id = _generate_trace_id() # Generate trace ID for this connection
390
397
  self._host = host
391
398
  self._port = port
392
399
 
@@ -411,7 +418,7 @@ class Connection(object):
411
418
  self._debug = debug
412
419
  if self._debug:
413
420
  _debug_connections.add(id(self))
414
- _strategy_debug_log(f"Debug mode enabled for connection {id(self)}")
421
+ _strategy_debug_log(f"Debug mode enabled for connection {id(self)}", self._trace_id)
415
422
 
416
423
  self._create_client()
417
424
 
@@ -530,11 +537,11 @@ class Connection(object):
530
537
  # Check if session strategy matches current active strategy
531
538
  elif self._session_id and self._session_strategy and self._session_strategy != _get_active_strategy():
532
539
  # Session was created with different strategy, need to re-authenticate
533
- _strategy_debug_log(f"Session strategy mismatch: session {self._session_id} created with {self._session_strategy}, current active is {_get_active_strategy()}")
540
+ _strategy_debug_log(f"Session strategy mismatch: session {self._session_id} created with {self._session_strategy}, current active is {_get_active_strategy()}", self._trace_id)
534
541
  old_session_id = self._session_id
535
542
  self._session_id = None
536
543
  self._session_strategy = None
537
- _strategy_debug_log(f"Invalidating session {old_session_id} due to strategy mismatch")
544
+ _strategy_debug_log(f"Invalidating session {old_session_id} due to strategy mismatch", self._trace_id)
538
545
  self.close()
539
546
  self._create_client()
540
547
 
@@ -552,19 +559,22 @@ class Connection(object):
552
559
 
553
560
  if active_strategy and not pending_strategy:
554
561
  # Use cached strategy only if there's no pending strategy
555
- _strategy_debug_log(f"Authenticating with cached strategy: {active_strategy} (session: {self._session_id})")
562
+ _strategy_debug_log(f"Authenticating with cached strategy: {active_strategy} (session: {self._session_id})", self._trace_id)
556
563
  try:
557
564
  authenticate_response = self._client.authenticate(
558
565
  authenticate_request,
559
566
  metadata=_get_grpc_header(cluster=self.cluster_name, strategy=active_strategy,
560
- session_id=self._session_id, request_type="authenticate")
567
+ session_id=self._session_id, request_type="authenticate", trace_id=self._trace_id)
561
568
  )
562
569
  self._session_id = authenticate_response.sessionId
563
570
  if not self._session_id:
564
571
  raise ValueError("Invalid credentials.")
565
572
  # Track which strategy was used for this session
566
573
  self._session_strategy = active_strategy
567
- _strategy_debug_log(f"Authentication successful with strategy: {active_strategy}, session: {self._session_id}")
574
+ # Generate new trace ID for this authenticated session
575
+ old_trace_id = self._trace_id
576
+ self._trace_id = _generate_trace_id()
577
+ _strategy_debug_log(f"Authentication successful with strategy: {active_strategy}, session: {self._session_id}, new trace: {self._trace_id} (was: {old_trace_id})", self._trace_id)
568
578
  # Check for new strategy in authenticate response
569
579
  if hasattr(authenticate_response, 'new_strategy') and authenticate_response.new_strategy:
570
580
  new_strategy = authenticate_response.new_strategy.lower()
@@ -604,20 +614,23 @@ class Connection(object):
604
614
  _strategy_debug_log(f"No cached strategy, will try strategies in order: {strategies}")
605
615
  last_error = None
606
616
  for strategy in strategies:
607
- _strategy_debug_log(f"Attempting authentication with strategy: {strategy} (no session yet)")
617
+ _strategy_debug_log(f"Attempting authentication with strategy: {strategy} (no session yet)", self._trace_id)
608
618
  try:
609
619
  authenticate_response = self._client.authenticate(
610
620
  authenticate_request,
611
621
  metadata=_get_grpc_header(cluster=self.cluster_name, strategy=strategy,
612
- session_id=None, request_type="authenticate")
622
+ session_id=None, request_type="authenticate", trace_id=self._trace_id)
613
623
  )
614
624
  self._session_id = authenticate_response.sessionId
615
625
  if self._session_id:
616
626
  # Success! Cache this strategy
617
- _strategy_debug_log(f"Authentication successful with strategy: {strategy}, session: {self._session_id}")
618
627
  _set_active_strategy(strategy)
619
628
  # Track which strategy was used for this session
620
629
  self._session_strategy = strategy
630
+ # Generate new trace ID for this authenticated session
631
+ old_trace_id = self._trace_id
632
+ self._trace_id = _generate_trace_id()
633
+ _strategy_debug_log(f"Authentication successful with strategy: {strategy}, session: {self._session_id}, new trace: {self._trace_id} (was: {old_trace_id})", self._trace_id)
621
634
 
622
635
  # Check for new strategy in authenticate response
623
636
  if hasattr(authenticate_response, 'new_strategy') and authenticate_response.new_strategy:
@@ -706,6 +719,7 @@ class Connection(object):
706
719
  This method ensures that the gRPC channel is properly closed and the session ID is reset to None.
707
720
  """
708
721
  old_session = self._session_id
722
+ old_trace_id = self._trace_id
709
723
  if self._channel is not None:
710
724
  self._channel.close()
711
725
  self._channel = None
@@ -716,7 +730,10 @@ class Connection(object):
716
730
  if self._debug:
717
731
  _debug_connections.discard(id(self))
718
732
  session_info = f", session was: {old_session}" if old_session else ""
719
- _strategy_debug_log(f"Debug mode disabled for connection {id(self)}{session_info}")
733
+ _strategy_debug_log(f"Debug mode disabled for connection {id(self)}{session_info}, trace: {old_trace_id}", old_trace_id)
734
+
735
+ # Reset trace ID to None after connection close
736
+ self._trace_id = None
720
737
 
721
738
  def check_connection(self):
722
739
  """
@@ -780,7 +797,7 @@ class Connection(object):
780
797
  clear_response = self._client.clear(
781
798
  clear_request,
782
799
  metadata=_get_grpc_header(engine_ip=engine_ip, cluster=self.cluster_name, strategy=_get_active_strategy(),
783
- session_id=self.connection.get_session_id, request_type="clear")
800
+ session_id=self.connection.get_session_id, request_type="clear", trace_id=self.connection._trace_id)
784
801
  )
785
802
 
786
803
  # Check for new strategy in clear response
@@ -812,7 +829,7 @@ class Connection(object):
812
829
  cancel_response = self._client.cancelQuery(
813
830
  cancel_query_request,
814
831
  metadata=_get_grpc_header(engine_ip=engine_ip, cluster=self.cluster_name, strategy=_get_active_strategy(),
815
- session_id=self._session_id, request_type="query_cancel")
832
+ session_id=self._session_id, request_type="query_cancel", trace_id=self._trace_id)
816
833
  )
817
834
 
818
835
  # Check for new strategy in cancel response
@@ -837,7 +854,7 @@ class Connection(object):
837
854
  dry_run_response = self._client.dryRun(
838
855
  dry_run_request,
839
856
  metadata=_get_grpc_header(cluster=self.cluster_name, strategy=_get_active_strategy(),
840
- session_id=self.get_session_id, request_type="dry_run")
857
+ session_id=self.get_session_id, request_type="dry_run", trace_id=self._trace_id)
841
858
  )
842
859
  return dry_run_response.dryrunValue
843
860
 
@@ -860,7 +877,7 @@ class Connection(object):
860
877
  get_table_response = self._client.getTablesV2(
861
878
  get_table_request,
862
879
  metadata=_get_grpc_header(cluster=self.cluster_name, strategy=_get_active_strategy(),
863
- session_id=self.get_session_id, request_type="get_tables")
880
+ session_id=self.get_session_id, request_type="get_tables", trace_id=self._trace_id)
864
881
  )
865
882
 
866
883
  # Check for new strategy in get tables response
@@ -889,7 +906,7 @@ class Connection(object):
889
906
  get_columns_response = self._client.getColumnsV2(
890
907
  get_columns_request,
891
908
  metadata=_get_grpc_header(cluster=self.cluster_name, strategy=_get_active_strategy(),
892
- session_id=self.get_session_id, request_type="get_columns")
909
+ session_id=self.get_session_id, request_type="get_columns", trace_id=self._trace_id)
893
910
  )
894
911
 
895
912
  # Check for new strategy in get columns response
@@ -914,7 +931,7 @@ class Connection(object):
914
931
  get_schema_response = self._client.getSchemaNamesV2(
915
932
  get_schema_request,
916
933
  metadata=_get_grpc_header(cluster=self.cluster_name, strategy=_get_active_strategy(),
917
- session_id=self.get_session_id, request_type="get_schema")
934
+ session_id=self.get_session_id, request_type="get_schema", trace_id=self._trace_id)
918
935
  )
919
936
 
920
937
  # Check for new strategy in get schema names response
@@ -1020,7 +1037,7 @@ class Cursor(DBAPICursor):
1020
1037
  else:
1021
1038
  strategy = _get_active_strategy()
1022
1039
  return _get_grpc_header(engine_ip=self._engine_ip, cluster=self.connection.cluster_name, strategy=strategy,
1023
- session_id=self.connection.get_session_id, request_type=request_type)
1040
+ session_id=self.connection.get_session_id, request_type=request_type, trace_id=self.connection._trace_id)
1024
1041
 
1025
1042
  @property
1026
1043
  def metadata(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: e6data-python-connector
3
- Version: 2.3.10rc4
3
+ Version: 2.3.10rc5
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.
@@ -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.10,rc4-blue.svg)
41
+ ![version](https://img.shields.io/badge/version-2.3.10,rc5-blue.svg)
42
42
 
43
43
  ## Introduction
44
44
 
@@ -12,7 +12,7 @@
12
12
 
13
13
  import setuptools
14
14
 
15
- VERSION = (2, 3, 10, 'rc4')
15
+ VERSION = (2, 3, 10, 'rc5')
16
16
 
17
17
 
18
18
  def get_long_desc():