polars-runtime-compat 1.34.0b2__cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.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.

Potentially problematic release.


This version of polars-runtime-compat might be problematic. Click here for more details.

Files changed (203) hide show
  1. _polars_runtime_compat/.gitkeep +0 -0
  2. _polars_runtime_compat/_polars_runtime_compat.abi3.so +0 -0
  3. polars/__init__.py +528 -0
  4. polars/_cpu_check.py +265 -0
  5. polars/_dependencies.py +355 -0
  6. polars/_plr.py +99 -0
  7. polars/_plr.pyi +2496 -0
  8. polars/_reexport.py +23 -0
  9. polars/_typing.py +478 -0
  10. polars/_utils/__init__.py +37 -0
  11. polars/_utils/async_.py +102 -0
  12. polars/_utils/cache.py +176 -0
  13. polars/_utils/cloud.py +40 -0
  14. polars/_utils/constants.py +29 -0
  15. polars/_utils/construction/__init__.py +46 -0
  16. polars/_utils/construction/dataframe.py +1397 -0
  17. polars/_utils/construction/other.py +72 -0
  18. polars/_utils/construction/series.py +560 -0
  19. polars/_utils/construction/utils.py +118 -0
  20. polars/_utils/convert.py +224 -0
  21. polars/_utils/deprecation.py +406 -0
  22. polars/_utils/getitem.py +457 -0
  23. polars/_utils/logging.py +11 -0
  24. polars/_utils/nest_asyncio.py +264 -0
  25. polars/_utils/parquet.py +15 -0
  26. polars/_utils/parse/__init__.py +12 -0
  27. polars/_utils/parse/expr.py +242 -0
  28. polars/_utils/polars_version.py +19 -0
  29. polars/_utils/pycapsule.py +53 -0
  30. polars/_utils/scan.py +27 -0
  31. polars/_utils/serde.py +63 -0
  32. polars/_utils/slice.py +215 -0
  33. polars/_utils/udfs.py +1251 -0
  34. polars/_utils/unstable.py +63 -0
  35. polars/_utils/various.py +782 -0
  36. polars/_utils/wrap.py +25 -0
  37. polars/api.py +370 -0
  38. polars/catalog/__init__.py +0 -0
  39. polars/catalog/unity/__init__.py +19 -0
  40. polars/catalog/unity/client.py +733 -0
  41. polars/catalog/unity/models.py +152 -0
  42. polars/config.py +1571 -0
  43. polars/convert/__init__.py +25 -0
  44. polars/convert/general.py +1046 -0
  45. polars/convert/normalize.py +261 -0
  46. polars/dataframe/__init__.py +5 -0
  47. polars/dataframe/_html.py +186 -0
  48. polars/dataframe/frame.py +12582 -0
  49. polars/dataframe/group_by.py +1067 -0
  50. polars/dataframe/plotting.py +257 -0
  51. polars/datatype_expr/__init__.py +5 -0
  52. polars/datatype_expr/array.py +56 -0
  53. polars/datatype_expr/datatype_expr.py +304 -0
  54. polars/datatype_expr/list.py +18 -0
  55. polars/datatype_expr/struct.py +69 -0
  56. polars/datatypes/__init__.py +122 -0
  57. polars/datatypes/_parse.py +195 -0
  58. polars/datatypes/_utils.py +48 -0
  59. polars/datatypes/classes.py +1213 -0
  60. polars/datatypes/constants.py +11 -0
  61. polars/datatypes/constructor.py +172 -0
  62. polars/datatypes/convert.py +366 -0
  63. polars/datatypes/group.py +130 -0
  64. polars/exceptions.py +230 -0
  65. polars/expr/__init__.py +7 -0
  66. polars/expr/array.py +964 -0
  67. polars/expr/binary.py +346 -0
  68. polars/expr/categorical.py +306 -0
  69. polars/expr/datetime.py +2620 -0
  70. polars/expr/expr.py +11272 -0
  71. polars/expr/list.py +1408 -0
  72. polars/expr/meta.py +444 -0
  73. polars/expr/name.py +321 -0
  74. polars/expr/string.py +3045 -0
  75. polars/expr/struct.py +357 -0
  76. polars/expr/whenthen.py +185 -0
  77. polars/functions/__init__.py +193 -0
  78. polars/functions/aggregation/__init__.py +33 -0
  79. polars/functions/aggregation/horizontal.py +298 -0
  80. polars/functions/aggregation/vertical.py +341 -0
  81. polars/functions/as_datatype.py +848 -0
  82. polars/functions/business.py +138 -0
  83. polars/functions/col.py +384 -0
  84. polars/functions/datatype.py +121 -0
  85. polars/functions/eager.py +524 -0
  86. polars/functions/escape_regex.py +29 -0
  87. polars/functions/lazy.py +2751 -0
  88. polars/functions/len.py +68 -0
  89. polars/functions/lit.py +210 -0
  90. polars/functions/random.py +22 -0
  91. polars/functions/range/__init__.py +19 -0
  92. polars/functions/range/_utils.py +15 -0
  93. polars/functions/range/date_range.py +303 -0
  94. polars/functions/range/datetime_range.py +370 -0
  95. polars/functions/range/int_range.py +348 -0
  96. polars/functions/range/linear_space.py +311 -0
  97. polars/functions/range/time_range.py +287 -0
  98. polars/functions/repeat.py +301 -0
  99. polars/functions/whenthen.py +353 -0
  100. polars/interchange/__init__.py +10 -0
  101. polars/interchange/buffer.py +77 -0
  102. polars/interchange/column.py +190 -0
  103. polars/interchange/dataframe.py +230 -0
  104. polars/interchange/from_dataframe.py +328 -0
  105. polars/interchange/protocol.py +303 -0
  106. polars/interchange/utils.py +170 -0
  107. polars/io/__init__.py +64 -0
  108. polars/io/_utils.py +317 -0
  109. polars/io/avro.py +49 -0
  110. polars/io/clipboard.py +36 -0
  111. polars/io/cloud/__init__.py +17 -0
  112. polars/io/cloud/_utils.py +80 -0
  113. polars/io/cloud/credential_provider/__init__.py +17 -0
  114. polars/io/cloud/credential_provider/_builder.py +520 -0
  115. polars/io/cloud/credential_provider/_providers.py +618 -0
  116. polars/io/csv/__init__.py +9 -0
  117. polars/io/csv/_utils.py +38 -0
  118. polars/io/csv/batched_reader.py +142 -0
  119. polars/io/csv/functions.py +1495 -0
  120. polars/io/database/__init__.py +6 -0
  121. polars/io/database/_arrow_registry.py +70 -0
  122. polars/io/database/_cursor_proxies.py +147 -0
  123. polars/io/database/_executor.py +578 -0
  124. polars/io/database/_inference.py +314 -0
  125. polars/io/database/_utils.py +144 -0
  126. polars/io/database/functions.py +516 -0
  127. polars/io/delta.py +499 -0
  128. polars/io/iceberg/__init__.py +3 -0
  129. polars/io/iceberg/_utils.py +697 -0
  130. polars/io/iceberg/dataset.py +556 -0
  131. polars/io/iceberg/functions.py +151 -0
  132. polars/io/ipc/__init__.py +8 -0
  133. polars/io/ipc/functions.py +514 -0
  134. polars/io/json/__init__.py +3 -0
  135. polars/io/json/read.py +101 -0
  136. polars/io/ndjson.py +332 -0
  137. polars/io/parquet/__init__.py +17 -0
  138. polars/io/parquet/field_overwrites.py +140 -0
  139. polars/io/parquet/functions.py +722 -0
  140. polars/io/partition.py +491 -0
  141. polars/io/plugins.py +187 -0
  142. polars/io/pyarrow_dataset/__init__.py +5 -0
  143. polars/io/pyarrow_dataset/anonymous_scan.py +109 -0
  144. polars/io/pyarrow_dataset/functions.py +79 -0
  145. polars/io/scan_options/__init__.py +5 -0
  146. polars/io/scan_options/_options.py +59 -0
  147. polars/io/scan_options/cast_options.py +126 -0
  148. polars/io/spreadsheet/__init__.py +6 -0
  149. polars/io/spreadsheet/_utils.py +52 -0
  150. polars/io/spreadsheet/_write_utils.py +647 -0
  151. polars/io/spreadsheet/functions.py +1323 -0
  152. polars/lazyframe/__init__.py +9 -0
  153. polars/lazyframe/engine_config.py +61 -0
  154. polars/lazyframe/frame.py +8564 -0
  155. polars/lazyframe/group_by.py +669 -0
  156. polars/lazyframe/in_process.py +42 -0
  157. polars/lazyframe/opt_flags.py +333 -0
  158. polars/meta/__init__.py +14 -0
  159. polars/meta/build.py +33 -0
  160. polars/meta/index_type.py +27 -0
  161. polars/meta/thread_pool.py +50 -0
  162. polars/meta/versions.py +120 -0
  163. polars/ml/__init__.py +0 -0
  164. polars/ml/torch.py +213 -0
  165. polars/ml/utilities.py +30 -0
  166. polars/plugins.py +155 -0
  167. polars/py.typed +0 -0
  168. polars/pyproject.toml +96 -0
  169. polars/schema.py +265 -0
  170. polars/selectors.py +3117 -0
  171. polars/series/__init__.py +5 -0
  172. polars/series/array.py +776 -0
  173. polars/series/binary.py +254 -0
  174. polars/series/categorical.py +246 -0
  175. polars/series/datetime.py +2275 -0
  176. polars/series/list.py +1087 -0
  177. polars/series/plotting.py +191 -0
  178. polars/series/series.py +9197 -0
  179. polars/series/string.py +2367 -0
  180. polars/series/struct.py +154 -0
  181. polars/series/utils.py +191 -0
  182. polars/sql/__init__.py +7 -0
  183. polars/sql/context.py +677 -0
  184. polars/sql/functions.py +139 -0
  185. polars/string_cache.py +185 -0
  186. polars/testing/__init__.py +13 -0
  187. polars/testing/asserts/__init__.py +9 -0
  188. polars/testing/asserts/frame.py +231 -0
  189. polars/testing/asserts/series.py +219 -0
  190. polars/testing/asserts/utils.py +12 -0
  191. polars/testing/parametric/__init__.py +33 -0
  192. polars/testing/parametric/profiles.py +107 -0
  193. polars/testing/parametric/strategies/__init__.py +22 -0
  194. polars/testing/parametric/strategies/_utils.py +14 -0
  195. polars/testing/parametric/strategies/core.py +615 -0
  196. polars/testing/parametric/strategies/data.py +452 -0
  197. polars/testing/parametric/strategies/dtype.py +436 -0
  198. polars/testing/parametric/strategies/legacy.py +169 -0
  199. polars/type_aliases.py +24 -0
  200. polars_runtime_compat-1.34.0b2.dist-info/METADATA +190 -0
  201. polars_runtime_compat-1.34.0b2.dist-info/RECORD +203 -0
  202. polars_runtime_compat-1.34.0b2.dist-info/WHEEL +4 -0
  203. polars_runtime_compat-1.34.0b2.dist-info/licenses/LICENSE +20 -0
@@ -0,0 +1,6 @@
1
+ from polars.io.database.functions import read_database, read_database_uri
2
+
3
+ __all__ = [
4
+ "read_database",
5
+ "read_database_uri",
6
+ ]
@@ -0,0 +1,70 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TypedDict
4
+
5
+
6
+ class ArrowDriverProperties(TypedDict):
7
+ # name of the method that fetches all arrow data; tuple form
8
+ # calls the fetch_all method with the given chunk size (int)
9
+ fetch_all: str
10
+ # name of the method that fetches arrow data in batches
11
+ fetch_batches: str | None
12
+ # indicate whether the given batch size is respected exactly
13
+ exact_batch_size: bool | None
14
+ # repeat batch calls (if False, the batch call is a generator)
15
+ repeat_batch_calls: bool
16
+ # if arrow/polars functionality requires a minimum module version
17
+ minimum_version: str | None
18
+
19
+
20
+ ARROW_DRIVER_REGISTRY: dict[str, ArrowDriverProperties] = {
21
+ "adbc_.*": {
22
+ "fetch_all": "fetch_arrow_table",
23
+ "fetch_batches": None,
24
+ "exact_batch_size": None,
25
+ "repeat_batch_calls": False,
26
+ "minimum_version": None,
27
+ },
28
+ "arrow_odbc_proxy": {
29
+ "fetch_all": "fetch_arrow_table",
30
+ "fetch_batches": "fetch_record_batches",
31
+ "exact_batch_size": True,
32
+ "repeat_batch_calls": False,
33
+ "minimum_version": None,
34
+ },
35
+ "databricks": {
36
+ "fetch_all": "fetchall_arrow",
37
+ "fetch_batches": "fetchmany_arrow",
38
+ "exact_batch_size": True,
39
+ "repeat_batch_calls": True,
40
+ "minimum_version": None,
41
+ },
42
+ "duckdb": {
43
+ "fetch_all": "fetch_arrow_table",
44
+ "fetch_batches": "fetch_record_batch",
45
+ "exact_batch_size": True,
46
+ "repeat_batch_calls": False,
47
+ "minimum_version": None,
48
+ },
49
+ "kuzu": {
50
+ "fetch_all": "get_as_pl",
51
+ "fetch_batches": None,
52
+ "exact_batch_size": None,
53
+ "repeat_batch_calls": False,
54
+ "minimum_version": "0.3.2",
55
+ },
56
+ "snowflake": {
57
+ "fetch_all": "fetch_arrow_all",
58
+ "fetch_batches": "fetch_arrow_batches",
59
+ "exact_batch_size": False,
60
+ "repeat_batch_calls": False,
61
+ "minimum_version": None,
62
+ },
63
+ "turbodbc": {
64
+ "fetch_all": "fetchallarrow",
65
+ "fetch_batches": "fetcharrowbatches",
66
+ "exact_batch_size": False,
67
+ "repeat_batch_calls": False,
68
+ "minimum_version": None,
69
+ },
70
+ }
@@ -0,0 +1,147 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import TYPE_CHECKING, Any
4
+
5
+ from polars._dependencies import import_optional
6
+ from polars.io.database._utils import _run_async
7
+
8
+ if TYPE_CHECKING:
9
+ import sys
10
+ from collections.abc import Coroutine, Iterable
11
+
12
+ import pyarrow as pa
13
+
14
+ if sys.version_info >= (3, 11):
15
+ from typing import Self
16
+ else:
17
+ from typing_extensions import Self
18
+
19
+
20
+ class ODBCCursorProxy:
21
+ """Cursor proxy for ODBC connections (requires `arrow-odbc`)."""
22
+
23
+ def __init__(self, connection_string: str) -> None:
24
+ self.connection_string = connection_string
25
+ self.execute_options: dict[str, Any] = {}
26
+ self.query: str | None = None
27
+
28
+ def close(self) -> None:
29
+ """Close the cursor."""
30
+ # n/a: nothing to close
31
+
32
+ def execute(self, query: str, **execute_options: Any) -> None:
33
+ """Execute a query (n/a: just store query for the fetch* methods)."""
34
+ self.execute_options = execute_options
35
+ self.query = query
36
+
37
+ def fetch_arrow_table(
38
+ self, batch_size: int = 10_000, *, fetch_all: bool = False
39
+ ) -> pa.Table:
40
+ """Fetch all results as a pyarrow Table."""
41
+ from pyarrow import Table
42
+
43
+ return Table.from_batches(
44
+ self.fetch_record_batches(batch_size=batch_size, fetch_all=True)
45
+ )
46
+
47
+ def fetch_record_batches(
48
+ self, batch_size: int = 10_000, *, fetch_all: bool = False
49
+ ) -> Iterable[pa.RecordBatch]:
50
+ """Fetch results as an iterable of RecordBatches."""
51
+ from arrow_odbc import read_arrow_batches_from_odbc
52
+ from pyarrow import RecordBatch
53
+
54
+ n_batches = 0
55
+ batch_reader = read_arrow_batches_from_odbc(
56
+ query=self.query,
57
+ batch_size=batch_size,
58
+ connection_string=self.connection_string,
59
+ **self.execute_options,
60
+ )
61
+ for batch in batch_reader:
62
+ yield batch
63
+ n_batches += 1
64
+
65
+ if n_batches == 0 and fetch_all:
66
+ # empty result set; return empty batch with accurate schema
67
+ yield RecordBatch.from_pylist([], schema=batch_reader.schema)
68
+
69
+ # note: internally arrow-odbc always reads batches
70
+ fetchall = fetch_arrow_table
71
+ fetchmany = fetch_record_batches
72
+
73
+
74
+ class SurrealDBCursorProxy:
75
+ """Cursor proxy for both SurrealDB and AsyncSurrealDB connections."""
76
+
77
+ _cached_result: list[dict[str, Any]] | None = None
78
+
79
+ def __init__(self, client: Any) -> None:
80
+ surrealdb = import_optional("surrealdb")
81
+ self.is_async = isinstance(client, surrealdb.AsyncSurrealDB)
82
+ self.execute_options: dict[str, Any] = {}
83
+ self.client = client
84
+ self.query: str = None # type: ignore[assignment]
85
+
86
+ @staticmethod
87
+ async def _unpack_result_async(
88
+ result: Coroutine[Any, Any, list[dict[str, Any]]],
89
+ ) -> Coroutine[Any, Any, list[dict[str, Any]]]:
90
+ """Unpack the async query result."""
91
+ response = (await result)[0]
92
+ if response["status"] != "OK":
93
+ raise RuntimeError(response["result"])
94
+ return response["result"]
95
+
96
+ @staticmethod
97
+ def _unpack_result(
98
+ result: list[dict[str, Any]],
99
+ ) -> list[dict[str, Any]]:
100
+ """Unpack the query result."""
101
+ response = result[0]
102
+ if response["status"] != "OK":
103
+ raise RuntimeError(response["result"])
104
+ return response["result"]
105
+
106
+ def close(self) -> None:
107
+ """Close the cursor."""
108
+ # no-op; never close a user's Surreal session
109
+
110
+ def execute(self, query: str, **execute_options: Any) -> Self:
111
+ """Execute a query (n/a: just store query for the fetch* methods)."""
112
+ self._cached_result = None
113
+ self.execute_options = execute_options
114
+ self.query = query
115
+ return self
116
+
117
+ def fetchall(self) -> list[dict[str, Any]]:
118
+ """Fetch all results (as a list of dictionaries)."""
119
+ return (
120
+ _run_async(
121
+ self._unpack_result_async(
122
+ result=self.client.query(
123
+ query=self.query,
124
+ variables=(self.execute_options or None),
125
+ ),
126
+ )
127
+ )
128
+ if self.is_async
129
+ else self._unpack_result(
130
+ result=self.client.query(
131
+ query=self.query,
132
+ variables=(self.execute_options or None),
133
+ ),
134
+ )
135
+ )
136
+
137
+ def fetchmany(self, size: int) -> list[dict[str, Any]]:
138
+ """Fetch results in batches (simulated)."""
139
+ # first 'fetchmany' call acquires/caches the result object
140
+ if self._cached_result is None:
141
+ self._cached_result = self.fetchall()
142
+
143
+ # return batches from the result, actively removing from the cache
144
+ # as we go, so as not to hold on to additional copies when done
145
+ result = self._cached_result[:size]
146
+ del self._cached_result[:size]
147
+ return result