collate-data-diff 0.11.15__tar.gz → 0.11.16__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 (53) hide show
  1. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/PKG-INFO +1 -1
  2. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/mssql.py +17 -4
  3. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/pyproject.toml +1 -1
  4. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/LICENSE +0 -0
  5. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/README.md +0 -0
  6. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/__init__.py +0 -0
  7. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/__main__.py +0 -0
  8. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/abcs/__init__.py +0 -0
  9. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/abcs/compiler.py +0 -0
  10. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/abcs/database_types.py +0 -0
  11. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/cloud/__init__.py +0 -0
  12. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/cloud/data_source.py +0 -0
  13. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/cloud/datafold_api.py +0 -0
  14. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/config.py +0 -0
  15. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/__init__.py +0 -0
  16. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/_connect.py +0 -0
  17. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/base.py +0 -0
  18. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/bigquery.py +0 -0
  19. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/clickhouse.py +0 -0
  20. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/databricks.py +0 -0
  21. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/duckdb.py +0 -0
  22. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/mysql.py +0 -0
  23. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/oracle.py +0 -0
  24. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/postgresql.py +0 -0
  25. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/presto.py +0 -0
  26. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/redshift.py +0 -0
  27. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/snowflake.py +0 -0
  28. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/trino.py +0 -0
  29. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/databases/vertica.py +0 -0
  30. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/dbt.py +0 -0
  31. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/dbt_config_validators.py +0 -0
  32. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/dbt_parser.py +0 -0
  33. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/diff_tables.py +0 -0
  34. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/errors.py +0 -0
  35. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/format.py +0 -0
  36. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/hashdiff_tables.py +0 -0
  37. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/info_tree.py +0 -0
  38. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/joindiff_tables.py +0 -0
  39. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/lexicographic_space.py +0 -0
  40. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/parse_time.py +0 -0
  41. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/py.typed +0 -0
  42. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/queries/__init__.py +0 -0
  43. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/queries/api.py +0 -0
  44. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/queries/ast_classes.py +0 -0
  45. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/queries/base.py +0 -0
  46. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/queries/extras.py +0 -0
  47. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/query_utils.py +0 -0
  48. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/schema.py +0 -0
  49. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/table_segment.py +0 -0
  50. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/thread_utils.py +0 -0
  51. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/tracking.py +0 -0
  52. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/utils.py +0 -0
  53. {collate_data_diff-0.11.15 → collate_data_diff-0.11.16}/data_diff/version.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: collate-data-diff
3
- Version: 0.11.15
3
+ Version: 0.11.16
4
4
  Summary: Command-line tool and Python library to efficiently diff rows across two different databases.
5
5
  License: MIT
6
6
  License-File: LICENSE
@@ -28,6 +28,8 @@ from data_diff.abcs.database_types import (
28
28
  Time,
29
29
  )
30
30
 
31
+ DEFAULT_ODBC_DRIVER = "ODBC Driver 18 for SQL Server"
32
+
31
33
 
32
34
  @import_helper("mssql")
33
35
  def import_mssql():
@@ -174,12 +176,23 @@ class MsSQL(ThreadedDatabase):
174
176
  def __init__(self, host, port, user, password, *, database, thread_count, **kw) -> None:
175
177
  super().__init__(thread_count=thread_count)
176
178
 
179
+ # A separate keyword rather than `driver`: in a connection dict that name is
180
+ # already consumed by connect_with_dict as the *scheme*. Reading it off `kw`
181
+ # also covers the URI entry point, whose query params land there too.
182
+ odbc_driver = kw.pop("odbc_driver", None) or DEFAULT_ODBC_DRIVER
183
+
177
184
  args = dict(server=host, port=port, database=database, user=user, password=password, **kw)
178
185
  self._args = {k: v for k, v in args.items() if v is not None}
179
- self._args["driver"] = "{ODBC Driver 18 for SQL Server}"
180
-
181
- # TODO temp dev debug
182
- self._args["TrustServerCertificate"] = "yes"
186
+ # Only FreeTDS splits a `DOMAIN\user` login and negotiates NTLM. msodbcsql
187
+ # offers it as a SQL login name, which SQL Server rejects with 18456 - and a
188
+ # backslash is illegal in a SQL login, so such an account can only ever be a
189
+ # Windows one. Hard-coding the driver made domain accounts undiffable.
190
+ self._args["driver"] = "{%s}" % odbc_driver
191
+
192
+ # Kept as a default rather than removed: setups with self-signed certificates
193
+ # already depend on it, and dropping it fails them with
194
+ # "SSL Provider: certificate verify failed". Now overridable by the caller.
195
+ self._args.setdefault("TrustServerCertificate", "yes")
183
196
 
184
197
  try:
185
198
  self.default_database = self._args["database"]
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "collate-data-diff"
3
- version = "0.11.15"
3
+ version = "0.11.16"
4
4
  description = "Command-line tool and Python library to efficiently diff rows across two different databases."
5
5
  authors = ["Collate <info@getcollate.io>", "Datafold <data-diff@datafold.com>"]
6
6
  license = "MIT"