dcs-sdk 1.5.2__tar.gz → 1.5.4__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 (70) hide show
  1. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/PKG-INFO +5 -4
  2. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/README.md +1 -1
  3. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/sybase.py +9 -18
  4. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/__version__.py +1 -1
  5. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/pyproject.toml +4 -3
  6. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/__init__.py +0 -0
  7. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/__main__.py +0 -0
  8. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/abcs/__init__.py +0 -0
  9. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/abcs/compiler.py +0 -0
  10. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/abcs/database_types.py +0 -0
  11. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/config.py +0 -0
  12. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/__init__.py +0 -0
  13. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/_connect.py +0 -0
  14. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/base.py +0 -0
  15. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/bigquery.py +0 -0
  16. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/clickhouse.py +0 -0
  17. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/databricks.py +0 -0
  18. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/duckdb.py +0 -0
  19. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/mssql.py +0 -0
  20. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/mysql.py +0 -0
  21. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/oracle.py +0 -0
  22. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/postgresql.py +0 -0
  23. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/presto.py +0 -0
  24. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/redshift.py +0 -0
  25. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/snowflake.py +0 -0
  26. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/trino.py +0 -0
  27. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/databases/vertica.py +0 -0
  28. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/diff_tables.py +0 -0
  29. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/errors.py +0 -0
  30. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/format.py +0 -0
  31. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/hashdiff_tables.py +0 -0
  32. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/info_tree.py +0 -0
  33. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/joindiff_tables.py +0 -0
  34. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/lexicographic_space.py +0 -0
  35. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/parse_time.py +0 -0
  36. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/py.typed +0 -0
  37. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/queries/__init__.py +0 -0
  38. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/queries/api.py +0 -0
  39. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/queries/ast_classes.py +0 -0
  40. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/queries/base.py +0 -0
  41. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/queries/extras.py +0 -0
  42. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/query_utils.py +0 -0
  43. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/schema.py +0 -0
  44. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/table_segment.py +0 -0
  45. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/thread_utils.py +0 -0
  46. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/utils.py +0 -0
  47. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/data_diff/version.py +0 -0
  48. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/__init__.py +0 -0
  49. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/__main__.py +0 -0
  50. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/cli/__init__.py +0 -0
  51. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/cli/cli.py +0 -0
  52. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/__init__.py +0 -0
  53. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/config/__init__.py +0 -0
  54. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/config/config_loader.py +0 -0
  55. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/data_diff/__init__.py +0 -0
  56. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/data_diff/data_differ.py +0 -0
  57. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/rules/__init__.py +0 -0
  58. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/rules/rules_mappping.py +0 -0
  59. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/rules/rules_repository.py +0 -0
  60. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/rules/schema_rules.py +0 -0
  61. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/utils/__init__.py +0 -0
  62. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/utils/serializer.py +0 -0
  63. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/utils/similarity_score/__init__.py +0 -0
  64. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/utils/similarity_score/base_provider.py +0 -0
  65. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/utils/similarity_score/cosine_similarity_provider.py +0 -0
  66. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/utils/similarity_score/jaccard_provider.py +0 -0
  67. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/utils/similarity_score/levenshtein_distance_provider.py +0 -0
  68. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/utils/table.py +0 -0
  69. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/utils/themes.py +0 -0
  70. {dcs_sdk-1.5.2 → dcs_sdk-1.5.4}/dcs_sdk/sdk/utils/utils.py +0 -0
@@ -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
@@ -1,5 +1,5 @@
1
1
  <h1 align="center">
2
- DCS SDK v1.5.2
2
+ DCS SDK v1.5.4
3
3
  </h1>
4
4
 
5
5
  > SDK for DataChecks
@@ -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
@@ -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
  [tool.poetry]
2
2
  name = "dcs-sdk"
3
- version = "1.5.2"
3
+ version = "1.5.4"
4
4
  description = "SDK for DataChecks"
5
5
  authors = ["Waterdip Labs <hello@waterdip.ai>"]
6
6
  readme = "README.md"
@@ -28,14 +28,14 @@ keyring = ">=25.3.0"
28
28
  tabulate = ">=0.9.0"
29
29
  preql = {version=">=0.2.19", optional=true}
30
30
  vertica-python = {version=">=1.4.0", optional=true}
31
- urllib3 = "<2"
31
+ urllib3 = ">=2.5.0"
32
32
  oracledb = {version = ">=2.4.1", optional=true}
33
33
  pyodbc = {version=">=4.0.39", optional=true}
34
34
  typing-extensions = ">=4.0.1"
35
35
  attrs = ">=23.1.0"
36
36
  mashumaro = {version = ">=2.9,<3.11.0", extras = ["msgpack"]}
37
37
  pyyaml = "^6.0.1"
38
- requests = "^2.32.3"
38
+ requests = ">=2.32.4"
39
39
  packaging = "^24.1"
40
40
  python-dotenv = "^1.0.1"
41
41
  databricks-sql-connector = "^3.3.0"
@@ -43,6 +43,7 @@ nltk = "^3.9.1"
43
43
  impyla = {version="^0.20.0", optional=true}
44
44
  google-cloud-bigquery = "^3.31.0"
45
45
  loguru = "0.7.2"
46
+ protobuf = ">=5.29.5"
46
47
 
47
48
  [tool.poetry.dev-dependencies]
48
49
  parameterized = ">=0.9.0"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes