salesforce-datacloud-connector 2.0.0__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 (43) hide show
  1. salesforce_datacloud_connector-2.0.0/.gitignore +136 -0
  2. salesforce_datacloud_connector-2.0.0/CHANGELOG.md +90 -0
  3. salesforce_datacloud_connector-2.0.0/PKG-INFO +544 -0
  4. salesforce_datacloud_connector-2.0.0/README.md +528 -0
  5. salesforce_datacloud_connector-2.0.0/pyproject.toml +58 -0
  6. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/__init__.py +321 -0
  7. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/_metadata_pg.py +358 -0
  8. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/api/__init__.py +1 -0
  9. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/api/client.py +521 -0
  10. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/api/models.py +334 -0
  11. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/auth/__init__.py +21 -0
  12. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/auth/_http.py +141 -0
  13. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/auth/direct_token.py +79 -0
  14. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/auth/oauth.py +475 -0
  15. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/auth/token_exchanger.py +210 -0
  16. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/connection.py +236 -0
  17. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/cursor.py +433 -0
  18. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/exceptions.py +165 -0
  19. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/http_options.py +57 -0
  20. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/metadata.py +80 -0
  21. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/sql/get_columns_query.sql +18 -0
  22. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/sql/get_tables_query.sql +19 -0
  23. salesforce_datacloud_connector-2.0.0/salesforce_datacloud_connector/types.py +298 -0
  24. salesforce_datacloud_connector-2.0.0/tests/__init__.py +1 -0
  25. salesforce_datacloud_connector-2.0.0/tests/_arrow_fixtures.py +79 -0
  26. salesforce_datacloud_connector-2.0.0/tests/_keys.py +14 -0
  27. salesforce_datacloud_connector-2.0.0/tests/test_api_client.py +1230 -0
  28. salesforce_datacloud_connector-2.0.0/tests/test_auth.py +445 -0
  29. salesforce_datacloud_connector-2.0.0/tests/test_auth_http.py +211 -0
  30. salesforce_datacloud_connector-2.0.0/tests/test_ci_configuration.py +176 -0
  31. salesforce_datacloud_connector-2.0.0/tests/test_connection.py +498 -0
  32. salesforce_datacloud_connector-2.0.0/tests/test_cursor.py +778 -0
  33. salesforce_datacloud_connector-2.0.0/tests/test_direct_token.py +80 -0
  34. salesforce_datacloud_connector-2.0.0/tests/test_e2e_offcore_smoke.py +244 -0
  35. salesforce_datacloud_connector-2.0.0/tests/test_e2e_real_datacloud.py +492 -0
  36. salesforce_datacloud_connector-2.0.0/tests/test_integration.py +764 -0
  37. salesforce_datacloud_connector-2.0.0/tests/test_jwt_and_http_options.py +201 -0
  38. salesforce_datacloud_connector-2.0.0/tests/test_metadata.py +44 -0
  39. salesforce_datacloud_connector-2.0.0/tests/test_metadata_pg.py +273 -0
  40. salesforce_datacloud_connector-2.0.0/tests/test_models.py +351 -0
  41. salesforce_datacloud_connector-2.0.0/tests/test_token_exchanger.py +739 -0
  42. salesforce_datacloud_connector-2.0.0/tests/test_types.py +248 -0
  43. salesforce_datacloud_connector-2.0.0/uv.lock +2632 -0
@@ -0,0 +1,136 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ .idea/
7
+
8
+ # C extensions
9
+ *.so
10
+
11
+ # Distribution / packaging
12
+ .Python
13
+ build/
14
+ develop-eggs/
15
+ dist/
16
+ downloads/
17
+ eggs/
18
+ .eggs/
19
+ lib/
20
+ lib64/
21
+ parts/
22
+ sdist/
23
+ var/
24
+ wheels/
25
+ pip-wheel-metadata/
26
+ share/python-wheels/
27
+ *.egg-info/
28
+ .installed.cfg
29
+ *.egg
30
+ MANIFEST
31
+
32
+ # PyInstaller
33
+ # Usually these files are written by a python script from a template
34
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
35
+ *.manifest
36
+ *.spec
37
+
38
+ # Installer logs
39
+ pip-log.txt
40
+ pip-delete-this-directory.txt
41
+
42
+ # Unit test / coverage reports
43
+ htmlcov/
44
+ .tox/
45
+ .nox/
46
+ .coverage
47
+ .coverage.*
48
+ .cache
49
+ nosetests.xml
50
+ coverage.xml
51
+ *.cover
52
+ *.py,cover
53
+ .hypothesis/
54
+ .pytest_cache/
55
+ .ruff_cache
56
+
57
+ # Translations
58
+ *.mo
59
+ *.pot
60
+
61
+ # Django stuff:
62
+ *.log
63
+ local_settings.py
64
+ db.sqlite3
65
+ db.sqlite3-journal
66
+
67
+ # Flask stuff:
68
+ instance/
69
+ .webassets-cache
70
+
71
+ # Scrapy stuff:
72
+ .scrapy
73
+
74
+ # Sphinx documentation
75
+ docs/_build/
76
+
77
+ # PyBuilder
78
+ target/
79
+
80
+ # Jupyter Notebook
81
+ .ipynb_checkpoints
82
+
83
+ # IPython
84
+ profile_default/
85
+ ipython_config.py
86
+
87
+ # pyenv
88
+ .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
98
+ __pypackages__/
99
+
100
+ # Celery stuff
101
+ celerybeat-schedule
102
+ celerybeat.pid
103
+
104
+ # SageMath parsed files
105
+ *.sage.py
106
+
107
+ # Environments
108
+ .env
109
+ .venv
110
+ env/
111
+ venv/
112
+ ENV/
113
+ env.bak/
114
+ venv.bak/
115
+
116
+ # Spyder project settings
117
+ .spyderproject
118
+ .spyproject
119
+
120
+ # Rope project settings
121
+ .ropeproject
122
+
123
+ # mkdocs documentation
124
+ /site
125
+
126
+ # mypy
127
+ .mypy_cache/
128
+ .dmypy.json
129
+ dmypy.json
130
+
131
+ # Pyre type checker
132
+ .pyre/
133
+
134
+ # Mac files
135
+ .DS_Store
136
+
@@ -0,0 +1,90 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [2.0.0](https://github.com/forcedotcom/salesforce-cdp-connector/compare/salesforce-datacloud-connector-2.0.0...salesforce-datacloud-connector-2.0.0) (2026-10-16)
9
+
10
+
11
+ ### Features
12
+
13
+ * **auth:** add Salesforce CLI authenticator for local/dev ([#63](https://github.com/forcedotcom/salesforce-cdp-connector/issues/63)) ([4706a87](https://github.com/forcedotcom/salesforce-cdp-connector/commit/4706a878ee53e6db3d1c4ca0e5601343a7a0d32f))
14
+ * **auth:** surface OAuth errors, retry token calls, refresh on 401, add cdp_token auth, harden JWT ([#70](https://github.com/forcedotcom/salesforce-cdp-connector/issues/70)) ([3f526c7](https://github.com/forcedotcom/salesforce-cdp-connector/commit/3f526c711206abb607eef927ecbda8dd71dce12b))
15
+ * **client:** send User-Agent header with optional caller identifier ([#67](https://github.com/forcedotcom/salesforce-cdp-connector/issues/67)) ([0dadc3b](https://github.com/forcedotcom/salesforce-cdp-connector/commit/0dadc3bc77261f402f311afed0469afbc0f90cc2))
16
+ * **threadsafety:** allow connections to be shared across threads ([#64](https://github.com/forcedotcom/salesforce-cdp-connector/issues/64)) ([62e2782](https://github.com/forcedotcom/salesforce-cdp-connector/commit/62e2782c7c2c0ee4c08278a62266151a2026bca9))
17
+
18
+ ## [Unreleased]
19
+
20
+ ### Added
21
+ - Query settings support: `connect(query_settings=...)` sets connection-wide
22
+ default query settings (e.g. `{"time_zone": "UTC"}`), and
23
+ `cursor.execute(operation, parameters, settings=...)` supplies or overrides
24
+ settings for a single query. Per-call settings take precedence over the
25
+ connection-level defaults on key collision. Settings map to the server's
26
+ Hyper connection/session settings — see
27
+ https://tableau.github.io/hyper-db/docs/hyper-api/connection#connection-settings.
28
+
29
+ ### Changed
30
+ - Raised DB-API `threadsafety` from `1` to `2`: threads can share a Connection
31
+ when each thread uses its own cursor. CDP token cache access is synchronized
32
+ so concurrent cache misses perform one exchange.
33
+ - `cursor.rowcount` now reports the total number of rows in the result set
34
+ after `execute()`, as read from the server's query status, instead of always
35
+ returning `-1`. It remains `-1` before any query is executed and is reset to
36
+ `-1` at the start of each `execute()` so a failed execution does not report a
37
+ stale count (DB-API 2.0 / PEP 249).
38
+ - Query results now default to the Arrow IPC wire format instead of JSON.
39
+ Pass `output_format="json"` to `connect()` to opt back into the previous
40
+ JSON behavior.
41
+ - `pyarrow` moved out of the `[pandas]` optional dependency extra into the
42
+ dev dependency group — it is only needed to build Arrow IPC test fixtures,
43
+ not by `pandas` support at runtime (`nanoarrow` is the runtime Arrow
44
+ dependency).
45
+ - `nanoarrow` is now upper-bounded (`>=0.6.0,<0.10.0`) instead of unbounded,
46
+ so a future major `nanoarrow` release can't silently change how Arrow
47
+ values map to Python types (e.g. timestamps) underneath
48
+ `convert_datacloud_value` without a deliberate version bump here.
49
+
50
+ ## 2.0.0b1 — Beta release (TBD)
51
+
52
+ First public beta of the new `salesforce-datacloud-connector` package, the
53
+ successor to `salesforce-cdp-connector`. Distributed as a pre-release on PyPI;
54
+ install with `pip install --pre salesforce-datacloud-connector`.
55
+
56
+ ### Added
57
+ - DB-API 2.0 compliant driver targeting the Salesforce Data Cloud Query API
58
+ (V3 driver path).
59
+ - Four OAuth authentication flows:
60
+ - Username/Password (`UsernamePasswordAuthenticator`)
61
+ - JWT Bearer Token (`JWTAuthenticator`)
62
+ - Refresh Token (`RefreshTokenAuthenticator`)
63
+ - Client Credentials (`ClientCredentialsAuthenticator`)
64
+ - Salesforce CLI authenticator (`SfCliAuthenticator`, `auth_type="sf_cli"`) for
65
+ local/dev — reuses the org the `sf` CLI is already authenticated against
66
+ instead of requiring a connected app.
67
+ - Connection-level support for `dataspace` and `workload`.
68
+ - Cursor surface: `execute`, `executemany`, `fetchone`, `fetchmany`,
69
+ `fetchall`, iteration, `description`, `rowcount`, `arraysize`, and `cancel`.
70
+ - Named-parameter style (`:param`) with safe parameter binding.
71
+ - Automatic pagination for large result sets with chunked fetching.
72
+ - Type conversion from Data Cloud types to Python types (str, int, Decimal,
73
+ float, bool, datetime.date, datetime.datetime).
74
+ - Full DB-API 2.0 exception hierarchy.
75
+ - `pandas` integration via `cursor.fetch_df()` and `pandas.read_sql()`,
76
+ installed as the optional `[pandas]` extra
77
+ (`pip install --pre "salesforce-datacloud-connector[pandas]"`).
78
+ - Token caching with automatic refresh.
79
+ - Long-polling for async query execution and retry logic for transient
80
+ failures.
81
+ - Context manager support for connections and cursors.
82
+ - Module globals: `apilevel = "2.0"`, `threadsafety = 1`,
83
+ `paramstyle = "named"`.
84
+
85
+ ### Notes
86
+ - This is a beta release. Public API may change before GA. Pin your version
87
+ explicitly in production environments.
88
+ - Read-only operations (SELECT). No INSERT/UPDATE/DELETE/DDL.
89
+ - Synchronous API only; async client is on the V2 roadmap.
90
+ - See the README for migration guidance from `salesforce-cdp-connector`.