arrowbricks 4.0.0__tar.gz → 5.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 (50) hide show
  1. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/PKG-INFO +1 -1
  2. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/pyproject.toml +2 -1
  3. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/Cargo.lock +1 -1
  4. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/Cargo.toml +1 -1
  5. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/src/arrowbricks/__init__.py +4 -0
  6. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/src/arrowbricks/_streaming.py +8 -2
  7. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/LICENSE +0 -0
  8. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/README.md +0 -0
  9. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/.gitignore +0 -0
  10. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/README.md +0 -0
  11. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/examples/duckdb_query.py +0 -0
  12. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/examples/fastapi_sse.py +0 -0
  13. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/proptest-regressions/json_convert.txt +0 -0
  14. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/rustfmt.toml +0 -0
  15. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/arrow_ffi.rs +0 -0
  16. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/client/download.rs +0 -0
  17. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/client/error.rs +0 -0
  18. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/client/model.rs +0 -0
  19. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/client/sea.rs +0 -0
  20. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/client/thrift_rpc.rs +0 -0
  21. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/client/volume.rs +0 -0
  22. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/client.rs +0 -0
  23. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/heartbeat.rs +0 -0
  24. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/json_convert.rs +0 -0
  25. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/lib.rs +0 -0
  26. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/pipeline/ndjson.rs +0 -0
  27. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/pipeline/reorder.rs +0 -0
  28. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/pipeline/sea.rs +0 -0
  29. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/pipeline/stats.rs +0 -0
  30. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/pipeline/test_support.rs +0 -0
  31. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/pipeline/thrift_exec.rs +0 -0
  32. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/pipeline.rs +0 -0
  33. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/src/thrift.rs +0 -0
  34. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests/common/mod.rs +0 -0
  35. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests/wiremock_pipeline.rs +0 -0
  36. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests/wiremock_thrift.rs +0 -0
  37. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests/wiremock_volume_files.rs +0 -0
  38. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests_py/conftest.py +0 -0
  39. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests_py/test_ipc_stream.py +0 -0
  40. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests_py/test_parameters.py +0 -0
  41. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests_py/test_stream_ndjson_lines.py +0 -0
  42. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests_py/test_streaming.py +0 -0
  43. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests_py/test_thrift.py +0 -0
  44. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests_py/test_token_provider.py +0 -0
  45. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests_py/test_volume_files.py +0 -0
  46. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/rust/arrowbricks_core/tests_py/thrift_mock.py +0 -0
  47. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/src/arrowbricks/_core.pyi +0 -0
  48. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/src/arrowbricks/client.py +0 -0
  49. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/src/arrowbricks/cursor.py +0 -0
  50. {arrowbricks-4.0.0 → arrowbricks-5.0.0}/src/arrowbricks/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: arrowbricks
3
- Version: 4.0.0
3
+ Version: 5.0.0
4
4
  Requires-Dist: arro3-core>=0.8 ; extra == 'arro3'
5
5
  Provides-Extra: arro3
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "arrowbricks"
3
- version = "4.0.0"
3
+ version = "5.0.0"
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"
@@ -76,6 +76,7 @@ dev = [
76
76
 
77
77
  [tool.pytest.ini_options]
78
78
  asyncio_mode = "auto"
79
+ asyncio_default_fixture_loop_scope = "function"
79
80
  # Bare `pytest`/`pytest -q` (no explicit path) covers tests/ -- including
80
81
  # tests/arro3_free (nested here on purpose; see its own conftest.py for why
81
82
  # that doesn't pull arro3 into its collection) -- but NOT
@@ -177,7 +177,7 @@ dependencies = [
177
177
 
178
178
  [[package]]
179
179
  name = "arrowbricks_core"
180
- version = "4.0.0"
180
+ version = "5.0.0"
181
181
  dependencies = [
182
182
  "arrow-array",
183
183
  "arrow-buffer",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "arrowbricks_core"
3
- version = "4.0.0"
3
+ version = "5.0.0"
4
4
  edition = "2024"
5
5
  readme = "README.md"
6
6
 
@@ -1,3 +1,7 @@
1
+ # PEP 810 (Python 3.15+): defer loading these submodules until a name from
2
+ # them is first used. Older Pythons ignore this list and import eagerly.
3
+ __lazy_modules__ = ["arrowbricks._streaming", "arrowbricks.client", "arrowbricks.cursor"]
4
+
1
5
  from ._core import ArrowbricksError, AuthError, QueryStats, StatementError, TransientError
2
6
  from ._streaming import (
3
7
  HEARTBEAT,
@@ -11,14 +11,16 @@ Python-side Arrow-to-JSON conversion step at all.
11
11
 
12
12
  from __future__ import annotations
13
13
 
14
- import asyncio
15
14
  import contextlib
16
15
  from collections.abc import AsyncIterator, Awaitable, Iterator
17
- from typing import Any, BinaryIO, TypeVar, cast
16
+ from typing import TYPE_CHECKING, Any, BinaryIO, TypeVar, cast
18
17
 
19
18
  from . import _core
20
19
  from .client import DatabricksClient
21
20
 
21
+ if TYPE_CHECKING:
22
+ import asyncio
23
+
22
24
  __all__ = [
23
25
  "HEARTBEAT",
24
26
  "QueryTimeout",
@@ -131,6 +133,10 @@ async def await_with_heartbeat(
131
133
  Yields HEARTBEAT zero or more times, then yields the awaitable's real
132
134
  result exactly once. Re-raises whatever `aw` raised, or QueryTimeout if
133
135
  `total_timeout_s` elapses first."""
136
+ # Imported here, not at module level: asyncio costs ~27 ms to import and
137
+ # only this coroutine (already running inside a loop) needs it.
138
+ import asyncio
139
+
134
140
  task: asyncio.Task[T] = asyncio.ensure_future(aw)
135
141
  loop = asyncio.get_running_loop()
136
142
  deadline = loop.time() + total_timeout_s if total_timeout_s is not None else None
File without changes
File without changes