arrowbricks 3.0.2__tar.gz → 3.0.3__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.
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/PKG-INFO +28 -1
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/README.md +27 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/pyproject.toml +1 -1
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/Cargo.lock +88 -306
- arrowbricks-3.0.3/rust/arrowbricks_core/Cargo.toml +108 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/src/client.rs +14 -0
- arrowbricks-3.0.2/rust/arrowbricks_core/Cargo.toml +0 -79
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/LICENSE +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/.gitignore +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/README.md +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/examples/duckdb_query.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/examples/fastapi_sse.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/rustfmt.toml +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/src/heartbeat.rs +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/src/json_convert.rs +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/src/lib.rs +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/src/pipeline.rs +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/src/thrift.rs +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests/wiremock_pipeline.rs +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests/wiremock_thrift.rs +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests/wiremock_volume_files.rs +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests_py/conftest.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests_py/test_ipc_stream.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests_py/test_parameters.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests_py/test_stream_ndjson_lines.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests_py/test_streaming.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests_py/test_thrift.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests_py/test_token_provider.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests_py/test_volume_files.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests_py/thrift_mock.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/src/arrowbricks/__init__.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/src/arrowbricks/_core.pyi +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/src/arrowbricks/_streaming.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/src/arrowbricks/client.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/src/arrowbricks/cursor.py +0 -0
- {arrowbricks-3.0.2 → arrowbricks-3.0.3}/src/arrowbricks/py.typed +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: arrowbricks
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.3
|
|
4
4
|
Requires-Dist: arro3-core>=0.8 ; extra == 'arro3'
|
|
5
5
|
Provides-Extra: arro3
|
|
6
6
|
License-File: LICENSE
|
|
@@ -210,6 +210,33 @@ con.sql("SELECT * FROM my_table WHERE id = 42").show()
|
|
|
210
210
|
|
|
211
211
|
The [official driver](https://github.com/databricks/databricks-sql-python) is the right choice if you need full DB-API 2.0 compatibility. If you just want a query result as Arrow/JSON in your own async app, it drags in a lot for that: `pandas`, `thrift`, `openpyxl`, `pybreaker`, `pyjwt`, `oauthlib`, `lz4`, `requests`, `urllib3` as hard dependencies. arrowbricks speaks the same wire protocols (Thrift by default, or the REST Statement Execution API via `protocol="sea"`) with a hand-rolled Rust implementation instead, and zero required dependencies of its own. The `Cursor` API is deliberately shaped like the official driver's so switching between them is mostly a constructor change, but arrowbricks is async throughout (`execute`, `fetchone`, etc. are all coroutines) -- there's no sync escape hatch.
|
|
212
212
|
|
|
213
|
+
## Benchmarks
|
|
214
|
+
|
|
215
|
+
Measured against a real Databricks SQL warehouse (Azure Databricks, `2X-Small` **Pro** serverless warehouse, Photon on, 1-4 auto-scaling clusters -- the smallest/cheapest warehouse tier, deliberately: a bigger warehouse would narrow the gap by making the query itself slower and the client-side overhead this compares proportionally smaller). Query: `SELECT id, id * 2 AS doubled, CAST(id AS STRING) AS label FROM range(200000)` (200k rows, 3 columns), 3 timed runs after 1 discarded warm-up run, one connection reused per library:
|
|
216
|
+
|
|
217
|
+
| | avg | stdev | range | peak RSS during the query |
|
|
218
|
+
|---|---|---|---|---|
|
|
219
|
+
| `databricks-sql-connector` | 0.88s | 0.06s | 0.83s - 0.95s | 16 MB |
|
|
220
|
+
| arrowbricks | 0.50s | 0.02s | 0.48s - 0.52s | 16 MB |
|
|
221
|
+
|
|
222
|
+
**arrowbricks: ~1.8x faster**, same order-of-magnitude peak memory *for this query size* -- at 200k rows the Python interpreter's own baseline footprint dominates over the actual result data for both libraries, so this particular number doesn't show a difference. The real memory/footprint difference is in what gets installed, not what a single small query allocates:
|
|
223
|
+
|
|
224
|
+
| | installed size (package + all required deps) |
|
|
225
|
+
|---|---|
|
|
226
|
+
| `databricks-sql-connector` | 71 MB (pulls in `pandas`, `numpy`, `thrift`, `oauthlib`, `lz4`, `requests`, `urllib3`, `openpyxl`, ... as hard dependencies -- `pandas`+`numpy` alone are 61 MB of that) |
|
|
227
|
+
| arrowbricks | 9 MB (zero required runtime dependencies -- the whole thing is one compiled Rust extension, built with `opt-level="s"`, `ring` instead of the heavier default TLS crypto backend, and no unused HTTP/2 support -- see `rust/arrowbricks_core/Cargo.toml`'s own `[profile.release]` and `rustls`/`hyper-rustls` comments for the measurements behind those choices) |
|
|
228
|
+
|
|
229
|
+
Run it yourself: [`examples/benchmark_vs_connector.py`](examples/benchmark_vs_connector.py) (needs both packages installed: `pip install arrowbricks databricks-sql-connector`). Reads `DATABRICKS_HOST`/`DATABRICKS_WAREHOUSE_ID`/`DATABRICKS_TOKEN` from the environment or a `.env` file (never commit one with a real token in it) and runs each library in its own subprocess so peak memory reflects that library alone:
|
|
230
|
+
|
|
231
|
+
```bash
|
|
232
|
+
DATABRICKS_HOST=adb-1234567890.1.azuredatabricks.net \
|
|
233
|
+
DATABRICKS_WAREHOUSE_ID=abcd1234efgh5678 \
|
|
234
|
+
DATABRICKS_TOKEN=dapiXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
|
|
235
|
+
python examples/benchmark_vs_connector.py
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
`BENCHMARK_SQL` overrides the query, `BENCHMARK_RUNS` (default 3) controls how many timed runs to average.
|
|
239
|
+
|
|
213
240
|
## A note on Arrow IPC compression
|
|
214
241
|
|
|
215
242
|
`write_ipc_stream` (and everything in this package that serializes Arrow-IPC bytes) always writes **uncompressed** bodies. A compressed body (arro3's own default is `compression="LZ4"`) is transparently decompressed by some Arrow readers (e.g. DuckDB's) but not necessarily by every other Arrow IPC reader -- notably, `duckdb-wasm`'s browser-side decoder silently fails to parse LZ4-compressed bodies. Since arrowbricks' bytes might end up read by anything, plain uncompressed is the safe default.
|
|
@@ -198,6 +198,33 @@ con.sql("SELECT * FROM my_table WHERE id = 42").show()
|
|
|
198
198
|
|
|
199
199
|
The [official driver](https://github.com/databricks/databricks-sql-python) is the right choice if you need full DB-API 2.0 compatibility. If you just want a query result as Arrow/JSON in your own async app, it drags in a lot for that: `pandas`, `thrift`, `openpyxl`, `pybreaker`, `pyjwt`, `oauthlib`, `lz4`, `requests`, `urllib3` as hard dependencies. arrowbricks speaks the same wire protocols (Thrift by default, or the REST Statement Execution API via `protocol="sea"`) with a hand-rolled Rust implementation instead, and zero required dependencies of its own. The `Cursor` API is deliberately shaped like the official driver's so switching between them is mostly a constructor change, but arrowbricks is async throughout (`execute`, `fetchone`, etc. are all coroutines) -- there's no sync escape hatch.
|
|
200
200
|
|
|
201
|
+
## Benchmarks
|
|
202
|
+
|
|
203
|
+
Measured against a real Databricks SQL warehouse (Azure Databricks, `2X-Small` **Pro** serverless warehouse, Photon on, 1-4 auto-scaling clusters -- the smallest/cheapest warehouse tier, deliberately: a bigger warehouse would narrow the gap by making the query itself slower and the client-side overhead this compares proportionally smaller). Query: `SELECT id, id * 2 AS doubled, CAST(id AS STRING) AS label FROM range(200000)` (200k rows, 3 columns), 3 timed runs after 1 discarded warm-up run, one connection reused per library:
|
|
204
|
+
|
|
205
|
+
| | avg | stdev | range | peak RSS during the query |
|
|
206
|
+
|---|---|---|---|---|
|
|
207
|
+
| `databricks-sql-connector` | 0.88s | 0.06s | 0.83s - 0.95s | 16 MB |
|
|
208
|
+
| arrowbricks | 0.50s | 0.02s | 0.48s - 0.52s | 16 MB |
|
|
209
|
+
|
|
210
|
+
**arrowbricks: ~1.8x faster**, same order-of-magnitude peak memory *for this query size* -- at 200k rows the Python interpreter's own baseline footprint dominates over the actual result data for both libraries, so this particular number doesn't show a difference. The real memory/footprint difference is in what gets installed, not what a single small query allocates:
|
|
211
|
+
|
|
212
|
+
| | installed size (package + all required deps) |
|
|
213
|
+
|---|---|
|
|
214
|
+
| `databricks-sql-connector` | 71 MB (pulls in `pandas`, `numpy`, `thrift`, `oauthlib`, `lz4`, `requests`, `urllib3`, `openpyxl`, ... as hard dependencies -- `pandas`+`numpy` alone are 61 MB of that) |
|
|
215
|
+
| arrowbricks | 9 MB (zero required runtime dependencies -- the whole thing is one compiled Rust extension, built with `opt-level="s"`, `ring` instead of the heavier default TLS crypto backend, and no unused HTTP/2 support -- see `rust/arrowbricks_core/Cargo.toml`'s own `[profile.release]` and `rustls`/`hyper-rustls` comments for the measurements behind those choices) |
|
|
216
|
+
|
|
217
|
+
Run it yourself: [`examples/benchmark_vs_connector.py`](examples/benchmark_vs_connector.py) (needs both packages installed: `pip install arrowbricks databricks-sql-connector`). Reads `DATABRICKS_HOST`/`DATABRICKS_WAREHOUSE_ID`/`DATABRICKS_TOKEN` from the environment or a `.env` file (never commit one with a real token in it) and runs each library in its own subprocess so peak memory reflects that library alone:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
DATABRICKS_HOST=adb-1234567890.1.azuredatabricks.net \
|
|
221
|
+
DATABRICKS_WAREHOUSE_ID=abcd1234efgh5678 \
|
|
222
|
+
DATABRICKS_TOKEN=dapiXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
|
|
223
|
+
python examples/benchmark_vs_connector.py
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
`BENCHMARK_SQL` overrides the query, `BENCHMARK_RUNS` (default 3) controls how many timed runs to average.
|
|
227
|
+
|
|
201
228
|
## A note on Arrow IPC compression
|
|
202
229
|
|
|
203
230
|
`write_ipc_stream` (and everything in this package that serializes Arrow-IPC bytes) always writes **uncompressed** bodies. A compressed body (arro3's own default is `compression="LZ4"`) is transparently decompressed by some Arrow readers (e.g. DuckDB's) but not necessarily by every other Arrow IPC reader -- notably, `duckdb-wasm`'s browser-side decoder silently fails to parse LZ4-compressed bodies. Since arrowbricks' bytes might end up read by anything, plain uncompressed is the safe default.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "arrowbricks"
|
|
3
|
-
version = "3.0.
|
|
3
|
+
version = "3.0.3"
|
|
4
4
|
description = "Runs SQL against a Databricks SQL warehouse via the Statement Execution API and hands you the result as Arrow -- a DB-API-ish Cursor (fetchone/fetchmany/fetchall/fetchall_arrow) or NDJSON streaming. Rust/PyO3 core throughout -- zero required runtime dependencies."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -27,18 +27,18 @@ dependencies = [
|
|
|
27
27
|
|
|
28
28
|
[[package]]
|
|
29
29
|
name = "android_system_properties"
|
|
30
|
-
version = "0.1.
|
|
30
|
+
version = "0.1.6"
|
|
31
31
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
32
|
-
checksum = "
|
|
32
|
+
checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc"
|
|
33
33
|
dependencies = [
|
|
34
34
|
"libc",
|
|
35
35
|
]
|
|
36
36
|
|
|
37
37
|
[[package]]
|
|
38
38
|
name = "arrow"
|
|
39
|
-
version = "59.
|
|
39
|
+
version = "59.2.0"
|
|
40
40
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
41
|
-
checksum = "
|
|
41
|
+
checksum = "61d285d16bce7d0be61912f7928342b673067b6b7d7ef6cc179258ba7de1fecf"
|
|
42
42
|
dependencies = [
|
|
43
43
|
"arrow-arith",
|
|
44
44
|
"arrow-array",
|
|
@@ -55,9 +55,9 @@ dependencies = [
|
|
|
55
55
|
|
|
56
56
|
[[package]]
|
|
57
57
|
name = "arrow-arith"
|
|
58
|
-
version = "59.
|
|
58
|
+
version = "59.2.0"
|
|
59
59
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
60
|
-
checksum = "
|
|
60
|
+
checksum = "757ef1836251e88222542a7da2623bc1c9cb9e20afefa6db2c41e79991cd91d4"
|
|
61
61
|
dependencies = [
|
|
62
62
|
"arrow-array",
|
|
63
63
|
"arrow-buffer",
|
|
@@ -69,9 +69,9 @@ dependencies = [
|
|
|
69
69
|
|
|
70
70
|
[[package]]
|
|
71
71
|
name = "arrow-array"
|
|
72
|
-
version = "59.
|
|
72
|
+
version = "59.2.0"
|
|
73
73
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
74
|
-
checksum = "
|
|
74
|
+
checksum = "bc9a4a4b2b5ecd0e04df03471661cb61f28bed3c7fd50994715129b01b2edb97"
|
|
75
75
|
dependencies = [
|
|
76
76
|
"ahash",
|
|
77
77
|
"arrow-buffer",
|
|
@@ -81,6 +81,7 @@ dependencies = [
|
|
|
81
81
|
"chrono-tz",
|
|
82
82
|
"half",
|
|
83
83
|
"hashbrown",
|
|
84
|
+
"libc",
|
|
84
85
|
"num-complex",
|
|
85
86
|
"num-integer",
|
|
86
87
|
"num-traits",
|
|
@@ -88,9 +89,9 @@ dependencies = [
|
|
|
88
89
|
|
|
89
90
|
[[package]]
|
|
90
91
|
name = "arrow-buffer"
|
|
91
|
-
version = "59.
|
|
92
|
+
version = "59.2.0"
|
|
92
93
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
93
|
-
checksum = "
|
|
94
|
+
checksum = "c12b576ef18c1deb80925a248b25ad84f419198d791b8e293fc6aaa60441fe90"
|
|
94
95
|
dependencies = [
|
|
95
96
|
"bytes",
|
|
96
97
|
"half",
|
|
@@ -100,9 +101,9 @@ dependencies = [
|
|
|
100
101
|
|
|
101
102
|
[[package]]
|
|
102
103
|
name = "arrow-cast"
|
|
103
|
-
version = "59.
|
|
104
|
+
version = "59.2.0"
|
|
104
105
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
105
|
-
checksum = "
|
|
106
|
+
checksum = "68338a9096a5dc9bc11927c58c43a8526d96bf6abd2012ef6c0c9f505991cc79"
|
|
106
107
|
dependencies = [
|
|
107
108
|
"arrow-array",
|
|
108
109
|
"arrow-buffer",
|
|
@@ -111,7 +112,7 @@ dependencies = [
|
|
|
111
112
|
"arrow-schema",
|
|
112
113
|
"arrow-select",
|
|
113
114
|
"atoi",
|
|
114
|
-
"base64",
|
|
115
|
+
"base64 0.23.1",
|
|
115
116
|
"chrono",
|
|
116
117
|
"comfy-table",
|
|
117
118
|
"half",
|
|
@@ -122,9 +123,9 @@ dependencies = [
|
|
|
122
123
|
|
|
123
124
|
[[package]]
|
|
124
125
|
name = "arrow-data"
|
|
125
|
-
version = "59.
|
|
126
|
+
version = "59.2.0"
|
|
126
127
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
127
|
-
checksum = "
|
|
128
|
+
checksum = "723fe4aeed7604e00b9883a465af4ff0a0e6c44c03e41a68c3d1cbc403e0e44d"
|
|
128
129
|
dependencies = [
|
|
129
130
|
"arrow-buffer",
|
|
130
131
|
"arrow-schema",
|
|
@@ -135,9 +136,9 @@ dependencies = [
|
|
|
135
136
|
|
|
136
137
|
[[package]]
|
|
137
138
|
name = "arrow-ipc"
|
|
138
|
-
version = "59.
|
|
139
|
+
version = "59.2.0"
|
|
139
140
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
140
|
-
checksum = "
|
|
141
|
+
checksum = "149437b14371f5b9ec60f5ddc751483ae99d7a7072653c0075e5e469156eea7b"
|
|
141
142
|
dependencies = [
|
|
142
143
|
"arrow-array",
|
|
143
144
|
"arrow-buffer",
|
|
@@ -149,9 +150,9 @@ dependencies = [
|
|
|
149
150
|
|
|
150
151
|
[[package]]
|
|
151
152
|
name = "arrow-json"
|
|
152
|
-
version = "59.
|
|
153
|
+
version = "59.2.0"
|
|
153
154
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
154
|
-
checksum = "
|
|
155
|
+
checksum = "f18b9123ccfec418a663f821c9a034af339711678c11ffe00d3ec07da5ff9f7e"
|
|
155
156
|
dependencies = [
|
|
156
157
|
"arrow-array",
|
|
157
158
|
"arrow-buffer",
|
|
@@ -174,9 +175,9 @@ dependencies = [
|
|
|
174
175
|
|
|
175
176
|
[[package]]
|
|
176
177
|
name = "arrow-ord"
|
|
177
|
-
version = "59.
|
|
178
|
+
version = "59.2.0"
|
|
178
179
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
179
|
-
checksum = "
|
|
180
|
+
checksum = "e6c08dff0686cf23ca4f562803f191ccbeb726dbae6309cd4b4aaf65e0f2c979"
|
|
180
181
|
dependencies = [
|
|
181
182
|
"arrow-array",
|
|
182
183
|
"arrow-buffer",
|
|
@@ -187,9 +188,9 @@ dependencies = [
|
|
|
187
188
|
|
|
188
189
|
[[package]]
|
|
189
190
|
name = "arrow-row"
|
|
190
|
-
version = "59.
|
|
191
|
+
version = "59.2.0"
|
|
191
192
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
192
|
-
checksum = "
|
|
193
|
+
checksum = "bbec439386df71ad570e6758a946111322b9e9dc8db83b5527321f0b4c9119c2"
|
|
193
194
|
dependencies = [
|
|
194
195
|
"arrow-array",
|
|
195
196
|
"arrow-buffer",
|
|
@@ -200,18 +201,18 @@ dependencies = [
|
|
|
200
201
|
|
|
201
202
|
[[package]]
|
|
202
203
|
name = "arrow-schema"
|
|
203
|
-
version = "59.
|
|
204
|
+
version = "59.2.0"
|
|
204
205
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
205
|
-
checksum = "
|
|
206
|
+
checksum = "e6fed2ca0d1eade57e811cbe73b98ad50cc08a1183e13b2d2aa43a7df593f40e"
|
|
206
207
|
dependencies = [
|
|
207
208
|
"bitflags",
|
|
208
209
|
]
|
|
209
210
|
|
|
210
211
|
[[package]]
|
|
211
212
|
name = "arrow-select"
|
|
212
|
-
version = "59.
|
|
213
|
+
version = "59.2.0"
|
|
213
214
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
214
|
-
checksum = "
|
|
215
|
+
checksum = "466b19cf75130b891dc1b23a84b343c714c62c64c9c62e365c76aa0ff90a53fb"
|
|
215
216
|
dependencies = [
|
|
216
217
|
"ahash",
|
|
217
218
|
"arrow-array",
|
|
@@ -223,9 +224,9 @@ dependencies = [
|
|
|
223
224
|
|
|
224
225
|
[[package]]
|
|
225
226
|
name = "arrow-string"
|
|
226
|
-
version = "59.
|
|
227
|
+
version = "59.2.0"
|
|
227
228
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
228
|
-
checksum = "
|
|
229
|
+
checksum = "c838a25bb3691e919e0f617616ac51a4ff8517a952e29ca133cf0c22b2ce65b1"
|
|
229
230
|
dependencies = [
|
|
230
231
|
"arrow-array",
|
|
231
232
|
"arrow-buffer",
|
|
@@ -240,18 +241,20 @@ dependencies = [
|
|
|
240
241
|
|
|
241
242
|
[[package]]
|
|
242
243
|
name = "arrowbricks_core"
|
|
243
|
-
version = "3.0.
|
|
244
|
+
version = "3.0.3"
|
|
244
245
|
dependencies = [
|
|
245
246
|
"arrow",
|
|
246
247
|
"arrow-json",
|
|
247
248
|
"bytes",
|
|
248
249
|
"chrono",
|
|
250
|
+
"hyper-rustls",
|
|
249
251
|
"lz4_flex",
|
|
250
252
|
"pyo3",
|
|
251
253
|
"pyo3-arrow",
|
|
252
254
|
"pyo3-async-runtimes",
|
|
253
255
|
"pythonize",
|
|
254
256
|
"reqwest",
|
|
257
|
+
"rustls",
|
|
255
258
|
"serde",
|
|
256
259
|
"serde_json",
|
|
257
260
|
"tokio",
|
|
@@ -290,33 +293,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
290
293
|
checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
|
|
291
294
|
|
|
292
295
|
[[package]]
|
|
293
|
-
name = "
|
|
294
|
-
version = "
|
|
295
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
296
|
-
checksum = "00bdb5da18dac48ca2cc7cd4a98e533e8635a58e2361d13a1a4ee3888e0d72f1"
|
|
297
|
-
dependencies = [
|
|
298
|
-
"aws-lc-sys",
|
|
299
|
-
"zeroize",
|
|
300
|
-
]
|
|
301
|
-
|
|
302
|
-
[[package]]
|
|
303
|
-
name = "aws-lc-sys"
|
|
304
|
-
version = "0.43.0"
|
|
296
|
+
name = "base64"
|
|
297
|
+
version = "0.22.1"
|
|
305
298
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
306
|
-
checksum = "
|
|
307
|
-
dependencies = [
|
|
308
|
-
"cc",
|
|
309
|
-
"cmake",
|
|
310
|
-
"dunce",
|
|
311
|
-
"fs_extra",
|
|
312
|
-
"pkg-config",
|
|
313
|
-
]
|
|
299
|
+
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
|
314
300
|
|
|
315
301
|
[[package]]
|
|
316
302
|
name = "base64"
|
|
317
|
-
version = "0.
|
|
303
|
+
version = "0.23.1"
|
|
318
304
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
319
|
-
checksum = "
|
|
305
|
+
checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5"
|
|
320
306
|
|
|
321
307
|
[[package]]
|
|
322
308
|
name = "bitflags"
|
|
@@ -338,13 +324,11 @@ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04"
|
|
|
338
324
|
|
|
339
325
|
[[package]]
|
|
340
326
|
name = "cc"
|
|
341
|
-
version = "1.4.
|
|
327
|
+
version = "1.4.2"
|
|
342
328
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
343
|
-
checksum = "
|
|
329
|
+
checksum = "5d262e149917187838d5b42777c8253bcb64500067342904e7d429499a6f277e"
|
|
344
330
|
dependencies = [
|
|
345
331
|
"find-msvc-tools",
|
|
346
|
-
"jobserver",
|
|
347
|
-
"libc",
|
|
348
332
|
"shlex",
|
|
349
333
|
]
|
|
350
334
|
|
|
@@ -354,23 +338,6 @@ version = "1.0.4"
|
|
|
354
338
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
355
339
|
checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
|
|
356
340
|
|
|
357
|
-
[[package]]
|
|
358
|
-
name = "cfg_aliases"
|
|
359
|
-
version = "0.2.2"
|
|
360
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
361
|
-
checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527"
|
|
362
|
-
|
|
363
|
-
[[package]]
|
|
364
|
-
name = "chacha20"
|
|
365
|
-
version = "0.10.1"
|
|
366
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
367
|
-
checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81"
|
|
368
|
-
dependencies = [
|
|
369
|
-
"cfg-if",
|
|
370
|
-
"cpufeatures",
|
|
371
|
-
"rand_core",
|
|
372
|
-
]
|
|
373
|
-
|
|
374
341
|
[[package]]
|
|
375
342
|
name = "chrono"
|
|
376
343
|
version = "0.4.45"
|
|
@@ -394,15 +361,6 @@ dependencies = [
|
|
|
394
361
|
"phf",
|
|
395
362
|
]
|
|
396
363
|
|
|
397
|
-
[[package]]
|
|
398
|
-
name = "cmake"
|
|
399
|
-
version = "0.1.58"
|
|
400
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
401
|
-
checksum = "c0f78a02292a74a88ac736019ab962ece0bc380e3f977bf72e376c5d78ff0678"
|
|
402
|
-
dependencies = [
|
|
403
|
-
"cc",
|
|
404
|
-
]
|
|
405
|
-
|
|
406
364
|
[[package]]
|
|
407
365
|
name = "combine"
|
|
408
366
|
version = "4.6.7"
|
|
@@ -459,15 +417,6 @@ version = "0.8.7"
|
|
|
459
417
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
460
418
|
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
|
461
419
|
|
|
462
|
-
[[package]]
|
|
463
|
-
name = "cpufeatures"
|
|
464
|
-
version = "0.3.0"
|
|
465
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
466
|
-
checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201"
|
|
467
|
-
dependencies = [
|
|
468
|
-
"libc",
|
|
469
|
-
]
|
|
470
|
-
|
|
471
420
|
[[package]]
|
|
472
421
|
name = "crunchy"
|
|
473
422
|
version = "0.2.4"
|
|
@@ -503,12 +452,6 @@ dependencies = [
|
|
|
503
452
|
"syn 3.0.3",
|
|
504
453
|
]
|
|
505
454
|
|
|
506
|
-
[[package]]
|
|
507
|
-
name = "dunce"
|
|
508
|
-
version = "1.0.5"
|
|
509
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
510
|
-
checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813"
|
|
511
|
-
|
|
512
455
|
[[package]]
|
|
513
456
|
name = "equivalent"
|
|
514
457
|
version = "1.0.2"
|
|
@@ -517,9 +460,9 @@ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
|
|
|
517
460
|
|
|
518
461
|
[[package]]
|
|
519
462
|
name = "find-msvc-tools"
|
|
520
|
-
version = "0.1.
|
|
463
|
+
version = "0.1.10"
|
|
521
464
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
522
|
-
checksum = "
|
|
465
|
+
checksum = "26b73573e6edcd2af0cdf47bd6cb58f0b3839491263c314eaad1ccf24430e1de"
|
|
523
466
|
|
|
524
467
|
[[package]]
|
|
525
468
|
name = "flatbuffers"
|
|
@@ -546,12 +489,6 @@ dependencies = [
|
|
|
546
489
|
"percent-encoding",
|
|
547
490
|
]
|
|
548
491
|
|
|
549
|
-
[[package]]
|
|
550
|
-
name = "fs_extra"
|
|
551
|
-
version = "1.3.0"
|
|
552
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
553
|
-
checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c"
|
|
554
|
-
|
|
555
492
|
[[package]]
|
|
556
493
|
name = "futures"
|
|
557
494
|
version = "0.3.33"
|
|
@@ -647,10 +584,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
647
584
|
checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0"
|
|
648
585
|
dependencies = [
|
|
649
586
|
"cfg-if",
|
|
650
|
-
"js-sys",
|
|
651
587
|
"libc",
|
|
652
588
|
"wasi",
|
|
653
|
-
"wasm-bindgen",
|
|
654
589
|
]
|
|
655
590
|
|
|
656
591
|
[[package]]
|
|
@@ -661,24 +596,10 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd"
|
|
|
661
596
|
dependencies = [
|
|
662
597
|
"cfg-if",
|
|
663
598
|
"libc",
|
|
664
|
-
"r-efi
|
|
599
|
+
"r-efi",
|
|
665
600
|
"wasip2",
|
|
666
601
|
]
|
|
667
602
|
|
|
668
|
-
[[package]]
|
|
669
|
-
name = "getrandom"
|
|
670
|
-
version = "0.4.3"
|
|
671
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
672
|
-
checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099"
|
|
673
|
-
dependencies = [
|
|
674
|
-
"cfg-if",
|
|
675
|
-
"js-sys",
|
|
676
|
-
"libc",
|
|
677
|
-
"r-efi 6.0.0",
|
|
678
|
-
"rand_core",
|
|
679
|
-
"wasm-bindgen",
|
|
680
|
-
]
|
|
681
|
-
|
|
682
603
|
[[package]]
|
|
683
604
|
name = "h2"
|
|
684
605
|
version = "0.4.15"
|
|
@@ -816,7 +737,7 @@ version = "0.1.20"
|
|
|
816
737
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
817
738
|
checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0"
|
|
818
739
|
dependencies = [
|
|
819
|
-
"base64",
|
|
740
|
+
"base64 0.22.1",
|
|
820
741
|
"bytes",
|
|
821
742
|
"futures-channel",
|
|
822
743
|
"futures-util",
|
|
@@ -994,7 +915,7 @@ dependencies = [
|
|
|
994
915
|
"jni-sys",
|
|
995
916
|
"log",
|
|
996
917
|
"simd_cesu8",
|
|
997
|
-
"thiserror 2.0.
|
|
918
|
+
"thiserror 2.0.20",
|
|
998
919
|
"walkdir",
|
|
999
920
|
"windows-link",
|
|
1000
921
|
]
|
|
@@ -1031,21 +952,11 @@ dependencies = [
|
|
|
1031
952
|
"syn 2.0.119",
|
|
1032
953
|
]
|
|
1033
954
|
|
|
1034
|
-
[[package]]
|
|
1035
|
-
name = "jobserver"
|
|
1036
|
-
version = "0.1.35"
|
|
1037
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1038
|
-
checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3"
|
|
1039
|
-
dependencies = [
|
|
1040
|
-
"getrandom 0.4.3",
|
|
1041
|
-
"libc",
|
|
1042
|
-
]
|
|
1043
|
-
|
|
1044
955
|
[[package]]
|
|
1045
956
|
name = "js-sys"
|
|
1046
|
-
version = "0.3.
|
|
957
|
+
version = "0.3.104"
|
|
1047
958
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1048
|
-
checksum = "
|
|
959
|
+
checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a"
|
|
1049
960
|
dependencies = [
|
|
1050
961
|
"cfg-if",
|
|
1051
962
|
"futures-util",
|
|
@@ -1139,17 +1050,11 @@ version = "0.4.33"
|
|
|
1139
1050
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1140
1051
|
checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad"
|
|
1141
1052
|
|
|
1142
|
-
[[package]]
|
|
1143
|
-
name = "lru-slab"
|
|
1144
|
-
version = "0.1.2"
|
|
1145
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1146
|
-
checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154"
|
|
1147
|
-
|
|
1148
1053
|
[[package]]
|
|
1149
1054
|
name = "lz4_flex"
|
|
1150
|
-
version = "0.
|
|
1055
|
+
version = "0.14.0"
|
|
1151
1056
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1152
|
-
checksum = "
|
|
1057
|
+
checksum = "ecbdfe44b1bd960b68170b417450a628c43f7cf56bb3c5317e61cb230ee7f226"
|
|
1153
1058
|
dependencies = [
|
|
1154
1059
|
"twox-hash",
|
|
1155
1060
|
]
|
|
@@ -1198,9 +1103,9 @@ dependencies = [
|
|
|
1198
1103
|
|
|
1199
1104
|
[[package]]
|
|
1200
1105
|
name = "num-bigint"
|
|
1201
|
-
version = "0.
|
|
1106
|
+
version = "0.5.1"
|
|
1202
1107
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1203
|
-
checksum = "
|
|
1108
|
+
checksum = "93e7820bc0a80a0238e650327316f929ba18d5be054b647490a3a6a339f3e7c0"
|
|
1204
1109
|
dependencies = [
|
|
1205
1110
|
"num-integer",
|
|
1206
1111
|
"num-traits",
|
|
@@ -1303,12 +1208,6 @@ version = "0.2.17"
|
|
|
1303
1208
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1304
1209
|
checksum = "a89322df9ebe1c1578d689c92318e070967d1042b512afbe49518723f4e6d5cd"
|
|
1305
1210
|
|
|
1306
|
-
[[package]]
|
|
1307
|
-
name = "pkg-config"
|
|
1308
|
-
version = "0.3.33"
|
|
1309
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1310
|
-
checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e"
|
|
1311
|
-
|
|
1312
1211
|
[[package]]
|
|
1313
1212
|
name = "portable-atomic"
|
|
1314
1213
|
version = "1.14.0"
|
|
@@ -1344,9 +1243,9 @@ dependencies = [
|
|
|
1344
1243
|
|
|
1345
1244
|
[[package]]
|
|
1346
1245
|
name = "pyo3"
|
|
1347
|
-
version = "0.29.
|
|
1246
|
+
version = "0.29.2"
|
|
1348
1247
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1349
|
-
checksum = "
|
|
1248
|
+
checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b"
|
|
1350
1249
|
dependencies = [
|
|
1351
1250
|
"chrono",
|
|
1352
1251
|
"chrono-tz",
|
|
@@ -1396,18 +1295,18 @@ dependencies = [
|
|
|
1396
1295
|
|
|
1397
1296
|
[[package]]
|
|
1398
1297
|
name = "pyo3-build-config"
|
|
1399
|
-
version = "0.29.
|
|
1298
|
+
version = "0.29.2"
|
|
1400
1299
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1401
|
-
checksum = "
|
|
1300
|
+
checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9"
|
|
1402
1301
|
dependencies = [
|
|
1403
1302
|
"target-lexicon",
|
|
1404
1303
|
]
|
|
1405
1304
|
|
|
1406
1305
|
[[package]]
|
|
1407
1306
|
name = "pyo3-ffi"
|
|
1408
|
-
version = "0.29.
|
|
1307
|
+
version = "0.29.2"
|
|
1409
1308
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1410
|
-
checksum = "
|
|
1309
|
+
checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327"
|
|
1411
1310
|
dependencies = [
|
|
1412
1311
|
"libc",
|
|
1413
1312
|
"pyo3-build-config",
|
|
@@ -1415,9 +1314,9 @@ dependencies = [
|
|
|
1415
1314
|
|
|
1416
1315
|
[[package]]
|
|
1417
1316
|
name = "pyo3-macros"
|
|
1418
|
-
version = "0.29.
|
|
1317
|
+
version = "0.29.2"
|
|
1419
1318
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1420
|
-
checksum = "
|
|
1319
|
+
checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c"
|
|
1421
1320
|
dependencies = [
|
|
1422
1321
|
"proc-macro2",
|
|
1423
1322
|
"pyo3-macros-backend",
|
|
@@ -1427,9 +1326,9 @@ dependencies = [
|
|
|
1427
1326
|
|
|
1428
1327
|
[[package]]
|
|
1429
1328
|
name = "pyo3-macros-backend"
|
|
1430
|
-
version = "0.29.
|
|
1329
|
+
version = "0.29.2"
|
|
1431
1330
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1432
|
-
checksum = "
|
|
1331
|
+
checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952"
|
|
1433
1332
|
dependencies = [
|
|
1434
1333
|
"heck",
|
|
1435
1334
|
"proc-macro2",
|
|
@@ -1447,63 +1346,6 @@ dependencies = [
|
|
|
1447
1346
|
"serde",
|
|
1448
1347
|
]
|
|
1449
1348
|
|
|
1450
|
-
[[package]]
|
|
1451
|
-
name = "quinn"
|
|
1452
|
-
version = "0.11.11"
|
|
1453
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1454
|
-
checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8"
|
|
1455
|
-
dependencies = [
|
|
1456
|
-
"bytes",
|
|
1457
|
-
"cfg_aliases",
|
|
1458
|
-
"pin-project-lite",
|
|
1459
|
-
"quinn-proto",
|
|
1460
|
-
"quinn-udp",
|
|
1461
|
-
"rustc-hash",
|
|
1462
|
-
"rustls",
|
|
1463
|
-
"socket2",
|
|
1464
|
-
"thiserror 2.0.19",
|
|
1465
|
-
"tokio",
|
|
1466
|
-
"tracing",
|
|
1467
|
-
"web-time",
|
|
1468
|
-
]
|
|
1469
|
-
|
|
1470
|
-
[[package]]
|
|
1471
|
-
name = "quinn-proto"
|
|
1472
|
-
version = "0.11.16"
|
|
1473
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1474
|
-
checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560"
|
|
1475
|
-
dependencies = [
|
|
1476
|
-
"aws-lc-rs",
|
|
1477
|
-
"bytes",
|
|
1478
|
-
"getrandom 0.4.3",
|
|
1479
|
-
"lru-slab",
|
|
1480
|
-
"rand",
|
|
1481
|
-
"rand_pcg",
|
|
1482
|
-
"ring",
|
|
1483
|
-
"rustc-hash",
|
|
1484
|
-
"rustls",
|
|
1485
|
-
"rustls-pki-types",
|
|
1486
|
-
"slab",
|
|
1487
|
-
"thiserror 2.0.19",
|
|
1488
|
-
"tinyvec",
|
|
1489
|
-
"tracing",
|
|
1490
|
-
"web-time",
|
|
1491
|
-
]
|
|
1492
|
-
|
|
1493
|
-
[[package]]
|
|
1494
|
-
name = "quinn-udp"
|
|
1495
|
-
version = "0.5.15"
|
|
1496
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1497
|
-
checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694"
|
|
1498
|
-
dependencies = [
|
|
1499
|
-
"cfg_aliases",
|
|
1500
|
-
"libc",
|
|
1501
|
-
"once_cell",
|
|
1502
|
-
"socket2",
|
|
1503
|
-
"tracing",
|
|
1504
|
-
"windows-sys 0.61.2",
|
|
1505
|
-
]
|
|
1506
|
-
|
|
1507
1349
|
[[package]]
|
|
1508
1350
|
name = "quote"
|
|
1509
1351
|
version = "1.0.47"
|
|
@@ -1519,38 +1361,6 @@ version = "5.3.0"
|
|
|
1519
1361
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1520
1362
|
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
|
|
1521
1363
|
|
|
1522
|
-
[[package]]
|
|
1523
|
-
name = "r-efi"
|
|
1524
|
-
version = "6.0.0"
|
|
1525
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1526
|
-
checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf"
|
|
1527
|
-
|
|
1528
|
-
[[package]]
|
|
1529
|
-
name = "rand"
|
|
1530
|
-
version = "0.10.2"
|
|
1531
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1532
|
-
checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80"
|
|
1533
|
-
dependencies = [
|
|
1534
|
-
"chacha20",
|
|
1535
|
-
"getrandom 0.4.3",
|
|
1536
|
-
"rand_core",
|
|
1537
|
-
]
|
|
1538
|
-
|
|
1539
|
-
[[package]]
|
|
1540
|
-
name = "rand_core"
|
|
1541
|
-
version = "0.10.1"
|
|
1542
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1543
|
-
checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69"
|
|
1544
|
-
|
|
1545
|
-
[[package]]
|
|
1546
|
-
name = "rand_pcg"
|
|
1547
|
-
version = "0.10.2"
|
|
1548
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1549
|
-
checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a"
|
|
1550
|
-
dependencies = [
|
|
1551
|
-
"rand_core",
|
|
1552
|
-
]
|
|
1553
|
-
|
|
1554
1364
|
[[package]]
|
|
1555
1365
|
name = "rawpointer"
|
|
1556
1366
|
version = "0.2.1"
|
|
@@ -1571,9 +1381,9 @@ dependencies = [
|
|
|
1571
1381
|
|
|
1572
1382
|
[[package]]
|
|
1573
1383
|
name = "regex-automata"
|
|
1574
|
-
version = "0.4.
|
|
1384
|
+
version = "0.4.18"
|
|
1575
1385
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1576
|
-
checksum = "
|
|
1386
|
+
checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2"
|
|
1577
1387
|
dependencies = [
|
|
1578
1388
|
"aho-corasick",
|
|
1579
1389
|
"memchr",
|
|
@@ -1592,10 +1402,9 @@ version = "0.13.4"
|
|
|
1592
1402
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1593
1403
|
checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3"
|
|
1594
1404
|
dependencies = [
|
|
1595
|
-
"base64",
|
|
1405
|
+
"base64 0.22.1",
|
|
1596
1406
|
"bytes",
|
|
1597
1407
|
"futures-core",
|
|
1598
|
-
"h2",
|
|
1599
1408
|
"http",
|
|
1600
1409
|
"http-body",
|
|
1601
1410
|
"http-body-util",
|
|
@@ -1606,7 +1415,6 @@ dependencies = [
|
|
|
1606
1415
|
"log",
|
|
1607
1416
|
"percent-encoding",
|
|
1608
1417
|
"pin-project-lite",
|
|
1609
|
-
"quinn",
|
|
1610
1418
|
"rustls",
|
|
1611
1419
|
"rustls-pki-types",
|
|
1612
1420
|
"rustls-platform-verifier",
|
|
@@ -1660,8 +1468,9 @@ version = "0.23.43"
|
|
|
1660
1468
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1661
1469
|
checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06"
|
|
1662
1470
|
dependencies = [
|
|
1663
|
-
"
|
|
1471
|
+
"log",
|
|
1664
1472
|
"once_cell",
|
|
1473
|
+
"ring",
|
|
1665
1474
|
"rustls-pki-types",
|
|
1666
1475
|
"rustls-webpki",
|
|
1667
1476
|
"subtle",
|
|
@@ -1686,7 +1495,6 @@ version = "1.15.1"
|
|
|
1686
1495
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1687
1496
|
checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96"
|
|
1688
1497
|
dependencies = [
|
|
1689
|
-
"web-time",
|
|
1690
1498
|
"zeroize",
|
|
1691
1499
|
]
|
|
1692
1500
|
|
|
@@ -1723,7 +1531,6 @@ version = "0.103.13"
|
|
|
1723
1531
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1724
1532
|
checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e"
|
|
1725
1533
|
dependencies = [
|
|
1726
|
-
"aws-lc-rs",
|
|
1727
1534
|
"ring",
|
|
1728
1535
|
"rustls-pki-types",
|
|
1729
1536
|
"untrusted",
|
|
@@ -1964,11 +1771,11 @@ dependencies = [
|
|
|
1964
1771
|
|
|
1965
1772
|
[[package]]
|
|
1966
1773
|
name = "thiserror"
|
|
1967
|
-
version = "2.0.
|
|
1774
|
+
version = "2.0.20"
|
|
1968
1775
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1969
|
-
checksum = "
|
|
1776
|
+
checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
|
|
1970
1777
|
dependencies = [
|
|
1971
|
-
"thiserror-impl 2.0.
|
|
1778
|
+
"thiserror-impl 2.0.20",
|
|
1972
1779
|
]
|
|
1973
1780
|
|
|
1974
1781
|
[[package]]
|
|
@@ -1984,9 +1791,9 @@ dependencies = [
|
|
|
1984
1791
|
|
|
1985
1792
|
[[package]]
|
|
1986
1793
|
name = "thiserror-impl"
|
|
1987
|
-
version = "2.0.
|
|
1794
|
+
version = "2.0.20"
|
|
1988
1795
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1989
|
-
checksum = "
|
|
1796
|
+
checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
|
|
1990
1797
|
dependencies = [
|
|
1991
1798
|
"proc-macro2",
|
|
1992
1799
|
"quote",
|
|
@@ -2012,21 +1819,6 @@ dependencies = [
|
|
|
2012
1819
|
"zerovec",
|
|
2013
1820
|
]
|
|
2014
1821
|
|
|
2015
|
-
[[package]]
|
|
2016
|
-
name = "tinyvec"
|
|
2017
|
-
version = "1.12.0"
|
|
2018
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2019
|
-
checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f"
|
|
2020
|
-
dependencies = [
|
|
2021
|
-
"tinyvec_macros",
|
|
2022
|
-
]
|
|
2023
|
-
|
|
2024
|
-
[[package]]
|
|
2025
|
-
name = "tinyvec_macros"
|
|
2026
|
-
version = "0.1.1"
|
|
2027
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2028
|
-
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
|
2029
|
-
|
|
2030
1822
|
[[package]]
|
|
2031
1823
|
name = "tokio"
|
|
2032
1824
|
version = "1.53.1"
|
|
@@ -2237,9 +2029,9 @@ dependencies = [
|
|
|
2237
2029
|
|
|
2238
2030
|
[[package]]
|
|
2239
2031
|
name = "wasm-bindgen"
|
|
2240
|
-
version = "0.2.
|
|
2032
|
+
version = "0.2.127"
|
|
2241
2033
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2242
|
-
checksum = "
|
|
2034
|
+
checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70"
|
|
2243
2035
|
dependencies = [
|
|
2244
2036
|
"cfg-if",
|
|
2245
2037
|
"once_cell",
|
|
@@ -2250,9 +2042,9 @@ dependencies = [
|
|
|
2250
2042
|
|
|
2251
2043
|
[[package]]
|
|
2252
2044
|
name = "wasm-bindgen-futures"
|
|
2253
|
-
version = "0.4.
|
|
2045
|
+
version = "0.4.77"
|
|
2254
2046
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2255
|
-
checksum = "
|
|
2047
|
+
checksum = "6b7777d5cc23d0e91404e53ce2d5e8ec7acae3026b16233dba62cd3246457950"
|
|
2256
2048
|
dependencies = [
|
|
2257
2049
|
"js-sys",
|
|
2258
2050
|
"wasm-bindgen",
|
|
@@ -2260,9 +2052,9 @@ dependencies = [
|
|
|
2260
2052
|
|
|
2261
2053
|
[[package]]
|
|
2262
2054
|
name = "wasm-bindgen-macro"
|
|
2263
|
-
version = "0.2.
|
|
2055
|
+
version = "0.2.127"
|
|
2264
2056
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2265
|
-
checksum = "
|
|
2057
|
+
checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1"
|
|
2266
2058
|
dependencies = [
|
|
2267
2059
|
"quote",
|
|
2268
2060
|
"wasm-bindgen-macro-support",
|
|
@@ -2270,9 +2062,9 @@ dependencies = [
|
|
|
2270
2062
|
|
|
2271
2063
|
[[package]]
|
|
2272
2064
|
name = "wasm-bindgen-macro-support"
|
|
2273
|
-
version = "0.2.
|
|
2065
|
+
version = "0.2.127"
|
|
2274
2066
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2275
|
-
checksum = "
|
|
2067
|
+
checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284"
|
|
2276
2068
|
dependencies = [
|
|
2277
2069
|
"bumpalo",
|
|
2278
2070
|
"proc-macro2",
|
|
@@ -2283,28 +2075,18 @@ dependencies = [
|
|
|
2283
2075
|
|
|
2284
2076
|
[[package]]
|
|
2285
2077
|
name = "wasm-bindgen-shared"
|
|
2286
|
-
version = "0.2.
|
|
2078
|
+
version = "0.2.127"
|
|
2287
2079
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2288
|
-
checksum = "
|
|
2080
|
+
checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf"
|
|
2289
2081
|
dependencies = [
|
|
2290
2082
|
"unicode-ident",
|
|
2291
2083
|
]
|
|
2292
2084
|
|
|
2293
2085
|
[[package]]
|
|
2294
2086
|
name = "web-sys"
|
|
2295
|
-
version = "0.3.
|
|
2296
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2297
|
-
checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141"
|
|
2298
|
-
dependencies = [
|
|
2299
|
-
"js-sys",
|
|
2300
|
-
"wasm-bindgen",
|
|
2301
|
-
]
|
|
2302
|
-
|
|
2303
|
-
[[package]]
|
|
2304
|
-
name = "web-time"
|
|
2305
|
-
version = "1.1.0"
|
|
2087
|
+
version = "0.3.104"
|
|
2306
2088
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2307
|
-
checksum = "
|
|
2089
|
+
checksum = "c435338968042f4f59a557f690a253676d47ce13ceb55d70100e7facf6620a30"
|
|
2308
2090
|
dependencies = [
|
|
2309
2091
|
"js-sys",
|
|
2310
2092
|
"wasm-bindgen",
|
|
@@ -2476,7 +2258,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
2476
2258
|
checksum = "08db1edfb05d9b3c1542e521aea074442088292f00b5f28e435c714a98f85031"
|
|
2477
2259
|
dependencies = [
|
|
2478
2260
|
"assert-json-diff",
|
|
2479
|
-
"base64",
|
|
2261
|
+
"base64 0.22.1",
|
|
2480
2262
|
"deadpool",
|
|
2481
2263
|
"futures",
|
|
2482
2264
|
"http",
|
|
@@ -2529,18 +2311,18 @@ dependencies = [
|
|
|
2529
2311
|
|
|
2530
2312
|
[[package]]
|
|
2531
2313
|
name = "zerocopy"
|
|
2532
|
-
version = "0.8.
|
|
2314
|
+
version = "0.8.56"
|
|
2533
2315
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2534
|
-
checksum = "
|
|
2316
|
+
checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb"
|
|
2535
2317
|
dependencies = [
|
|
2536
2318
|
"zerocopy-derive",
|
|
2537
2319
|
]
|
|
2538
2320
|
|
|
2539
2321
|
[[package]]
|
|
2540
2322
|
name = "zerocopy-derive"
|
|
2541
|
-
version = "0.8.
|
|
2323
|
+
version = "0.8.56"
|
|
2542
2324
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
2543
|
-
checksum = "
|
|
2325
|
+
checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1"
|
|
2544
2326
|
dependencies = [
|
|
2545
2327
|
"proc-macro2",
|
|
2546
2328
|
"quote",
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "arrowbricks_core"
|
|
3
|
+
version = "3.0.3"
|
|
4
|
+
edition = "2024"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
|
|
7
|
+
[lib]
|
|
8
|
+
name = "arrowbricks_core"
|
|
9
|
+
crate-type = ["cdylib", "rlib"]
|
|
10
|
+
|
|
11
|
+
[dependencies]
|
|
12
|
+
# default-features off: arrow's defaults are csv+ipc+json, and we only ever
|
|
13
|
+
# decode Arrow-IPC chunks -- csv/json parsing (plus their transitive deps)
|
|
14
|
+
# would just be dead weight in the shipped .so.
|
|
15
|
+
arrow = { version = "59.1.0", default-features = false, features = ["ipc"] }
|
|
16
|
+
arrow-json = "59.1.0"
|
|
17
|
+
bytes = "1.12.1"
|
|
18
|
+
# Already an unconditional transitive dependency of pyo3-arrow (see its own
|
|
19
|
+
# comment below) -- declared directly here too so json_convert.rs can parse
|
|
20
|
+
# DATE/TIMESTAMP/TIMESTAMP_NTZ strings without hand-rolling calendar
|
|
21
|
+
# arithmetic. No new code ships that wasn't already linked in.
|
|
22
|
+
chrono = { version = "0.4", default-features = false, features = ["std"] }
|
|
23
|
+
# Decompresses cloud-fetch chunk bytes when the server honors our
|
|
24
|
+
# `result_compression: LZ4_FRAME` request (see client.rs's execute_statement)
|
|
25
|
+
# -- the same LZ4 Frame format databricks-sql-python's `lz4.frame` decodes.
|
|
26
|
+
# Pure Rust, no C toolchain dependency -- unlike reqwest's TLS stack below.
|
|
27
|
+
lz4_flex = { version = "0.14", default-features = false, features = ["frame", "std"] }
|
|
28
|
+
pyo3 = { version = "0.29.1", features = ["abi3-py311"] }
|
|
29
|
+
# pyo3-arrow's only optional feature is buffer_protocol (on by default),
|
|
30
|
+
# which we don't use -- numpy/chrono/chrono-tz/arrow-cast(prettyprint) below
|
|
31
|
+
# it are unconditional dependencies of the crate itself, not features, so
|
|
32
|
+
# they ship regardless; not worth dropping pyo3-arrow over that (reimplementing
|
|
33
|
+
# the Arrow C Data Interface ourselves is a much bigger risk than the MBs saved).
|
|
34
|
+
pyo3-arrow = { version = "0.19.0", default-features = false }
|
|
35
|
+
pyo3-async-runtimes = { version = "0.29.0", features = ["tokio-runtime"] }
|
|
36
|
+
pythonize = "0.29.0"
|
|
37
|
+
# reqwest's own `rustls` feature is hardcoded to `__rustls-aws-lc-rs`, no way
|
|
38
|
+
# to opt out from that alias alone -- `rustls-no-provider` instead pulls in
|
|
39
|
+
# rustls/hyper-rustls with *no* crypto backend wired in, and we supply our
|
|
40
|
+
# own via the two direct deps below (`ring`, not `aws-lc-rs`: smaller
|
|
41
|
+
# compiled footprint, confirmed by direct measurement -- both still need a C
|
|
42
|
+
# compiler for their own hand-optimized assembly, so this isn't a "no C
|
|
43
|
+
# toolchain" win the way `lz4_flex` above is) -- see
|
|
44
|
+
# `install_default_crypto_provider` in client.rs, the one place that backend
|
|
45
|
+
# choice actually has to be wired up. No "http2": every request this crate
|
|
46
|
+
# makes is a plain, independent HTTPS call from its own connection pool (no
|
|
47
|
+
# client-side multiplexing to gain from HTTP/2's stream interleaving), and
|
|
48
|
+
# reqwest/hyper transparently fall back to HTTP/1.1 when a peer doesn't offer
|
|
49
|
+
# h2 via ALPN -- dropping this feature is a binary-size cut (the h2 crate,
|
|
50
|
+
# plus hyper's own HTTP/2 code paths), not a functional change, *if* the real
|
|
51
|
+
# Databricks endpoints this crate talks to actually serve HTTP/1.1 --
|
|
52
|
+
# confirmed against a real workspace before landing this (see AGENTS.md).
|
|
53
|
+
reqwest = { version = "0.13.4", default-features = false, features = ["json", "query", "rustls-no-provider"] }
|
|
54
|
+
# Pinned to the same instance reqwest/hyper-rustls already resolve to
|
|
55
|
+
# (feature unification, not a second copy) purely to turn on their "ring"
|
|
56
|
+
# feature instead of the default aws-lc-rs -- see reqwest's own comment
|
|
57
|
+
# above. `prefer-post-quantum` (rustls' own default) needs aws-lc-rs
|
|
58
|
+
# specifically (ring has no ML-KEM support), so it's dropped along with it;
|
|
59
|
+
# not required to talk to Databricks.
|
|
60
|
+
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12", "logging"] }
|
|
61
|
+
hyper-rustls = { version = "0.27", default-features = false, features = ["ring"] }
|
|
62
|
+
serde = { version = "1.0.229", features = ["derive"] }
|
|
63
|
+
serde_json = "1.0.151"
|
|
64
|
+
tokio = { version = "1.53.1", features = ["rt-multi-thread", "macros"] }
|
|
65
|
+
|
|
66
|
+
[features]
|
|
67
|
+
default = ["extension-module"]
|
|
68
|
+
# `extension-module` skips linking against libpython -- correct for the
|
|
69
|
+
# cdylib maturin actually ships (Python provides those symbols at import
|
|
70
|
+
# time), but it breaks a plain `cargo test`/`cargo bench` binary, which does
|
|
71
|
+
# need to link libpython itself. Tests/benches build with
|
|
72
|
+
# `--no-default-features` to get a normal link.
|
|
73
|
+
extension-module = ["pyo3/extension-module"]
|
|
74
|
+
|
|
75
|
+
[dev-dependencies]
|
|
76
|
+
tokio = { version = "1.53.1", features = ["rt-multi-thread", "macros", "test-util", "net", "io-util"] }
|
|
77
|
+
wiremock = "0.6.5"
|
|
78
|
+
|
|
79
|
+
# Currently clean on all three by luck, not enforcement -- pinning them here
|
|
80
|
+
# so a future PR that introduces one fails CI instead of silently landing.
|
|
81
|
+
[lints.clippy]
|
|
82
|
+
redundant_clone = "warn"
|
|
83
|
+
large_enum_variant = "warn"
|
|
84
|
+
needless_collect = "warn"
|
|
85
|
+
|
|
86
|
+
[profile.release]
|
|
87
|
+
# opt-level="s" over the implicit default (3) or "z" -- a size-vs-speed
|
|
88
|
+
# tradeoff previously rejected here on the reasoning that "3" was what the
|
|
89
|
+
# perf benchmarks were run against and hadn't been re-measured against "s"/
|
|
90
|
+
# "z". Actually measured, both ends of that tradeoff: a 400k-row/41-column
|
|
91
|
+
# local decode (no network, isolates CPU cost) averaged 35.4ms at
|
|
92
|
+
# opt-level=3, 34.3ms at "s" (noise-level difference, not a real cost), and
|
|
93
|
+
# 70.7ms at "z" (a real ~2x regression) -- confirmed via a real-warehouse
|
|
94
|
+
# benchmark too, where opt-level made no measurable difference at all
|
|
95
|
+
# (network/warehouse time dominates wall-clock there regardless). "s" is a
|
|
96
|
+
# free ~20% .so size cut (12.8 MiB -> 10.3 MiB after also dropping
|
|
97
|
+
# reqwest's `http2` feature below) with no measured speed cost anywhere
|
|
98
|
+
# tested; "z" trades real decode speed for a further cut and isn't worth
|
|
99
|
+
# it for a crate whose whole selling point is decode speed. strip + lto +
|
|
100
|
+
# codegen-units=1 remain pure wins with no tradeoff at all: less debuginfo
|
|
101
|
+
# and better cross-crate dead-code elimination, not slower code.
|
|
102
|
+
# panic = "abort" is NOT an option here even though it'd shrink the binary --
|
|
103
|
+
# pyo3 relies on unwinding (catch_unwind) to turn a Rust panic into a Python
|
|
104
|
+
# exception at the FFI boundary instead of aborting the whole interpreter.
|
|
105
|
+
opt-level = "s"
|
|
106
|
+
strip = true
|
|
107
|
+
lto = true
|
|
108
|
+
codegen-units = 1
|
|
@@ -698,12 +698,26 @@ impl<T> Pool<T> {
|
|
|
698
698
|
|
|
699
699
|
pub const MAX_SESSIONS_PER_KEY: usize = 8;
|
|
700
700
|
|
|
701
|
+
/// rustls (via reqwest's `rustls-no-provider` feature, see this crate's own
|
|
702
|
+
/// Cargo.toml comment on why) has no crypto backend wired in until one is
|
|
703
|
+
/// installed process-wide, and building a `reqwest::Client` panics if none
|
|
704
|
+
/// has been -- called from every `DbClient` constructor rather than from
|
|
705
|
+
/// the PyO3 module's own init, since a plain `cargo test`/pure-Rust caller
|
|
706
|
+
/// never runs that init at all. `install_default` only errors if a
|
|
707
|
+
/// provider was already installed (a second `DbClient`, or another
|
|
708
|
+
/// extension in the same interpreter already installed one) -- not a real
|
|
709
|
+
/// failure for us either way, so ignored.
|
|
710
|
+
fn install_default_crypto_provider() {
|
|
711
|
+
let _ = rustls::crypto::ring::default_provider().install_default();
|
|
712
|
+
}
|
|
713
|
+
|
|
701
714
|
impl DbClient {
|
|
702
715
|
pub fn new(host: &str, warehouse_id: &str, token: &str) -> Self {
|
|
703
716
|
Self::with_token_provider(host, warehouse_id, Arc::new(StaticToken(token.to_string())))
|
|
704
717
|
}
|
|
705
718
|
|
|
706
719
|
pub fn with_token_provider(host: &str, warehouse_id: &str, token_provider: Arc<dyn TokenProvider>) -> Self {
|
|
720
|
+
install_default_crypto_provider();
|
|
707
721
|
let host = host.trim_end_matches('/');
|
|
708
722
|
// Only force https:// when no scheme was given at all -- same as
|
|
709
723
|
// Python's check, but relaxed to not clobber an explicit http://
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
[package]
|
|
2
|
-
name = "arrowbricks_core"
|
|
3
|
-
version = "3.0.2"
|
|
4
|
-
edition = "2024"
|
|
5
|
-
readme = "README.md"
|
|
6
|
-
|
|
7
|
-
[lib]
|
|
8
|
-
name = "arrowbricks_core"
|
|
9
|
-
crate-type = ["cdylib", "rlib"]
|
|
10
|
-
|
|
11
|
-
[dependencies]
|
|
12
|
-
# default-features off: arrow's defaults are csv+ipc+json, and we only ever
|
|
13
|
-
# decode Arrow-IPC chunks -- csv/json parsing (plus their transitive deps)
|
|
14
|
-
# would just be dead weight in the shipped .so.
|
|
15
|
-
arrow = { version = "59.1.0", default-features = false, features = ["ipc"] }
|
|
16
|
-
arrow-json = "59.1.0"
|
|
17
|
-
bytes = "1.12.1"
|
|
18
|
-
# Already an unconditional transitive dependency of pyo3-arrow (see its own
|
|
19
|
-
# comment below) -- declared directly here too so json_convert.rs can parse
|
|
20
|
-
# DATE/TIMESTAMP/TIMESTAMP_NTZ strings without hand-rolling calendar
|
|
21
|
-
# arithmetic. No new code ships that wasn't already linked in.
|
|
22
|
-
chrono = { version = "0.4", default-features = false, features = ["std"] }
|
|
23
|
-
# Decompresses cloud-fetch chunk bytes when the server honors our
|
|
24
|
-
# `result_compression: LZ4_FRAME` request (see client.rs's execute_statement)
|
|
25
|
-
# -- the same LZ4 Frame format databricks-sql-python's `lz4.frame` decodes.
|
|
26
|
-
# Pure Rust, no C toolchain dependency -- unlike reqwest's `rustls` feature
|
|
27
|
-
# below, which *does* pull one in (`__rustls-aws-lc-rs` -> aws-lc-rs ->
|
|
28
|
-
# aws-lc-sys, confirmed via `cargo tree -i aws-lc-sys`; this crate has no
|
|
29
|
-
# `ring` feature available in reqwest 0.13 to avoid it with). A previous
|
|
30
|
-
# version of this comment claimed the opposite -- that this crate avoids
|
|
31
|
-
# aws-lc-sys-style native-build pain elsewhere too -- found wrong on review;
|
|
32
|
-
# see AGENTS.md's build-prerequisites note.
|
|
33
|
-
lz4_flex = { version = "0.11", default-features = false, features = ["frame", "std"] }
|
|
34
|
-
pyo3 = { version = "0.29.1", features = ["abi3-py311"] }
|
|
35
|
-
# pyo3-arrow's only optional feature is buffer_protocol (on by default),
|
|
36
|
-
# which we don't use -- numpy/chrono/chrono-tz/arrow-cast(prettyprint) below
|
|
37
|
-
# it are unconditional dependencies of the crate itself, not features, so
|
|
38
|
-
# they ship regardless; not worth dropping pyo3-arrow over that (reimplementing
|
|
39
|
-
# the Arrow C Data Interface ourselves is a much bigger risk than the MBs saved).
|
|
40
|
-
pyo3-arrow = { version = "0.19.0", default-features = false }
|
|
41
|
-
pyo3-async-runtimes = { version = "0.29.0", features = ["tokio-runtime"] }
|
|
42
|
-
pythonize = "0.29.0"
|
|
43
|
-
reqwest = { version = "0.13.4", default-features = false, features = ["json", "query", "rustls", "http2"] }
|
|
44
|
-
serde = { version = "1.0.229", features = ["derive"] }
|
|
45
|
-
serde_json = "1.0.151"
|
|
46
|
-
tokio = { version = "1.53.1", features = ["rt-multi-thread", "macros"] }
|
|
47
|
-
|
|
48
|
-
[features]
|
|
49
|
-
default = ["extension-module"]
|
|
50
|
-
# `extension-module` skips linking against libpython -- correct for the
|
|
51
|
-
# cdylib maturin actually ships (Python provides those symbols at import
|
|
52
|
-
# time), but it breaks a plain `cargo test`/`cargo bench` binary, which does
|
|
53
|
-
# need to link libpython itself. Tests/benches build with
|
|
54
|
-
# `--no-default-features` to get a normal link.
|
|
55
|
-
extension-module = ["pyo3/extension-module"]
|
|
56
|
-
|
|
57
|
-
[dev-dependencies]
|
|
58
|
-
tokio = { version = "1.53.1", features = ["rt-multi-thread", "macros", "test-util", "net", "io-util"] }
|
|
59
|
-
wiremock = "0.6.5"
|
|
60
|
-
|
|
61
|
-
# Currently clean on all three by luck, not enforcement -- pinning them here
|
|
62
|
-
# so a future PR that introduces one fails CI instead of silently landing.
|
|
63
|
-
[lints.clippy]
|
|
64
|
-
redundant_clone = "warn"
|
|
65
|
-
large_enum_variant = "warn"
|
|
66
|
-
needless_collect = "warn"
|
|
67
|
-
|
|
68
|
-
[profile.release]
|
|
69
|
-
# opt-level stays at the implicit default (3, speed) rather than "s"/"z" --
|
|
70
|
-
# perf was the original ask and the benchmarks were run against opt-level 3;
|
|
71
|
-
# trading hot-path speed for a smaller .so wasn't asked for. strip + lto +
|
|
72
|
-
# codegen-units=1 are pure wins with no such tradeoff: less debuginfo and
|
|
73
|
-
# better cross-crate dead-code elimination, not slower code.
|
|
74
|
-
# panic = "abort" is NOT an option here even though it'd shrink the binary --
|
|
75
|
-
# pyo3 relies on unwinding (catch_unwind) to turn a Rust panic into a Python
|
|
76
|
-
# exception at the FFI boundary instead of aborting the whole interpreter.
|
|
77
|
-
strip = true
|
|
78
|
-
lto = true
|
|
79
|
-
codegen-units = 1
|
|
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
|
{arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests/wiremock_volume_files.rs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests_py/test_stream_ndjson_lines.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{arrowbricks-3.0.2 → arrowbricks-3.0.3}/rust/arrowbricks_core/tests_py/test_token_provider.py
RENAMED
|
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
|