dcs-sdk 1.5.2__py3-none-any.whl → 1.5.4__py3-none-any.whl

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.
@@ -299,7 +299,8 @@ class Dialect(BaseDialect):
299
299
  return timestamp_str
300
300
 
301
301
  def normalize_number(self, value: str, coltype: FractionalType) -> str:
302
- return self.to_string(f"CAST({value} AS DECIMAL(38, {coltype.precision}))")
302
+ scale = getattr(coltype, "scale", 0) or 0
303
+ return self.to_string(f"CAST({value} AS DECIMAL(38, {scale}))")
303
304
 
304
305
  # def md5_as_int(self, s: str) -> str:
305
306
  # """Returns an MD5 hash of the input string as an integer for Sybase IQ."""
@@ -344,7 +345,7 @@ class Dialect(BaseDialect):
344
345
 
345
346
  def md5_as_int(self, s: str) -> str:
346
347
  if self.sybase_driver_type.is_ase or self.query_config_for_free_tds["ase_query_chosen"]:
347
- return f"CAST(HEXTOINT(LEFT(CAST(HASH({s}, 'MD5') AS VARCHAR(32)), 8)) AS BIGINT) - 140737488355327"
348
+ return f"CAST(HEXTOINT(LEFT(CAST(HASH({s}, 'MD5') AS VARCHAR(32)), 8)) AS BIGINT) % 2147483647"
348
349
  base_prime = self.get_unique_prime_for_column(s)
349
350
  separator = " +\n "
350
351
  parts = [f"LENGTH(COALESCE({s}, '')) * {base_prime}"]
@@ -474,7 +475,7 @@ class Sybase(ThreadedDatabase):
474
475
  username = self._args.get("user", None)
475
476
  password = self._args.get("password", None)
476
477
  driver = self._args.get("driver", None)
477
- max_query_timeout = 60 * 5 # 300 seconds
478
+ max_query_timeout = 60 * 30 # 30 minutes
478
479
 
479
480
  if self.dialect.sybase_driver_type.is_freetds:
480
481
  conn_dict = {
@@ -488,10 +489,10 @@ class Sybase(ThreadedDatabase):
488
489
 
489
490
  conn_dict["host"] = host or server
490
491
  try:
491
- logger.debug(f"Attempting FreeTDS connection with config: {conn_dict}")
492
+ logger.debug("Attempting FreeTDS connection..")
492
493
  self._conn = self._sybase.connect(**conn_dict)
493
494
  self._conn.timeout = max_query_timeout
494
- logger.info(f"Successfully connected to Sybase using FreeTDS: {conn_dict}")
495
+ logger.info("Successfully connected to Sybase using FreeTDS")
495
496
  return self._conn
496
497
  except Exception as e:
497
498
  error_msg = f"Failed to connect to Sybase with FreeTDS: {str(e)}"
@@ -565,23 +566,13 @@ class Sybase(ThreadedDatabase):
565
566
  final_config.update(ase_config)
566
567
 
567
568
  try:
568
- logger.debug(f"Attempting connection with config: {final_config}")
569
+ logger.debug(f"Attempting connection..")
569
570
  self._conn = self._sybase.connect(**final_config)
570
571
  self._conn.timeout = max_query_timeout
571
- logger.info(
572
- f"Successfully connected to Sybase using: "
573
- f"driver={driver}, "
574
- f"{attempt['key']}={attempt['value']}, "
575
- f"port_config={port_config}, "
576
- f"ase_config={ase_config}"
577
- )
572
+ logger.info(f"Successfully connected to Sybase using: driver={driver}")
578
573
  return self._conn
579
574
  except Exception as e:
580
- error_msg = (
581
- f"Failed with {attempt['key']}={attempt['value']}, "
582
- f"port_config={port_config}, "
583
- f"ase_config={ase_config}: {str(e)}"
584
- )
575
+ error_msg = "Failed to connect to sybase"
585
576
  logger.debug(error_msg)
586
577
  errors.append(error_msg)
587
578
  continue
dcs_sdk/__version__.py CHANGED
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- __version__ = "1.5.2"
15
+ __version__ = "1.5.4"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dcs-sdk
3
- Version: 1.5.2
3
+ Version: 1.5.4
4
4
  Summary: SDK for DataChecks
5
5
  Author: Waterdip Labs
6
6
  Author-email: hello@waterdip.ai
@@ -43,24 +43,25 @@ Requires-Dist: oracledb (>=2.4.1) ; extra == "oracle" or extra == "all-dbs"
43
43
  Requires-Dist: packaging (>=24.1,<25.0)
44
44
  Requires-Dist: preql (>=0.2.19) ; extra == "preql" or extra == "all-dbs"
45
45
  Requires-Dist: presto-python-client (>=0.8.4) ; extra == "presto" or extra == "all-dbs"
46
+ Requires-Dist: protobuf (>=5.29.5)
46
47
  Requires-Dist: psycopg2-binary (>=2.9.9,<3.0.0) ; extra == "postgresql" or extra == "redshift" or extra == "all-dbs"
47
48
  Requires-Dist: pydantic (>=1.10.12)
48
49
  Requires-Dist: pyodbc (>=4.0.39) ; extra == "mssql" or extra == "sybase" or extra == "all-dbs"
49
50
  Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
50
51
  Requires-Dist: pyyaml (>=6.0.1,<7.0.0)
51
- Requires-Dist: requests (>=2.32.3,<3.0.0)
52
+ Requires-Dist: requests (>=2.32.4)
52
53
  Requires-Dist: rich (>=13.8.0)
53
54
  Requires-Dist: snowflake-connector-python (>=3.13.1) ; extra == "snowflake" or extra == "all-dbs"
54
55
  Requires-Dist: tabulate (>=0.9.0)
55
56
  Requires-Dist: toml (>=0.10.2)
56
57
  Requires-Dist: trino (>=0.314.0) ; extra == "trino" or extra == "all-dbs"
57
58
  Requires-Dist: typing-extensions (>=4.0.1)
58
- Requires-Dist: urllib3 (<2)
59
+ Requires-Dist: urllib3 (>=2.5.0)
59
60
  Requires-Dist: vertica-python (>=1.4.0) ; extra == "vertica" or extra == "all-dbs"
60
61
  Description-Content-Type: text/markdown
61
62
 
62
63
  <h1 align="center">
63
- DCS SDK v1.5.2
64
+ DCS SDK v1.5.4
64
65
  </h1>
65
66
 
66
67
  > SDK for DataChecks
@@ -18,7 +18,7 @@ data_diff/databases/postgresql.py,sha256=QrvYDsMSECQiPfsl85UQxY9ivxTRXnEwjAfRjd-
18
18
  data_diff/databases/presto.py,sha256=1Z8iDV2pc35Bu7DuUerFuFLbrwgSHSkBYmJ72JlZSZ8,7116
19
19
  data_diff/databases/redshift.py,sha256=-gFWs3NCcevO4s6c4zV3_LYihK24fUd5BADTKahubjw,8122
20
20
  data_diff/databases/snowflake.py,sha256=7G6fvVJXOtTvXmSfWCxTslF4WohoscQoiqcmJIN684A,7910
21
- data_diff/databases/sybase.py,sha256=ALbOshD-AUctGUSbnjvomvOr767laShusZLQ2CbdwBk,31755
21
+ data_diff/databases/sybase.py,sha256=QUGol1uLZ2KfvcYZIBUNfkfEJ8JxPUnvaT9QJBS70FU,31250
22
22
  data_diff/databases/trino.py,sha256=VIN3gMJvT4oSYuXCJ1QnngVL2gjjEYMFw87QTHgjs8c,2328
23
23
  data_diff/databases/vertica.py,sha256=2dSDZp6qOEvUVPldI5Tgn7Sm3dCpC3vNXJL3qb3FDvQ,5529
24
24
  data_diff/diff_tables.py,sha256=Ey88gUr9Wh8UVsgRlBCY3CACIYfHL52PxJSrd821aqg,20060
@@ -43,7 +43,7 @@ data_diff/utils.py,sha256=8vbVbJvBSqtRfrzvQsz79qIAF2bHn1dnufijstDxddU,31345
43
43
  data_diff/version.py,sha256=Wk0ovyBlLEF2UaWLWEcVBLFElREtIxi7TU1hD3CuTFI,634
44
44
  dcs_sdk/__init__.py,sha256=RkfhRKLXEForLCs4rZkTf0qc_b0TokSggSAcKI4yfZg,610
45
45
  dcs_sdk/__main__.py,sha256=Qn8stIaQGrdLjHQ-H7xO0T-brtq5RWZoWU9QvqoarV8,683
46
- dcs_sdk/__version__.py,sha256=ur4j5jFCLbj-Uz1PP9-njMH7sK5x2XqdMEOJ9Hss4II,633
46
+ dcs_sdk/__version__.py,sha256=_DZDeYH_J9poBV0fFD1k1kQKGmlR3YXp5et_7jZLRxI,633
47
47
  dcs_sdk/cli/__init__.py,sha256=RkfhRKLXEForLCs4rZkTf0qc_b0TokSggSAcKI4yfZg,610
48
48
  dcs_sdk/cli/cli.py,sha256=LyrRk972OL9pTqrvBeXWBu5rUDAN17lQ1g8FdSRW_8M,4299
49
49
  dcs_sdk/sdk/__init__.py,sha256=skrZcgWWJBL6NXTUERywJ3qRJRemgpDXyW7lPg1FJk8,2107
@@ -65,7 +65,7 @@ dcs_sdk/sdk/utils/similarity_score/levenshtein_distance_provider.py,sha256=puAWP
65
65
  dcs_sdk/sdk/utils/table.py,sha256=X8HxdYTWyx_oVrBWPsXlmA-xJKXXDBW9RrhlWNqA1As,18224
66
66
  dcs_sdk/sdk/utils/themes.py,sha256=Meo2Yldv4uyPpEqI7qdA28Aa6sxtwUU1dLKKm4QavjM,1403
67
67
  dcs_sdk/sdk/utils/utils.py,sha256=vF2zAvgt__Y8limicWTEWRyn41SBVJN81ZCTBRy6hQg,11907
68
- dcs_sdk-1.5.2.dist-info/METADATA,sha256=syTw7DdLXdRz4qwJMlvRsoV30dsrHJofC6v5NlA3_qI,6221
69
- dcs_sdk-1.5.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
70
- dcs_sdk-1.5.2.dist-info/entry_points.txt,sha256=zQtrZL7YuaKtt6WPwihCTV1BRXnqBkaY6zUGdYJbBSg,49
71
- dcs_sdk-1.5.2.dist-info/RECORD,,
68
+ dcs_sdk-1.5.4.dist-info/METADATA,sha256=hHx-XDpD7cE-Ji6ud3o-7HGCNKHoHJmdSDEp3maormU,6254
69
+ dcs_sdk-1.5.4.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
70
+ dcs_sdk-1.5.4.dist-info/entry_points.txt,sha256=zQtrZL7YuaKtt6WPwihCTV1BRXnqBkaY6zUGdYJbBSg,49
71
+ dcs_sdk-1.5.4.dist-info/RECORD,,