polars-runtime-compat 1.34.0b3__cp39-abi3-macosx_11_0_arm64.whl → 1.34.0b4__cp39-abi3-macosx_11_0_arm64.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/_polars_runtime_compat.abi3.so +0 -0
  2. {polars_runtime_compat-1.34.0b3.dist-info → polars_runtime_compat-1.34.0b4.dist-info}/METADATA +1 -1
  3. polars_runtime_compat-1.34.0b4.dist-info/RECORD +6 -0
  4. polars/__init__.py +0 -528
  5. polars/_cpu_check.py +0 -265
  6. polars/_dependencies.py +0 -355
  7. polars/_plr.py +0 -99
  8. polars/_plr.pyi +0 -2496
  9. polars/_reexport.py +0 -23
  10. polars/_typing.py +0 -478
  11. polars/_utils/__init__.py +0 -37
  12. polars/_utils/async_.py +0 -102
  13. polars/_utils/cache.py +0 -176
  14. polars/_utils/cloud.py +0 -40
  15. polars/_utils/constants.py +0 -29
  16. polars/_utils/construction/__init__.py +0 -46
  17. polars/_utils/construction/dataframe.py +0 -1397
  18. polars/_utils/construction/other.py +0 -72
  19. polars/_utils/construction/series.py +0 -560
  20. polars/_utils/construction/utils.py +0 -118
  21. polars/_utils/convert.py +0 -224
  22. polars/_utils/deprecation.py +0 -406
  23. polars/_utils/getitem.py +0 -457
  24. polars/_utils/logging.py +0 -11
  25. polars/_utils/nest_asyncio.py +0 -264
  26. polars/_utils/parquet.py +0 -15
  27. polars/_utils/parse/__init__.py +0 -12
  28. polars/_utils/parse/expr.py +0 -242
  29. polars/_utils/polars_version.py +0 -19
  30. polars/_utils/pycapsule.py +0 -53
  31. polars/_utils/scan.py +0 -27
  32. polars/_utils/serde.py +0 -63
  33. polars/_utils/slice.py +0 -215
  34. polars/_utils/udfs.py +0 -1251
  35. polars/_utils/unstable.py +0 -63
  36. polars/_utils/various.py +0 -782
  37. polars/_utils/wrap.py +0 -25
  38. polars/api.py +0 -370
  39. polars/catalog/__init__.py +0 -0
  40. polars/catalog/unity/__init__.py +0 -19
  41. polars/catalog/unity/client.py +0 -733
  42. polars/catalog/unity/models.py +0 -152
  43. polars/config.py +0 -1571
  44. polars/convert/__init__.py +0 -25
  45. polars/convert/general.py +0 -1046
  46. polars/convert/normalize.py +0 -261
  47. polars/dataframe/__init__.py +0 -5
  48. polars/dataframe/_html.py +0 -186
  49. polars/dataframe/frame.py +0 -12582
  50. polars/dataframe/group_by.py +0 -1067
  51. polars/dataframe/plotting.py +0 -257
  52. polars/datatype_expr/__init__.py +0 -5
  53. polars/datatype_expr/array.py +0 -56
  54. polars/datatype_expr/datatype_expr.py +0 -304
  55. polars/datatype_expr/list.py +0 -18
  56. polars/datatype_expr/struct.py +0 -69
  57. polars/datatypes/__init__.py +0 -122
  58. polars/datatypes/_parse.py +0 -195
  59. polars/datatypes/_utils.py +0 -48
  60. polars/datatypes/classes.py +0 -1213
  61. polars/datatypes/constants.py +0 -11
  62. polars/datatypes/constructor.py +0 -172
  63. polars/datatypes/convert.py +0 -366
  64. polars/datatypes/group.py +0 -130
  65. polars/exceptions.py +0 -230
  66. polars/expr/__init__.py +0 -7
  67. polars/expr/array.py +0 -964
  68. polars/expr/binary.py +0 -346
  69. polars/expr/categorical.py +0 -306
  70. polars/expr/datetime.py +0 -2620
  71. polars/expr/expr.py +0 -11272
  72. polars/expr/list.py +0 -1408
  73. polars/expr/meta.py +0 -444
  74. polars/expr/name.py +0 -321
  75. polars/expr/string.py +0 -3045
  76. polars/expr/struct.py +0 -357
  77. polars/expr/whenthen.py +0 -185
  78. polars/functions/__init__.py +0 -193
  79. polars/functions/aggregation/__init__.py +0 -33
  80. polars/functions/aggregation/horizontal.py +0 -298
  81. polars/functions/aggregation/vertical.py +0 -341
  82. polars/functions/as_datatype.py +0 -848
  83. polars/functions/business.py +0 -138
  84. polars/functions/col.py +0 -384
  85. polars/functions/datatype.py +0 -121
  86. polars/functions/eager.py +0 -524
  87. polars/functions/escape_regex.py +0 -29
  88. polars/functions/lazy.py +0 -2751
  89. polars/functions/len.py +0 -68
  90. polars/functions/lit.py +0 -210
  91. polars/functions/random.py +0 -22
  92. polars/functions/range/__init__.py +0 -19
  93. polars/functions/range/_utils.py +0 -15
  94. polars/functions/range/date_range.py +0 -303
  95. polars/functions/range/datetime_range.py +0 -370
  96. polars/functions/range/int_range.py +0 -348
  97. polars/functions/range/linear_space.py +0 -311
  98. polars/functions/range/time_range.py +0 -287
  99. polars/functions/repeat.py +0 -301
  100. polars/functions/whenthen.py +0 -353
  101. polars/interchange/__init__.py +0 -10
  102. polars/interchange/buffer.py +0 -77
  103. polars/interchange/column.py +0 -190
  104. polars/interchange/dataframe.py +0 -230
  105. polars/interchange/from_dataframe.py +0 -328
  106. polars/interchange/protocol.py +0 -303
  107. polars/interchange/utils.py +0 -170
  108. polars/io/__init__.py +0 -64
  109. polars/io/_utils.py +0 -317
  110. polars/io/avro.py +0 -49
  111. polars/io/clipboard.py +0 -36
  112. polars/io/cloud/__init__.py +0 -17
  113. polars/io/cloud/_utils.py +0 -80
  114. polars/io/cloud/credential_provider/__init__.py +0 -17
  115. polars/io/cloud/credential_provider/_builder.py +0 -520
  116. polars/io/cloud/credential_provider/_providers.py +0 -618
  117. polars/io/csv/__init__.py +0 -9
  118. polars/io/csv/_utils.py +0 -38
  119. polars/io/csv/batched_reader.py +0 -142
  120. polars/io/csv/functions.py +0 -1495
  121. polars/io/database/__init__.py +0 -6
  122. polars/io/database/_arrow_registry.py +0 -70
  123. polars/io/database/_cursor_proxies.py +0 -147
  124. polars/io/database/_executor.py +0 -578
  125. polars/io/database/_inference.py +0 -314
  126. polars/io/database/_utils.py +0 -144
  127. polars/io/database/functions.py +0 -516
  128. polars/io/delta.py +0 -499
  129. polars/io/iceberg/__init__.py +0 -3
  130. polars/io/iceberg/_utils.py +0 -697
  131. polars/io/iceberg/dataset.py +0 -556
  132. polars/io/iceberg/functions.py +0 -151
  133. polars/io/ipc/__init__.py +0 -8
  134. polars/io/ipc/functions.py +0 -514
  135. polars/io/json/__init__.py +0 -3
  136. polars/io/json/read.py +0 -101
  137. polars/io/ndjson.py +0 -332
  138. polars/io/parquet/__init__.py +0 -17
  139. polars/io/parquet/field_overwrites.py +0 -140
  140. polars/io/parquet/functions.py +0 -722
  141. polars/io/partition.py +0 -491
  142. polars/io/plugins.py +0 -187
  143. polars/io/pyarrow_dataset/__init__.py +0 -5
  144. polars/io/pyarrow_dataset/anonymous_scan.py +0 -109
  145. polars/io/pyarrow_dataset/functions.py +0 -79
  146. polars/io/scan_options/__init__.py +0 -5
  147. polars/io/scan_options/_options.py +0 -59
  148. polars/io/scan_options/cast_options.py +0 -126
  149. polars/io/spreadsheet/__init__.py +0 -6
  150. polars/io/spreadsheet/_utils.py +0 -52
  151. polars/io/spreadsheet/_write_utils.py +0 -647
  152. polars/io/spreadsheet/functions.py +0 -1323
  153. polars/lazyframe/__init__.py +0 -9
  154. polars/lazyframe/engine_config.py +0 -61
  155. polars/lazyframe/frame.py +0 -8564
  156. polars/lazyframe/group_by.py +0 -669
  157. polars/lazyframe/in_process.py +0 -42
  158. polars/lazyframe/opt_flags.py +0 -333
  159. polars/meta/__init__.py +0 -14
  160. polars/meta/build.py +0 -33
  161. polars/meta/index_type.py +0 -27
  162. polars/meta/thread_pool.py +0 -50
  163. polars/meta/versions.py +0 -120
  164. polars/ml/__init__.py +0 -0
  165. polars/ml/torch.py +0 -213
  166. polars/ml/utilities.py +0 -30
  167. polars/plugins.py +0 -155
  168. polars/py.typed +0 -0
  169. polars/pyproject.toml +0 -103
  170. polars/schema.py +0 -265
  171. polars/selectors.py +0 -3117
  172. polars/series/__init__.py +0 -5
  173. polars/series/array.py +0 -776
  174. polars/series/binary.py +0 -254
  175. polars/series/categorical.py +0 -246
  176. polars/series/datetime.py +0 -2275
  177. polars/series/list.py +0 -1087
  178. polars/series/plotting.py +0 -191
  179. polars/series/series.py +0 -9197
  180. polars/series/string.py +0 -2367
  181. polars/series/struct.py +0 -154
  182. polars/series/utils.py +0 -191
  183. polars/sql/__init__.py +0 -7
  184. polars/sql/context.py +0 -677
  185. polars/sql/functions.py +0 -139
  186. polars/string_cache.py +0 -185
  187. polars/testing/__init__.py +0 -13
  188. polars/testing/asserts/__init__.py +0 -9
  189. polars/testing/asserts/frame.py +0 -231
  190. polars/testing/asserts/series.py +0 -219
  191. polars/testing/asserts/utils.py +0 -12
  192. polars/testing/parametric/__init__.py +0 -33
  193. polars/testing/parametric/profiles.py +0 -107
  194. polars/testing/parametric/strategies/__init__.py +0 -22
  195. polars/testing/parametric/strategies/_utils.py +0 -14
  196. polars/testing/parametric/strategies/core.py +0 -615
  197. polars/testing/parametric/strategies/data.py +0 -452
  198. polars/testing/parametric/strategies/dtype.py +0 -436
  199. polars/testing/parametric/strategies/legacy.py +0 -169
  200. polars/type_aliases.py +0 -24
  201. polars_runtime_compat-1.34.0b3.dist-info/RECORD +0 -203
  202. {polars_runtime_compat-1.34.0b3.dist-info → polars_runtime_compat-1.34.0b4.dist-info}/WHEEL +0 -0
  203. {polars_runtime_compat-1.34.0b3.dist-info → polars_runtime_compat-1.34.0b4.dist-info}/licenses/LICENSE +0 -0
polars/sql/functions.py DELETED
@@ -1,139 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from typing import TYPE_CHECKING, Literal, overload
4
-
5
- if TYPE_CHECKING:
6
- from polars.dataframe import DataFrame
7
- from polars.lazyframe import LazyFrame
8
-
9
-
10
- __all__ = ["sql"]
11
-
12
-
13
- @overload
14
- def sql(query: str, *, eager: Literal[False] = False) -> LazyFrame: ...
15
-
16
-
17
- @overload
18
- def sql(query: str, *, eager: Literal[True]) -> DataFrame: ...
19
-
20
-
21
- def sql(query: str, *, eager: bool = False) -> DataFrame | LazyFrame:
22
- """
23
- Execute a SQL query against frames in the global namespace.
24
-
25
- .. versionadded:: 0.20.31
26
-
27
- Parameters
28
- ----------
29
- query
30
- SQL query to execute.
31
- eager
32
- Automatically collect the result and return a DataFrame instead of a LazyFrame.
33
-
34
- Notes
35
- -----
36
- * The Polars SQL engine can operate against Polars DataFrame, LazyFrame, and Series
37
- objects, as well as Pandas DataFrame and Series, PyArrow Table and RecordBatch.
38
- * Additional control over registration and execution behaviour is available
39
- with the :class:`SQLContext` object.
40
-
41
- See Also
42
- --------
43
- SQLContext
44
-
45
- Examples
46
- --------
47
- >>> lf1 = pl.LazyFrame({"a": [1, 2, 3], "b": [6, 7, 8], "c": ["z", "y", "x"]})
48
- >>> lf2 = pl.LazyFrame({"a": [3, 2, 1], "d": [125, -654, 888]})
49
-
50
- Query the LazyFrame using SQL:
51
-
52
- >>> lf1.sql("SELECT c, b FROM self WHERE a > 1").collect()
53
- shape: (2, 2)
54
- ┌─────┬─────┐
55
- │ c ┆ b │
56
- │ --- ┆ --- │
57
- │ str ┆ i64 │
58
- ╞═════╪═════╡
59
- │ y ┆ 7 │
60
- │ x ┆ 8 │
61
- └─────┴─────┘
62
-
63
- Join two LazyFrames:
64
-
65
- >>> pl.sql(
66
- ... '''
67
- ... SELECT lf1.*, d
68
- ... FROM lf1
69
- ... INNER JOIN lf2 USING (a)
70
- ... WHERE a > 1 AND b < 8
71
- ... '''
72
- ... ).collect()
73
- shape: (1, 4)
74
- ┌─────┬─────┬─────┬──────┐
75
- │ a ┆ b ┆ c ┆ d │
76
- │ --- ┆ --- ┆ --- ┆ --- │
77
- │ i64 ┆ i64 ┆ str ┆ i64 │
78
- ╞═════╪═════╪═════╪══════╡
79
- │ 2 ┆ 7 ┆ y ┆ -654 │
80
- └─────┴─────┴─────┴──────┘
81
-
82
- Apply SQL transforms and subsequently filter natively (you can freely mix SQL and
83
- native operations):
84
-
85
- >>> pl.sql(
86
- ... query='''
87
- ... SELECT
88
- ... a,
89
- ... (a % 2 == 0) AS a_is_even,
90
- ... (b::float4 / 2) AS "b/2",
91
- ... CONCAT_WS(':', c, c, c) AS c_c_c
92
- ... FROM lf1
93
- ... ORDER BY a
94
- ... ''',
95
- ... ).filter(~pl.col("c_c_c").str.starts_with("x")).collect()
96
- shape: (2, 4)
97
- ┌─────┬───────────┬─────┬───────┐
98
- │ a ┆ a_is_even ┆ b/2 ┆ c_c_c │
99
- │ --- ┆ --- ┆ --- ┆ --- │
100
- │ i64 ┆ bool ┆ f32 ┆ str │
101
- ╞═════╪═══════════╪═════╪═══════╡
102
- │ 1 ┆ false ┆ 3.0 ┆ z:z:z │
103
- │ 2 ┆ true ┆ 3.5 ┆ y:y:y │
104
- └─────┴───────────┴─────┴───────┘
105
-
106
- Join polars LazyFrame with a pandas DataFrame and a pyarrow Table:
107
-
108
- >>> import pandas as pd
109
- >>> import pyarrow as pa
110
- >>> pl_frame = lf1
111
- >>> pd_frame = pd.DataFrame({"a": [2, 3, 4], "d": [-0.5, 0.0, 0.5]})
112
- >>> pa_table = pa.Table.from_arrays(
113
- ... [pa.array([1, 2, 3]), pa.array(["x", "y", "z"])],
114
- ... names=["a", "e"],
115
- ... )
116
- >>> pl.sql(
117
- ... query='''
118
- ... SELECT pl_frame.*, d, e
119
- ... FROM pl_frame
120
- ... JOIN pd_frame USING(a)
121
- ... JOIN pa_table USING(a)
122
- ... ''',
123
- ... ).collect()
124
- shape: (2, 5)
125
- ┌─────┬─────┬─────┬──────┬─────┐
126
- │ a ┆ b ┆ c ┆ d ┆ e │
127
- │ --- ┆ --- ┆ --- ┆ --- ┆ --- │
128
- │ i64 ┆ i64 ┆ str ┆ f64 ┆ str │
129
- ╞═════╪═════╪═════╪══════╪═════╡
130
- │ 2 ┆ 7 ┆ y ┆ -0.5 ┆ y │
131
- │ 3 ┆ 8 ┆ x ┆ 0.0 ┆ z │
132
- └─────┴─────┴─────┴──────┴─────┘
133
- """
134
- from polars.sql import SQLContext
135
-
136
- return SQLContext.execute_global(
137
- query=query,
138
- eager=eager,
139
- )
polars/string_cache.py DELETED
@@ -1,185 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import contextlib
4
- from typing import TYPE_CHECKING
5
-
6
- with contextlib.suppress(ImportError): # Module not available when building docs
7
- import polars._plr as plr
8
- from polars._plr import PyStringCacheHolder
9
-
10
- if TYPE_CHECKING:
11
- import sys
12
- from types import TracebackType
13
-
14
- if sys.version_info >= (3, 11):
15
- from typing import Self
16
- else:
17
- from typing_extensions import Self
18
-
19
-
20
- __all__ = [
21
- "StringCache",
22
- "disable_string_cache",
23
- "enable_string_cache",
24
- "using_string_cache",
25
- ]
26
-
27
-
28
- class StringCache(contextlib.ContextDecorator):
29
- """
30
- Context manager for enabling and disabling the global string cache.
31
-
32
- :class:`Categorical` columns created under the same global string cache have
33
- the same underlying physical value when string values are equal. This allows the
34
- columns to be concatenated or used in a join operation, for example.
35
-
36
- Notes
37
- -----
38
- Enabling the global string cache introduces some overhead.
39
- The amount of overhead depends on the number of categories in your data.
40
- It is advised to enable the global string cache only when strictly necessary.
41
-
42
- If `StringCache` calls are nested, the global string cache will only be disabled
43
- and cleared when the outermost context exits.
44
-
45
- Examples
46
- --------
47
- Construct two Series using the same global string cache.
48
-
49
- >>> with pl.StringCache():
50
- ... s1 = pl.Series("color", ["red", "green", "red"], dtype=pl.Categorical)
51
- ... s2 = pl.Series("color", ["blue", "red", "green"], dtype=pl.Categorical)
52
-
53
- As both Series are constructed under the same global string cache,
54
- they can be concatenated.
55
-
56
- >>> pl.concat([s1, s2])
57
- shape: (6,)
58
- Series: 'color' [cat]
59
- [
60
- "red"
61
- "green"
62
- "red"
63
- "blue"
64
- "red"
65
- "green"
66
- ]
67
-
68
- The class can also be used as a function decorator, in which case the string cache
69
- is enabled during function execution, and disabled afterwards.
70
-
71
- >>> @pl.StringCache()
72
- ... def construct_categoricals() -> pl.Series:
73
- ... s1 = pl.Series("color", ["red", "green", "red"], dtype=pl.Categorical)
74
- ... s2 = pl.Series("color", ["blue", "red", "green"], dtype=pl.Categorical)
75
- ... return pl.concat([s1, s2])
76
- """
77
-
78
- def __enter__(self) -> Self:
79
- self._string_cache = PyStringCacheHolder()
80
- return self
81
-
82
- def __exit__(
83
- self,
84
- exc_type: type[BaseException] | None,
85
- exc_val: BaseException | None,
86
- exc_tb: TracebackType | None,
87
- ) -> None:
88
- del self._string_cache
89
-
90
-
91
- def enable_string_cache() -> None:
92
- """
93
- Enable the global string cache.
94
-
95
- :class:`Categorical` columns created under the same global string cache have
96
- the same underlying physical value when string values are equal. This allows the
97
- columns to be concatenated or used in a join operation, for example.
98
-
99
- See Also
100
- --------
101
- StringCache : Context manager for enabling and disabling the string cache.
102
- disable_string_cache : Function to disable the string cache.
103
-
104
- Notes
105
- -----
106
- Enabling the global string cache introduces some overhead.
107
- The amount of overhead depends on the number of categories in your data.
108
- It is advised to enable the global string cache only when strictly necessary.
109
-
110
- Consider using the :class:`StringCache` context manager for a more reliable way of
111
- enabling and disabling the string cache.
112
-
113
- Examples
114
- --------
115
- Construct two Series using the same global string cache.
116
-
117
- >>> pl.enable_string_cache()
118
- >>> s1 = pl.Series("color", ["red", "green", "red"], dtype=pl.Categorical)
119
- >>> s2 = pl.Series("color", ["blue", "red", "green"], dtype=pl.Categorical)
120
- >>> pl.disable_string_cache()
121
-
122
- As both Series are constructed under the same global string cache,
123
- they can be concatenated.
124
-
125
- >>> pl.concat([s1, s2])
126
- shape: (6,)
127
- Series: 'color' [cat]
128
- [
129
- "red"
130
- "green"
131
- "red"
132
- "blue"
133
- "red"
134
- "green"
135
- ]
136
- """
137
- plr.enable_string_cache()
138
-
139
-
140
- def disable_string_cache() -> None:
141
- """
142
- Disable and clear the global string cache.
143
-
144
- See Also
145
- --------
146
- enable_string_cache : Function to enable the string cache.
147
- StringCache : Context manager for enabling and disabling the string cache.
148
-
149
- Notes
150
- -----
151
- Consider using the :class:`StringCache` context manager for a more reliable way of
152
- enabling and disabling the string cache.
153
-
154
- When used in conjunction with the :class:`StringCache` context manager, the string
155
- cache will not be disabled until the context manager exits.
156
-
157
- Examples
158
- --------
159
- Construct two Series using the same global string cache.
160
-
161
- >>> pl.enable_string_cache()
162
- >>> s1 = pl.Series("color", ["red", "green", "red"], dtype=pl.Categorical)
163
- >>> s2 = pl.Series("color", ["blue", "red", "green"], dtype=pl.Categorical)
164
- >>> pl.disable_string_cache()
165
-
166
- As both Series are constructed under the same global string cache,
167
- they can be concatenated.
168
-
169
- >>> pl.concat([s1, s2])
170
- shape: (6,)
171
- Series: 'color' [cat]
172
- [
173
- "red"
174
- "green"
175
- "red"
176
- "blue"
177
- "red"
178
- "green"
179
- ]
180
- """
181
-
182
-
183
- def using_string_cache() -> bool:
184
- """Check whether the global string cache is enabled."""
185
- return plr.using_string_cache()
@@ -1,13 +0,0 @@
1
- from polars.testing.asserts import (
2
- assert_frame_equal,
3
- assert_frame_not_equal,
4
- assert_series_equal,
5
- assert_series_not_equal,
6
- )
7
-
8
- __all__ = [
9
- "assert_frame_equal",
10
- "assert_frame_not_equal",
11
- "assert_series_equal",
12
- "assert_series_not_equal",
13
- ]
@@ -1,9 +0,0 @@
1
- from polars.testing.asserts.frame import assert_frame_equal, assert_frame_not_equal
2
- from polars.testing.asserts.series import assert_series_equal, assert_series_not_equal
3
-
4
- __all__ = [
5
- "assert_frame_equal",
6
- "assert_frame_not_equal",
7
- "assert_series_equal",
8
- "assert_series_not_equal",
9
- ]
@@ -1,231 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import contextlib
4
- from typing import cast
5
-
6
- from polars._utils.deprecation import deprecate_renamed_parameter
7
- from polars.dataframe import DataFrame
8
- from polars.lazyframe import LazyFrame
9
- from polars.testing.asserts.utils import raise_assertion_error
10
-
11
- with contextlib.suppress(ImportError): # Module not available when building docs
12
- from polars._plr import assert_dataframe_equal_py
13
-
14
-
15
- def _assert_correct_input_type(
16
- left: DataFrame | LazyFrame, right: DataFrame | LazyFrame
17
- ) -> bool:
18
- __tracebackhide__ = True
19
-
20
- if isinstance(left, DataFrame) and isinstance(right, DataFrame):
21
- return False
22
- elif isinstance(left, LazyFrame) and isinstance(right, LazyFrame):
23
- return True
24
- else:
25
- raise_assertion_error(
26
- "inputs",
27
- "unexpected input types",
28
- type(left).__name__,
29
- type(right).__name__,
30
- )
31
-
32
-
33
- @deprecate_renamed_parameter("check_dtype", "check_dtypes", version="0.20.31")
34
- @deprecate_renamed_parameter("rtol", "rel_tol", version="1.32.3")
35
- @deprecate_renamed_parameter("atol", "abs_tol", version="1.32.3")
36
- def assert_frame_equal(
37
- left: DataFrame | LazyFrame,
38
- right: DataFrame | LazyFrame,
39
- *,
40
- check_row_order: bool = True,
41
- check_column_order: bool = True,
42
- check_dtypes: bool = True,
43
- check_exact: bool = False,
44
- rel_tol: float = 1e-5,
45
- abs_tol: float = 1e-8,
46
- categorical_as_str: bool = False,
47
- ) -> None:
48
- """
49
- Assert that the left and right frame are equal.
50
-
51
- Raises a detailed `AssertionError` if the frames differ.
52
- This function is intended for use in unit tests.
53
-
54
- .. versionchanged:: 0.20.31
55
- The `check_dtype` parameter was renamed `check_dtypes`.
56
-
57
- .. versionchanged:: 1.32.3
58
- The `rtol` and `atol` parameters were renamed to `rel_tol` and `abs_tol`,
59
- respectively.
60
-
61
- Parameters
62
- ----------
63
- left
64
- The first DataFrame or LazyFrame to compare.
65
- right
66
- The second DataFrame or LazyFrame to compare.
67
- check_row_order
68
- Requires row order to match.
69
- check_column_order
70
- Requires column order to match.
71
- check_dtypes
72
- Requires data types to match.
73
- check_exact
74
- Requires float values to match exactly. If set to `False`, values are considered
75
- equal when within tolerance of each other (see `rel_tol` and `abs_tol`).
76
- Only affects columns with a Float data type.
77
- rel_tol
78
- Relative tolerance for inexact checking. Fraction of values in `right`.
79
- abs_tol
80
- Absolute tolerance for inexact checking.
81
- categorical_as_str
82
- Cast categorical columns to string before comparing. Enabling this helps
83
- compare columns that do not share the same string cache.
84
-
85
- See Also
86
- --------
87
- assert_series_equal
88
- assert_frame_not_equal
89
-
90
- Notes
91
- -----
92
- When using pytest, it may be worthwhile to shorten Python traceback printing
93
- by passing `--tb=short`. The default mode tends to be unhelpfully verbose.
94
- More information in the
95
- `pytest docs <https://docs.pytest.org/en/latest/how-to/output.html#modifying-python-traceback-printing>`_.
96
-
97
- Examples
98
- --------
99
- >>> from polars.testing import assert_frame_equal
100
- >>> df1 = pl.DataFrame({"a": [1, 2, 3]})
101
- >>> df2 = pl.DataFrame({"a": [1, 5, 3]})
102
- >>> assert_frame_equal(df1, df2)
103
- Traceback (most recent call last):
104
- ...
105
- AssertionError: DataFrames are different (value mismatch for column "a")
106
- [left]: shape: (3,)
107
- Series: 'a' [i64]
108
- [
109
- 1
110
- 2
111
- 3
112
- ]
113
- [right]: shape: (3,)
114
- Series: 'a' [i64]
115
- [
116
- 1
117
- 5
118
- 3
119
- ]
120
- """
121
- __tracebackhide__ = True
122
-
123
- lazy = _assert_correct_input_type(left, right)
124
-
125
- # Rust back-end function expects DataFrames so LazyFrames must be collected
126
- if lazy:
127
- left, right = left.collect(), right.collect() # type: ignore[union-attr]
128
-
129
- # Tell type checker these are now DataFrames to prevent type errors
130
- left, right = cast("DataFrame", left), cast("DataFrame", right)
131
-
132
- assert_dataframe_equal_py(
133
- left._df,
134
- right._df,
135
- check_row_order=check_row_order,
136
- check_column_order=check_column_order,
137
- check_dtypes=check_dtypes,
138
- check_exact=check_exact,
139
- rel_tol=rel_tol,
140
- abs_tol=abs_tol,
141
- categorical_as_str=categorical_as_str,
142
- )
143
-
144
-
145
- @deprecate_renamed_parameter("check_dtype", "check_dtypes", version="0.20.31")
146
- @deprecate_renamed_parameter("rtol", "rel_tol", version="1.32.3")
147
- @deprecate_renamed_parameter("atol", "abs_tol", version="1.32.3")
148
- def assert_frame_not_equal(
149
- left: DataFrame | LazyFrame,
150
- right: DataFrame | LazyFrame,
151
- *,
152
- check_row_order: bool = True,
153
- check_column_order: bool = True,
154
- check_dtypes: bool = True,
155
- check_exact: bool = False,
156
- rel_tol: float = 1e-5,
157
- abs_tol: float = 1e-8,
158
- categorical_as_str: bool = False,
159
- ) -> None:
160
- """
161
- Assert that the left and right frame are **not** equal.
162
-
163
- This function is intended for use in unit tests.
164
-
165
- .. versionchanged:: 0.20.31
166
- The `check_dtype` parameter was renamed `check_dtypes`.
167
-
168
- .. versionchanged:: 1.32.3
169
- The `rtol` and `atol` parameters were renamed to `rel_tol` and `abs_tol`,
170
- respectively.
171
-
172
- Parameters
173
- ----------
174
- left
175
- The first DataFrame or LazyFrame to compare.
176
- right
177
- The second DataFrame or LazyFrame to compare.
178
- check_row_order
179
- Requires row order to match.
180
- check_column_order
181
- Requires column order to match.
182
- check_dtypes
183
- Requires data types to match.
184
- check_exact
185
- Requires float values to match exactly. If set to `False`, values are considered
186
- equal when within tolerance of each other (see `rel_tol` and `abs_tol`).
187
- Only affects columns with a Float data type.
188
- rel_tol
189
- Relative tolerance for inexact checking. Fraction of values in `right`.
190
- abs_tol
191
- Absolute tolerance for inexact checking.
192
- categorical_as_str
193
- Cast categorical columns to string before comparing. Enabling this helps
194
- compare columns that do not share the same string cache.
195
-
196
- See Also
197
- --------
198
- assert_frame_equal
199
- assert_series_not_equal
200
-
201
- Examples
202
- --------
203
- >>> from polars.testing import assert_frame_not_equal
204
- >>> df1 = pl.DataFrame({"a": [1, 2, 3]})
205
- >>> df2 = pl.DataFrame({"a": [1, 2, 3]})
206
- >>> assert_frame_not_equal(df1, df2)
207
- Traceback (most recent call last):
208
- ...
209
- AssertionError: DataFrames are equal (but are expected not to be)
210
- """
211
- __tracebackhide__ = True
212
-
213
- lazy = _assert_correct_input_type(left, right)
214
- try:
215
- assert_frame_equal(
216
- left=left,
217
- right=right,
218
- check_column_order=check_column_order,
219
- check_row_order=check_row_order,
220
- check_dtypes=check_dtypes,
221
- check_exact=check_exact,
222
- rel_tol=rel_tol,
223
- abs_tol=abs_tol,
224
- categorical_as_str=categorical_as_str,
225
- )
226
- except AssertionError:
227
- return
228
- else:
229
- objects = "LazyFrames" if lazy else "DataFrames"
230
- msg = f"{objects} are equal (but are expected not to be)"
231
- raise AssertionError(msg)