dcs-sdk 1.5.6__py3-none-any.whl → 1.5.7__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.
@@ -475,7 +475,7 @@ class Sybase(ThreadedDatabase):
475
475
  username = self._args.get("user", None)
476
476
  password = self._args.get("password", None)
477
477
  driver = self._args.get("driver", None)
478
- max_query_timeout = 60 * 30 # 30 minutes
478
+ max_query_timeout = 60 * 5 # 5 minutes
479
479
 
480
480
  if self.dialect.sybase_driver_type.is_freetds:
481
481
  conn_dict = {
data_diff/utils.py CHANGED
@@ -629,6 +629,19 @@ def alphanums_to_numbers(s1: str, s2: str):
629
629
  return n1, n2
630
630
 
631
631
 
632
+ def _alphanum_as_int_for_cmp(s: str) -> Optional[int]:
633
+ """Interpret an alphanum string as base-10 int if it's purely numeric (optional leading minus).
634
+
635
+ Returns None if not purely numeric, in which case callers should fallback to alphanum base ordering.
636
+ """
637
+ if re.fullmatch(r"-?\d+", s):
638
+ try:
639
+ return int(s)
640
+ except ValueError:
641
+ return None
642
+ return None
643
+
644
+
632
645
  @attrs.define(frozen=True, eq=False, order=False, repr=False)
633
646
  class ArithAlphanumeric(ArithString):
634
647
  _str: str
@@ -682,20 +695,53 @@ class ArithAlphanumeric(ArithString):
682
695
 
683
696
  return NotImplemented
684
697
 
685
- def __ge__(self, other) -> bool:
686
- if not isinstance(other, type(self)):
687
- return NotImplemented
688
- return self._str >= other._str
689
-
690
698
  def __lt__(self, other) -> bool:
691
- if not isinstance(other, type(self)):
692
- return NotImplemented
693
- return self._str < other._str
699
+ if isinstance(other, ArithAlphanumeric):
700
+ return self._str < other._str
701
+ if isinstance(other, int):
702
+ v = _alphanum_as_int_for_cmp(self._str)
703
+ return (v if v is not None else alphanumToNumber(self._str)) < other
704
+ return NotImplemented
705
+
706
+ def __le__(self, other) -> bool:
707
+ if isinstance(other, ArithAlphanumeric):
708
+ return self._str <= other._str
709
+ if isinstance(other, int):
710
+ v = _alphanum_as_int_for_cmp(self._str)
711
+ return (v if v is not None else alphanumToNumber(self._str)) <= other
712
+ return NotImplemented
713
+
714
+ def __gt__(self, other) -> bool:
715
+ if isinstance(other, ArithAlphanumeric):
716
+ return self._str > other._str
717
+ if isinstance(other, int):
718
+ v = _alphanum_as_int_for_cmp(self._str)
719
+ return (v if v is not None else alphanumToNumber(self._str)) > other
720
+ return NotImplemented
721
+
722
+ def __ge__(self, other) -> bool:
723
+ if isinstance(other, ArithAlphanumeric):
724
+ return self._str >= other._str
725
+ if isinstance(other, int):
726
+ v = _alphanum_as_int_for_cmp(self._str)
727
+ return (v if v is not None else alphanumToNumber(self._str)) >= other
728
+ return NotImplemented
694
729
 
695
730
  def __eq__(self, other) -> bool:
696
- if not isinstance(other, type(self)):
697
- return NotImplemented
698
- return self._str == other._str
731
+ if isinstance(other, ArithAlphanumeric):
732
+ return self._str == other._str
733
+ if isinstance(other, int):
734
+ v = _alphanum_as_int_for_cmp(self._str)
735
+ return (v if v is not None else alphanumToNumber(self._str)) == other
736
+ return NotImplemented
737
+
738
+ def __ne__(self, other) -> bool:
739
+ if isinstance(other, ArithAlphanumeric):
740
+ return self._str != other._str
741
+ if isinstance(other, int):
742
+ v = _alphanum_as_int_for_cmp(self._str)
743
+ return (v if v is not None else alphanumToNumber(self._str)) != other
744
+ return NotImplemented
699
745
 
700
746
  def new(self, *args, **kw) -> Self:
701
747
  return type(self)(*args, **kw, max_len=self._max_len)
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.6"
15
+ __version__ = "1.5.7"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dcs-sdk
3
- Version: 1.5.6
3
+ Version: 1.5.7
4
4
  Summary: SDK for DataChecks
5
5
  Author: Waterdip Labs
6
6
  Author-email: hello@waterdip.ai
@@ -61,7 +61,7 @@ Requires-Dist: vertica-python (>=1.4.0) ; extra == "vertica" or extra == "all-db
61
61
  Description-Content-Type: text/markdown
62
62
 
63
63
  <h1 align="center">
64
- DCS SDK v1.5.6
64
+ DCS SDK v1.5.7
65
65
  </h1>
66
66
 
67
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=QUGol1uLZ2KfvcYZIBUNfkfEJ8JxPUnvaT9QJBS70FU,31250
21
+ data_diff/databases/sybase.py,sha256=ap_FWJk39ZM68y9c5B-luxlo-IgOXCi862HBh7MZutU,31248
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=AyFJF6oaam06AH4ZPI8pj63BiYojHoZTykjrdJCX2fI,20899
@@ -39,11 +39,11 @@ data_diff/query_utils.py,sha256=R7ZfRwcvv9Zf4zWXNln4tr_OxLmDI7CPmmCahYfHxlo,2101
39
39
  data_diff/schema.py,sha256=QoYSSB3k-svLXz680uRgsI4qjii8BFKOOQvheqtgEbs,2413
40
40
  data_diff/table_segment.py,sha256=SdBVHLndDWMuLLM9zuUbfyTXZtNQgXarVLOmQTUWCCY,23356
41
41
  data_diff/thread_utils.py,sha256=_692ERjnWfHKaZsLdg7CNfkKiRd66y7_kpgDwzntp44,3831
42
- data_diff/utils.py,sha256=ZieHmjARw9-gwpOAlq1KWX1HGEf8oWbFMq_cOwNA308,31546
42
+ data_diff/utils.py,sha256=ZSgK6utdYDWvnsYgl7sJQa6J3XK3T6xSB_BGdQVeK24,33457
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=w4A2kNS5X3tFX6emKhBSgCLahVomBlBGVM4ZyOge6-8,633
46
+ dcs_sdk/__version__.py,sha256=xvnvu6wSe7otkNeAkcLgPV0ELqT7G6RGaYllHIVN2Ts,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.6.dist-info/METADATA,sha256=u4KIEZPzBJJES9O_JuRsFh2Nlpy5UZ_U_0oW1lle944,6275
69
- dcs_sdk-1.5.6.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
70
- dcs_sdk-1.5.6.dist-info/entry_points.txt,sha256=zQtrZL7YuaKtt6WPwihCTV1BRXnqBkaY6zUGdYJbBSg,49
71
- dcs_sdk-1.5.6.dist-info/RECORD,,
68
+ dcs_sdk-1.5.7.dist-info/METADATA,sha256=eQ1wuGbpB6gmbCWfC5yrPLWWCJXRZYASpWt4IaBl97Q,6275
69
+ dcs_sdk-1.5.7.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
70
+ dcs_sdk-1.5.7.dist-info/entry_points.txt,sha256=zQtrZL7YuaKtt6WPwihCTV1BRXnqBkaY6zUGdYJbBSg,49
71
+ dcs_sdk-1.5.7.dist-info/RECORD,,