e6data-python-connector 2.3.7rc2__tar.gz → 2.3.9rc1__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.7rc2/e6data_python_connector.egg-info → e6data_python_connector-2.3.9rc1}/PKG-INFO +51 -2
  2. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/README.md +50 -1
  3. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/e6data_grpc.py +11 -0
  4. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1/e6data_python_connector.egg-info}/PKG-INFO +51 -2
  5. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/setup.py +1 -1
  6. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/LICENSE +0 -0
  7. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/MANIFEST.in +0 -0
  8. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/__init__.py +0 -0
  9. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/cluster_manager.py +0 -0
  10. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/cluster_server/__init__.py +0 -0
  11. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/cluster_server/cluster_pb2.py +0 -0
  12. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/cluster_server/cluster_pb2_grpc.py +0 -0
  13. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/common.py +0 -0
  14. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/constants.py +0 -0
  15. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/datainputstream.py +0 -0
  16. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/date_time_utils.py +0 -0
  17. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/dialect.py +0 -0
  18. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/e6x_vector/__init__.py +0 -0
  19. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/e6x_vector/constants.py +0 -0
  20. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/e6x_vector/ttypes.py +0 -0
  21. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/exceptions.py +0 -0
  22. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/server/QueryEngineService.py +0 -0
  23. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/server/__init__.py +0 -0
  24. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/server/constants.py +0 -0
  25. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/server/e6x_engine_pb2.py +0 -0
  26. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/server/e6x_engine_pb2.pyi +0 -0
  27. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/server/e6x_engine_pb2_grpc.py +0 -0
  28. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/server/ttypes.py +0 -0
  29. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/strategy.py +0 -0
  30. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector/typeId.py +0 -0
  31. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector.egg-info/SOURCES.txt +0 -0
  32. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector.egg-info/dependency_links.txt +0 -0
  33. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector.egg-info/entry_points.txt +0 -0
  34. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector.egg-info/requires.txt +0 -0
  35. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/e6data_python_connector.egg-info/top_level.txt +0 -0
  36. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/pyproject.toml +0 -0
  37. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/setup.cfg +0 -0
  38. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/__init__.py +0 -0
  39. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/analyze_38_nines.py +0 -0
  40. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/analyze_all_cases.py +0 -0
  41. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/analyze_binary.py +0 -0
  42. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/analyze_correct_value.py +0 -0
  43. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/analyze_fields.py +0 -0
  44. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/check_decimal_errors.py +0 -0
  45. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/cleanup_test_files.py +0 -0
  46. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/debug_38_nines.py +0 -0
  47. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/debug_binary.py +0 -0
  48. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/final_test.py +0 -0
  49. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/move_tests.py +0 -0
  50. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/quick_test.py +0 -0
  51. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_38_nines.py +0 -0
  52. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_all_decimal128_cases.py +0 -0
  53. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_cluster_manager_efficiency.py +0 -0
  54. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_cluster_manager_none_strategy.py +0 -0
  55. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_cluster_manager_strategy.py +0 -0
  56. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_comprehensive.py +0 -0
  57. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_current_implementation.py +0 -0
  58. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_decimal128_binary_parsing.py +0 -0
  59. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_decimal128_parsing.py +0 -0
  60. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_fix.py +0 -0
  61. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_improved_parsing.py +0 -0
  62. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_known_case.py +0 -0
  63. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_manual_analysis.py +0 -0
  64. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_mock_server.py +0 -0
  65. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_multiprocessing_fix.py +0 -0
  66. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_new_implementation.py +0 -0
  67. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_specific_binary.py +0 -0
  68. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_strategy.py +0 -0
  69. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_strategy_logic.py +0 -0
  70. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_strategy_persistence_fix.py +0 -0
  71. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_strategy_sharing_fix.py +0 -0
  72. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/test_user_binary_value.py +0 -0
  73. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/tests.py +0 -0
  74. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/tests_grpc.py +0 -0
  75. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/validate_decimal128.py +0 -0
  76. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/test/validate_implementation.py +0 -0
  77. {e6data_python_connector-2.3.7rc2 → e6data_python_connector-2.3.9rc1}/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.7rc2
3
+ Version: 2.3.9rc1
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.7rc2-blue.svg)
41
+ ![version](https://img.shields.io/badge/version-2.3.9rc1-blue.svg)
42
42
 
43
43
  ## Introduction
44
44
 
@@ -93,6 +93,55 @@ conn = Connection(
93
93
  )
94
94
  ```
95
95
 
96
+ #### Connection Parameters
97
+
98
+ The `Connection` class supports the following parameters:
99
+
100
+ | Parameter | Type | Required | Default | Description |
101
+ |-----------|------|----------|---------|-------------|
102
+ | `host` | str | Yes | - | IP address or hostname of the e6data cluster |
103
+ | `port` | int | Yes | - | Port of the e6data engine (typically 80) |
104
+ | `username` | str | Yes | - | Your e6data Email ID |
105
+ | `password` | str | Yes | - | Access Token generated in the e6data console |
106
+ | `database` | str | No | None | Database to perform queries on |
107
+ | `catalog` | str | No | None | Catalog name |
108
+ | `cluster_name` | str | No | None | Name of the cluster for cluster-specific operations |
109
+ | `secure` | bool | No | False | Enable SSL/TLS for secure connections |
110
+ | `auto_resume` | bool | No | True | Automatically resume cluster if suspended |
111
+ | `grpc_options` | dict | No | None | Additional gRPC configuration options |
112
+
113
+ #### Secure Connection Example
114
+
115
+ To establish a secure connection using SSL/TLS:
116
+
117
+ ```python
118
+ conn = Connection(
119
+ host=host,
120
+ port=443, # Typically 443 for secure connections
121
+ username=username,
122
+ password=password,
123
+ database=database,
124
+ cluster_name='production-cluster',
125
+ secure=True # Enable SSL/TLS
126
+ )
127
+ ```
128
+
129
+ #### Cluster-Specific Connection
130
+
131
+ When working with multiple clusters, specify the cluster name:
132
+
133
+ ```python
134
+ conn = Connection(
135
+ host=host,
136
+ port=port,
137
+ username=username,
138
+ password=password,
139
+ database=database,
140
+ cluster_name='analytics-cluster-01', # Specify cluster name
141
+ secure=True
142
+ )
143
+ ```
144
+
96
145
  ### Perform a Queries & Get Results
97
146
 
98
147
  ```python
@@ -1,6 +1,6 @@
1
1
  # e6data Python Connector
2
2
 
3
- ![version](https://img.shields.io/badge/version-2.3.7rc2-blue.svg)
3
+ ![version](https://img.shields.io/badge/version-2.3.9rc1-blue.svg)
4
4
 
5
5
  ## Introduction
6
6
 
@@ -55,6 +55,55 @@ conn = Connection(
55
55
  )
56
56
  ```
57
57
 
58
+ #### Connection Parameters
59
+
60
+ The `Connection` class supports the following parameters:
61
+
62
+ | Parameter | Type | Required | Default | Description |
63
+ |-----------|------|----------|---------|-------------|
64
+ | `host` | str | Yes | - | IP address or hostname of the e6data cluster |
65
+ | `port` | int | Yes | - | Port of the e6data engine (typically 80) |
66
+ | `username` | str | Yes | - | Your e6data Email ID |
67
+ | `password` | str | Yes | - | Access Token generated in the e6data console |
68
+ | `database` | str | No | None | Database to perform queries on |
69
+ | `catalog` | str | No | None | Catalog name |
70
+ | `cluster_name` | str | No | None | Name of the cluster for cluster-specific operations |
71
+ | `secure` | bool | No | False | Enable SSL/TLS for secure connections |
72
+ | `auto_resume` | bool | No | True | Automatically resume cluster if suspended |
73
+ | `grpc_options` | dict | No | None | Additional gRPC configuration options |
74
+
75
+ #### Secure Connection Example
76
+
77
+ To establish a secure connection using SSL/TLS:
78
+
79
+ ```python
80
+ conn = Connection(
81
+ host=host,
82
+ port=443, # Typically 443 for secure connections
83
+ username=username,
84
+ password=password,
85
+ database=database,
86
+ cluster_name='production-cluster',
87
+ secure=True # Enable SSL/TLS
88
+ )
89
+ ```
90
+
91
+ #### Cluster-Specific Connection
92
+
93
+ When working with multiple clusters, specify the cluster name:
94
+
95
+ ```python
96
+ conn = Connection(
97
+ host=host,
98
+ port=port,
99
+ username=username,
100
+ password=password,
101
+ database=database,
102
+ cluster_name='analytics-cluster-01', # Specify cluster name
103
+ secure=True
104
+ )
105
+ ```
106
+
58
107
  ### Perform a Queries & Get Results
59
108
 
60
109
  ```python
@@ -7,6 +7,7 @@ from __future__ import absolute_import
7
7
  from __future__ import unicode_literals
8
8
 
9
9
  import datetime
10
+ import hashlib
10
11
  import re
11
12
  import sys
12
13
  import time
@@ -317,6 +318,7 @@ class Connection(object):
317
318
  cluster_name: str = None,
318
319
  secure: bool = False,
319
320
  auto_resume: bool = True,
321
+ scheme: str = 'e6data',
320
322
  grpc_options: dict = None,
321
323
  ):
322
324
  """
@@ -340,6 +342,8 @@ class Connection(object):
340
342
  Flag to use a secure channel for data transfer
341
343
  auto_resume: bool, Optional
342
344
  Flag to enable auto resume of the cluster before the query execution
345
+ scheme: string, Optional
346
+ e6data supported scheme
343
347
  grpc_options: dict, Optional
344
348
  Specify gRPC configuration
345
349
  - keepalive_timeout_ms: This parameter defines the time, in milliseconds, that a gRPC connection should remain idle before sending a keepalive ping to check if the connection is still alive.
@@ -377,6 +381,11 @@ class Connection(object):
377
381
  """
378
382
  self.grpc_auto_resume_timeout_seconds = self._grpc_options.pop('grpc_auto_resume_timeout_seconds')
379
383
  self._create_client()
384
+ """
385
+ generate a unique bas64 hash for the connection based on the host, port, username, and secure channel.
386
+ """
387
+
388
+ self._hash = str(datetime.datetime.now()) + '_hash'
380
389
 
381
390
  @property
382
391
  def _get_grpc_options(self):
@@ -575,6 +584,7 @@ class Connection(object):
575
584
  except _InactiveRpcError as e:
576
585
  if self._auto_resume:
577
586
  if e.code() == grpc.StatusCode.UNAVAILABLE and 'status: 503' in e.details():
587
+ print(self._hash, 'Auto Resuming cluster {}...'.format(self.cluster_name))
578
588
  status = ClusterManager(
579
589
  host=self._host,
580
590
  port=self._port,
@@ -584,6 +594,7 @@ class Connection(object):
584
594
  cluster_uuid=self.cluster_name,
585
595
  timeout=self.grpc_auto_resume_timeout_seconds
586
596
  ).resume()
597
+ print(self._hash, f'Cluster {self.cluster_name} resumed: {status}')
587
598
  if status:
588
599
  return self.get_session_id
589
600
  # authenticate_request = e6x_engine_pb2.AuthenticateRequest(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: e6data-python-connector
3
- Version: 2.3.7rc2
3
+ Version: 2.3.9rc1
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.7rc2-blue.svg)
41
+ ![version](https://img.shields.io/badge/version-2.3.9rc1-blue.svg)
42
42
 
43
43
  ## Introduction
44
44
 
@@ -93,6 +93,55 @@ conn = Connection(
93
93
  )
94
94
  ```
95
95
 
96
+ #### Connection Parameters
97
+
98
+ The `Connection` class supports the following parameters:
99
+
100
+ | Parameter | Type | Required | Default | Description |
101
+ |-----------|------|----------|---------|-------------|
102
+ | `host` | str | Yes | - | IP address or hostname of the e6data cluster |
103
+ | `port` | int | Yes | - | Port of the e6data engine (typically 80) |
104
+ | `username` | str | Yes | - | Your e6data Email ID |
105
+ | `password` | str | Yes | - | Access Token generated in the e6data console |
106
+ | `database` | str | No | None | Database to perform queries on |
107
+ | `catalog` | str | No | None | Catalog name |
108
+ | `cluster_name` | str | No | None | Name of the cluster for cluster-specific operations |
109
+ | `secure` | bool | No | False | Enable SSL/TLS for secure connections |
110
+ | `auto_resume` | bool | No | True | Automatically resume cluster if suspended |
111
+ | `grpc_options` | dict | No | None | Additional gRPC configuration options |
112
+
113
+ #### Secure Connection Example
114
+
115
+ To establish a secure connection using SSL/TLS:
116
+
117
+ ```python
118
+ conn = Connection(
119
+ host=host,
120
+ port=443, # Typically 443 for secure connections
121
+ username=username,
122
+ password=password,
123
+ database=database,
124
+ cluster_name='production-cluster',
125
+ secure=True # Enable SSL/TLS
126
+ )
127
+ ```
128
+
129
+ #### Cluster-Specific Connection
130
+
131
+ When working with multiple clusters, specify the cluster name:
132
+
133
+ ```python
134
+ conn = Connection(
135
+ host=host,
136
+ port=port,
137
+ username=username,
138
+ password=password,
139
+ database=database,
140
+ cluster_name='analytics-cluster-01', # Specify cluster name
141
+ secure=True
142
+ )
143
+ ```
144
+
96
145
  ### Perform a Queries & Get Results
97
146
 
98
147
  ```python
@@ -12,7 +12,7 @@
12
12
 
13
13
  import setuptools
14
14
 
15
- VERSION = (2, 3, 7, 'rc2')
15
+ VERSION = (2, 3, 9,'rc1')
16
16
 
17
17
 
18
18
  def get_long_desc():