polars-runtime-compat 1.34.0b2__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.
- _polars_runtime_compat/_polars_runtime_compat.abi3.so +0 -0
- {polars_runtime_compat-1.34.0b2.dist-info → polars_runtime_compat-1.34.0b4.dist-info}/METADATA +1 -1
- polars_runtime_compat-1.34.0b4.dist-info/RECORD +6 -0
- polars/__init__.py +0 -528
- polars/_cpu_check.py +0 -265
- polars/_dependencies.py +0 -355
- polars/_plr.py +0 -99
- polars/_plr.pyi +0 -2496
- polars/_reexport.py +0 -23
- polars/_typing.py +0 -478
- polars/_utils/__init__.py +0 -37
- polars/_utils/async_.py +0 -102
- polars/_utils/cache.py +0 -176
- polars/_utils/cloud.py +0 -40
- polars/_utils/constants.py +0 -29
- polars/_utils/construction/__init__.py +0 -46
- polars/_utils/construction/dataframe.py +0 -1397
- polars/_utils/construction/other.py +0 -72
- polars/_utils/construction/series.py +0 -560
- polars/_utils/construction/utils.py +0 -118
- polars/_utils/convert.py +0 -224
- polars/_utils/deprecation.py +0 -406
- polars/_utils/getitem.py +0 -457
- polars/_utils/logging.py +0 -11
- polars/_utils/nest_asyncio.py +0 -264
- polars/_utils/parquet.py +0 -15
- polars/_utils/parse/__init__.py +0 -12
- polars/_utils/parse/expr.py +0 -242
- polars/_utils/polars_version.py +0 -19
- polars/_utils/pycapsule.py +0 -53
- polars/_utils/scan.py +0 -27
- polars/_utils/serde.py +0 -63
- polars/_utils/slice.py +0 -215
- polars/_utils/udfs.py +0 -1251
- polars/_utils/unstable.py +0 -63
- polars/_utils/various.py +0 -782
- polars/_utils/wrap.py +0 -25
- polars/api.py +0 -370
- polars/catalog/__init__.py +0 -0
- polars/catalog/unity/__init__.py +0 -19
- polars/catalog/unity/client.py +0 -733
- polars/catalog/unity/models.py +0 -152
- polars/config.py +0 -1571
- polars/convert/__init__.py +0 -25
- polars/convert/general.py +0 -1046
- polars/convert/normalize.py +0 -261
- polars/dataframe/__init__.py +0 -5
- polars/dataframe/_html.py +0 -186
- polars/dataframe/frame.py +0 -12582
- polars/dataframe/group_by.py +0 -1067
- polars/dataframe/plotting.py +0 -257
- polars/datatype_expr/__init__.py +0 -5
- polars/datatype_expr/array.py +0 -56
- polars/datatype_expr/datatype_expr.py +0 -304
- polars/datatype_expr/list.py +0 -18
- polars/datatype_expr/struct.py +0 -69
- polars/datatypes/__init__.py +0 -122
- polars/datatypes/_parse.py +0 -195
- polars/datatypes/_utils.py +0 -48
- polars/datatypes/classes.py +0 -1213
- polars/datatypes/constants.py +0 -11
- polars/datatypes/constructor.py +0 -172
- polars/datatypes/convert.py +0 -366
- polars/datatypes/group.py +0 -130
- polars/exceptions.py +0 -230
- polars/expr/__init__.py +0 -7
- polars/expr/array.py +0 -964
- polars/expr/binary.py +0 -346
- polars/expr/categorical.py +0 -306
- polars/expr/datetime.py +0 -2620
- polars/expr/expr.py +0 -11272
- polars/expr/list.py +0 -1408
- polars/expr/meta.py +0 -444
- polars/expr/name.py +0 -321
- polars/expr/string.py +0 -3045
- polars/expr/struct.py +0 -357
- polars/expr/whenthen.py +0 -185
- polars/functions/__init__.py +0 -193
- polars/functions/aggregation/__init__.py +0 -33
- polars/functions/aggregation/horizontal.py +0 -298
- polars/functions/aggregation/vertical.py +0 -341
- polars/functions/as_datatype.py +0 -848
- polars/functions/business.py +0 -138
- polars/functions/col.py +0 -384
- polars/functions/datatype.py +0 -121
- polars/functions/eager.py +0 -524
- polars/functions/escape_regex.py +0 -29
- polars/functions/lazy.py +0 -2751
- polars/functions/len.py +0 -68
- polars/functions/lit.py +0 -210
- polars/functions/random.py +0 -22
- polars/functions/range/__init__.py +0 -19
- polars/functions/range/_utils.py +0 -15
- polars/functions/range/date_range.py +0 -303
- polars/functions/range/datetime_range.py +0 -370
- polars/functions/range/int_range.py +0 -348
- polars/functions/range/linear_space.py +0 -311
- polars/functions/range/time_range.py +0 -287
- polars/functions/repeat.py +0 -301
- polars/functions/whenthen.py +0 -353
- polars/interchange/__init__.py +0 -10
- polars/interchange/buffer.py +0 -77
- polars/interchange/column.py +0 -190
- polars/interchange/dataframe.py +0 -230
- polars/interchange/from_dataframe.py +0 -328
- polars/interchange/protocol.py +0 -303
- polars/interchange/utils.py +0 -170
- polars/io/__init__.py +0 -64
- polars/io/_utils.py +0 -317
- polars/io/avro.py +0 -49
- polars/io/clipboard.py +0 -36
- polars/io/cloud/__init__.py +0 -17
- polars/io/cloud/_utils.py +0 -80
- polars/io/cloud/credential_provider/__init__.py +0 -17
- polars/io/cloud/credential_provider/_builder.py +0 -520
- polars/io/cloud/credential_provider/_providers.py +0 -618
- polars/io/csv/__init__.py +0 -9
- polars/io/csv/_utils.py +0 -38
- polars/io/csv/batched_reader.py +0 -142
- polars/io/csv/functions.py +0 -1495
- polars/io/database/__init__.py +0 -6
- polars/io/database/_arrow_registry.py +0 -70
- polars/io/database/_cursor_proxies.py +0 -147
- polars/io/database/_executor.py +0 -578
- polars/io/database/_inference.py +0 -314
- polars/io/database/_utils.py +0 -144
- polars/io/database/functions.py +0 -516
- polars/io/delta.py +0 -499
- polars/io/iceberg/__init__.py +0 -3
- polars/io/iceberg/_utils.py +0 -697
- polars/io/iceberg/dataset.py +0 -556
- polars/io/iceberg/functions.py +0 -151
- polars/io/ipc/__init__.py +0 -8
- polars/io/ipc/functions.py +0 -514
- polars/io/json/__init__.py +0 -3
- polars/io/json/read.py +0 -101
- polars/io/ndjson.py +0 -332
- polars/io/parquet/__init__.py +0 -17
- polars/io/parquet/field_overwrites.py +0 -140
- polars/io/parquet/functions.py +0 -722
- polars/io/partition.py +0 -491
- polars/io/plugins.py +0 -187
- polars/io/pyarrow_dataset/__init__.py +0 -5
- polars/io/pyarrow_dataset/anonymous_scan.py +0 -109
- polars/io/pyarrow_dataset/functions.py +0 -79
- polars/io/scan_options/__init__.py +0 -5
- polars/io/scan_options/_options.py +0 -59
- polars/io/scan_options/cast_options.py +0 -126
- polars/io/spreadsheet/__init__.py +0 -6
- polars/io/spreadsheet/_utils.py +0 -52
- polars/io/spreadsheet/_write_utils.py +0 -647
- polars/io/spreadsheet/functions.py +0 -1323
- polars/lazyframe/__init__.py +0 -9
- polars/lazyframe/engine_config.py +0 -61
- polars/lazyframe/frame.py +0 -8564
- polars/lazyframe/group_by.py +0 -669
- polars/lazyframe/in_process.py +0 -42
- polars/lazyframe/opt_flags.py +0 -333
- polars/meta/__init__.py +0 -14
- polars/meta/build.py +0 -33
- polars/meta/index_type.py +0 -27
- polars/meta/thread_pool.py +0 -50
- polars/meta/versions.py +0 -120
- polars/ml/__init__.py +0 -0
- polars/ml/torch.py +0 -213
- polars/ml/utilities.py +0 -30
- polars/plugins.py +0 -155
- polars/py.typed +0 -0
- polars/pyproject.toml +0 -96
- polars/schema.py +0 -265
- polars/selectors.py +0 -3117
- polars/series/__init__.py +0 -5
- polars/series/array.py +0 -776
- polars/series/binary.py +0 -254
- polars/series/categorical.py +0 -246
- polars/series/datetime.py +0 -2275
- polars/series/list.py +0 -1087
- polars/series/plotting.py +0 -191
- polars/series/series.py +0 -9197
- polars/series/string.py +0 -2367
- polars/series/struct.py +0 -154
- polars/series/utils.py +0 -191
- polars/sql/__init__.py +0 -7
- polars/sql/context.py +0 -677
- polars/sql/functions.py +0 -139
- polars/string_cache.py +0 -185
- polars/testing/__init__.py +0 -13
- polars/testing/asserts/__init__.py +0 -9
- polars/testing/asserts/frame.py +0 -231
- polars/testing/asserts/series.py +0 -219
- polars/testing/asserts/utils.py +0 -12
- polars/testing/parametric/__init__.py +0 -33
- polars/testing/parametric/profiles.py +0 -107
- polars/testing/parametric/strategies/__init__.py +0 -22
- polars/testing/parametric/strategies/_utils.py +0 -14
- polars/testing/parametric/strategies/core.py +0 -615
- polars/testing/parametric/strategies/data.py +0 -452
- polars/testing/parametric/strategies/dtype.py +0 -436
- polars/testing/parametric/strategies/legacy.py +0 -169
- polars/type_aliases.py +0 -24
- polars_runtime_compat-1.34.0b2.dist-info/RECORD +0 -203
- {polars_runtime_compat-1.34.0b2.dist-info → polars_runtime_compat-1.34.0b4.dist-info}/WHEEL +0 -0
- {polars_runtime_compat-1.34.0b2.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()
|
polars/testing/__init__.py
DELETED
|
@@ -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
|
-
]
|
polars/testing/asserts/frame.py
DELETED
|
@@ -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)
|