py-polars
Verification
Scope
Column names, data types, and values of 315 results: data frame methods, functions, joins, grouping, windows, sorting, casts, SQL, and the str, dt, list, struct, and arr namespaces. Identical inputs in both implementations.
References
- Reference
- py-polars 1.43.2
- Versions
- py-polars 1.43.2, Polars Rust crate 0.55.2, PHP 8.5.12
Data
- Inputs
- Fixed data frames built identically in scripts/pyfixtures.py and tests/pyfixtures.php: a 6-row data frame of integers, floats, strings, booleans, dates, datetimes, and lists with nulls in every column; lookup tables; a sorted time series; and quotes for as-of joins.
Method
scripts/pyfixtures.py runs each case in py-polars and writes tests/fixtures/py/expected.json. tests/pyfixtures.php runs the same cases in phpolars and compares the results. phpolars embeds the Polars Rust crate 0.55.2; py-polars 1.43.2 is the release with the closest Rust core. Error statistics cover numeric values only.
- Check
- Comparison with a reference implementation
- Recorded
- 2026-11-02, PHP 8.5.12, Ubuntu 24.04.5 LTS (x86_64), commit d7d3aff
Tolerances
exact equality
Applies to: Results without floats
Column names, data types, integers, strings, booleans, temporal values, and null positions
|x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly
Applies to: Finite floats
No absolute term, so a zero reference requires an exact zero, and all other values compare exactly
exact equality
Applies to: Expected exceptions
Exception class name, message not compared
x: package value; r: reference value. Absolute error: |x − r|. Relative error: |x − r| / |r|; undefined at r = 0. Max errors are over the values a row compares.
Results
315 comparisons in 17 categories: 315 pass, 0 fail, 0 skipped.
By category
| Category | Comparisons | Largest abs. error | Largest rel. error | Status |
|---|---|---|---|---|
| Expressions | 52 | 8.9e-16 | 2.2e-16 | pass |
| Filtering and sorting | 22 | 0 | 0 | pass |
| Grouping and summaries | 26 | 0 | 0 | pass |
| Joins | 15 | 0 | 0 | pass |
| Missing values | 10 | 0 | 0 | pass |
| Reshaping and concatenation | 17 | 0 | 0 | pass |
| DataFrame methods | 36 | 8.9e-16 | 2.4e-15 | pass |
| Windows, rolling, and EWM | 17 | 0 | 0 | pass |
| Strings | 23 | 0 | 0 | pass |
| Dates and times | 15 | 0 | 0 | pass |
| Lists, arrays, and structs | 17 | 0 | 0 | pass |
| Casts | 8 | 0 | 0 | pass |
| Series | 15 | 8.9e-16 | 1.5e-16 | pass |
| Functions | 28 | 2.2e-16 | 2.0e-16 | pass |
| Categoricals and binary | 4 | 0 | 0 | pass |
| Selectors | 2 | 0 | 0 | pass |
| SQL | 8 | 0 | 0 | pass |
All 315 comparisons
| Category | Case | Quantity | Criterion | Values | Package value | Reference value | Max abs. error | Max rel. error | Status |
|---|---|---|---|---|---|---|---|---|---|
| Expressions | select_arith | 6 rows × 9 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 54 | 0 | 0 | pass | ||
| select_float_specials | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | |||
| select_int_div_neg | 4 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 12 | 0 | 0 | pass | |||
| select_literals | 1 row × 5 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 5 | 0 | 0 | pass | |||
| select_literal_broadcast | 6 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 18 | 0 | 0 | pass | |||
| int32_plus_literal | 6 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 24 | 0 | 0 | pass | |||
| with_columns_compare | 6 rows × 13 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 78 | 0 | 0 | pass | |||
| with_columns_overwrite | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | |||
| bool_logic | 6 rows × 5 columns | exact equality | 30 | 0 | 0 | pass | |||
| horizontal_fns | 6 rows × 7 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 42 | 0 | 0 | pass | |||
| Filtering and sorting | filter_gt | 3 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | ||
| filter_multi | 1 row × 3 columns | exact equality | 3 | 0 | 0 | pass | |||
| filter_or_null | 2 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 6 | 0 | 0 | pass | |||
| filter_bool_col | 3 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | |||
| filter_date | 3 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | |||
| filter_datetime | 3 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | |||
| sort_single | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| sort_desc_nulls_last | 6 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 12 | 0 | 0 | pass | |||
| sort_multi | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| sort_multi_nulls_last | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| sort_multi_mixed_nulls_last | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| sort_expr | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| sort_date_desc | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| sort_string | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| sort_bool | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| Grouping and summaries | gb_sum_mean | 4 rows × 5 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 20 | 0 | 0 | pass | ||
| gb_median_min_max | 4 rows × 7 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 28 | 0 | 0 | pass | |||
| gb_std_var | 4 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 16 | 0 | 0 | pass | |||
| gb_count_len | 4 rows × 4 columns | exact equality | 16 | 0 | 0 | pass | |||
| gb_n_unique_first_last | 3 rows × 4 columns | exact equality | 12 | 0 | 0 | pass | |||
| gb_quantile | 3 rows × 6 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 18 | 0 | 0 | pass | |||
| gb_multi_key | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| gb_expr_key | 3 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 12 | 0 | 0 | pass | |||
| gb_implicit_list | 4 rows × 3 columns | exact equality | 14 | 0 | 0 | pass | |||
| gb_filter_sortby | 4 rows × 3 columns | exact equality | 12 | 0 | 0 | pass | |||
| gb_len_method | 4 rows × 2 columns | exact equality | 8 | 0 | 0 | pass | |||
| gb_sum_method | 4 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 12 | 0 | 0 | pass | |||
| gb_mean_method | 3 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 9 | 0 | 0 | pass | |||
| gb_head | 4 rows × 2 columns | exact equality | 8 | 0 | 0 | pass | |||
| Joins | join_inner | 3 rows × 5 columns | exact equality | 15 | 0 | 0 | pass | ||
| join_left | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | |||
| join_full | 8 rows × 5 columns | exact equality | 40 | 0 | 0 | pass | |||
| join_full_coalesce | 8 rows × 4 columns | exact equality | 32 | 0 | 0 | pass | |||
| join_semi | 3 rows × 3 columns | exact equality | 9 | 0 | 0 | pass | |||
| join_anti | 3 rows × 3 columns | exact equality | 9 | 0 | 0 | pass | |||
| join_nulls_equal | 6 rows × 5 columns | exact equality | 30 | 0 | 0 | pass | |||
| join_cross | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | |||
| join_suffix | 3 rows × 5 columns | exact equality | 15 | 0 | 0 | pass | |||
| join_left_on_right_on | 6 rows × 5 columns | exact equality | 30 | 0 | 0 | pass | |||
| join_multi_key | 6 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 24 | 0 | 0 | pass | |||
| Filtering and sorting | unique_subset_first | 4 rows × 2 columns | exact equality | 8 | 0 | 0 | pass | ||
| unique_keep_last | 4 rows × 2 columns | exact equality | 8 | 0 | 0 | pass | |||
| unique_keep_none | 2 rows × 2 columns | exact equality | 4 | 0 | 0 | pass | |||
| unique_rows | 5 rows × 2 columns | exact equality | 10 | 0 | 0 | pass | |||
| Missing values | fill_null_value_dataframe | 6 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 24 | 0 | 0 | pass | ||
| fill_null_string | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| fill_null_strategies | 6 rows × 8 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 48 | 0 | 0 | pass | |||
| fill_null_limit | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| fill_null_dataframe_forward | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| drop_nulls_all | 3 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 12 | 0 | 0 | pass | |||
| drop_nulls_subset | 4 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 16 | 0 | 0 | pass | |||
| null_count | 1 row × 10 columns | exact equality | 10 | 0 | 0 | pass | |||
| interpolate | 5 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 10 | 0 | 0 | pass | |||
| Reshaping and concatenation | unpivot | 12 rows × 3 columns | exact equality | 36 | 0 | 0 | pass | ||
| unpivot_mixed_names | 12 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 36 | 0 | 0 | pass | |||
| pivot_first | 3 rows × 3 columns | exact equality | 9 | 0 | 0 | pass | |||
| pivot_sum | 3 rows × 3 columns | exact equality | 9 | 0 | 0 | pass | |||
| pivot_mean | 3 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 9 | 0 | 0 | pass | |||
| pivot_len | 3 rows × 3 columns | exact equality | 9 | 0 | 0 | pass | |||
| explode_single | 10 rows × 2 columns | exact equality | 20 | 0 | 0 | pass | |||
| explode_two | 3 rows × 3 columns | exact equality | 9 | 0 | 0 | pass | |||
| transpose | 2 rows × 4 columns | exact equality | 8 | 0 | 0 | pass | |||
| Expressions | with_row_index | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | ||
| Reshaping and concatenation | concat_vertical | 3 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | ||
| concat_horizontal | 2 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 8 | 0 | 0 | pass | |||
| concat_diagonal | 3 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 9 | 0 | 0 | pass | |||
| concat_vertical_relaxed | 3 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 6 | 0 | 0 | pass | |||
| concat_diagonal_relaxed | 3 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 9 | 0 | 0 | pass | |||
| Grouping and summaries | describe_numeric | 9 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 27 | 0 | 0 | pass | ||
| describe_mixed | 9 rows × 5 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 45 | 0 | 0 | pass | |||
| describe_percentiles | 8 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 16 | 0 | 0 | pass | |||
| DataFrame methods | dataframe_sum | 1 row × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 4 | 0 | 0 | pass | ||
| dataframe_mean | 1 row × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 3 | 0 | 0 | pass | |||
| dataframe_min_max | 2 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 8 | 0 | 0 | pass | |||
| dataframe_std_var | 2 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 4 | 8.9e-16 | 1.9e-16 | pass | |||
| dataframe_median | 1 row × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 2 | 0 | 0 | pass | |||
| dataframe_n_unique | 1 row × 3 columns | exact equality | 3 | 0 | 0 | pass | |||
| Windows, rolling, and EWM | over_sum | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | ||
| over_multi | 6 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 18 | 0 | 0 | pass | |||
| over_order_by | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| over_order_by_desc | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| over_rank | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| Expressions | cum_fns | 6 rows × 6 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 36 | 0 | 0 | pass | ||
| shift | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | |||
| diff | 6 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 18 | 0 | 0 | pass | |||
| pct_change | 6 rows × 1 column | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 6 | 0 | 0 | pass | |||
| rank_methods | 6 rows × 7 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 42 | 0 | 0 | pass | |||
| Windows, rolling, and EWM | rolling | 6 rows × 7 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 42 | 0 | 0 | pass | ||
| Expressions | when_basic | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | ||
| when_chain | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| when_no_otherwise | 6 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 12 | 0 | 0 | pass | |||
| when_multi_cond | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| when_supertype | 6 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 12 | 0 | 0 | pass | |||
| Strings | str_contains | 6 rows × 5 columns | exact equality | 30 | 0 | 0 | pass | ||
| str_replace | 6 rows × 5 columns | exact equality | 30 | 0 | 0 | pass | |||
| str_slice | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | |||
| str_split | 6 rows × 2 columns | exact equality | 19 | 0 | 0 | pass | |||
| str_strip | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | |||
| str_case | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| str_len | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| str_pad | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| str_extract | 6 rows × 3 columns | exact equality | 25 | 0 | 0 | pass | |||
| str_count_matches | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| str_starts_ends | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| str_to_integer | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| str_to_integer_base | 3 rows × 1 column | exact equality | 3 | 0 | 0 | pass | |||
| str_find_reverse | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| str_join_agg | 1 row × 2 columns | exact equality | 2 | 0 | 0 | pass | |||
| str_to_date_datetime | 2 rows × 2 columns | exact equality | 4 | 0 | 0 | pass | |||
| Dates and times | dt_parts | 6 rows × 10 columns | exact equality | 60 | 0 | 0 | pass | ||
| date_parts | 6 rows × 5 columns | exact equality | 30 | 0 | 0 | pass | |||
| dt_strftime | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| dt_truncate | 6 rows × 5 columns | exact equality | 30 | 0 | 0 | pass | |||
| dt_round | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| dt_epoch | 6 rows × 5 columns | exact equality | 30 | 0 | 0 | pass | |||
| dt_date_time | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | |||
| dt_offset_by | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| dt_duration | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| dt_cast_time_unit | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| dt_time_zone | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| Lists, arrays, and structs | list_aggs | 6 rows × 5 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 30 | 0 | 0 | pass | ||
| list_get | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | |||
| list_contains | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| list_join | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| list_eval | 6 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 18 | 0 | 0 | pass | |||
| list_sort_unique | 6 rows × 4 columns | exact equality | 28 | 0 | 0 | pass | |||
| list_unique | 2 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | |||
| list_concat_list | 6 rows × 1 column | exact equality | 12 | 0 | 0 | pass | |||
| Casts | cast_numeric | 6 rows × 5 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 30 | 0 | 0 | pass | ||
| cast_to_string | 6 rows × 5 columns | exact equality | 30 | 0 | 0 | pass | |||
| cast_temporal | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| cast_strict_fails | raises InvalidOperationError | exact equality | 1 | pass | |||||
| cast_non_strict | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| cast_overflow_strict_fails | raises InvalidOperationError | exact equality | 1 | pass | |||||
| cast_string_to_float | 5 rows × 1 column | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 5 | 0 | 0 | pass | |||
| cast_dataframe_map | 6 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 18 | 0 | 0 | pass | |||
| Expressions | is_in | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | ||
| is_between | 6 rows × 5 columns | exact equality | 30 | 0 | 0 | pass | |||
| is_between_dates | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| clip | 6 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 24 | 0 | 0 | pass | |||
| round | 8 rows × 6 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 48 | 0 | 0 | pass | |||
| math | 6 rows × 6 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 36 | 0 | 0 | pass | |||
| Grouping and summaries | value_counts_expr | 4 rows × 2 columns | exact equality | 8 | 0 | 0 | pass | ||
| value_counts_series | 4 rows × 2 columns | exact equality | 8 | 0 | 0 | pass | |||
| value_counts_normalize | 3 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 6 | 0 | 0 | pass | |||
| Series | series_int_aggs | 16 scalar values | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 16 | 8.9e-16 | 1.5e-16 | pass | ||
| series_float_aggs | 14 scalar values | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 14 | 0 | 0 | pass | |||
| series_quantile_int_arg | 2 scalar values | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 2 | 0 | 0 | pass | |||
| series_str_aggs | 6 scalar values | exact equality | 6 | 0 | 0 | pass | |||
| series_bool_aggs | 5 scalar values | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 5 | 0 | 0 | pass | |||
| series_ops | 6 rows × 8 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 48 | 0 | 0 | pass | |||
| series_sort | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| series_unique | 4 rows × 1 column | exact equality | 4 | 0 | 0 | pass | |||
| series_empty_aggs | 5 scalar values | exact equality | 5 | 0 | 0 | pass | |||
| DataFrame methods | head_tail_slice | 5 rows × 1 column | exact equality | 5 | 0 | 0 | pass | ||
| rename_drop_reverse | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| Lists, arrays, and structs | struct_pack_field | 6 rows × 2 columns | exact equality | 18 | 0 | 0 | pass | ||
| Filtering and sorting | unique_counts_mode | 2 rows × 1 column | exact equality | 2 | 0 | 0 | pass | ||
| top_bottom_k | 2 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 4 | 0 | 0 | pass | |||
| Joins | join_asof_backward | 6 rows × 6 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 36 | 0 | 0 | pass | ||
| join_asof_forward_by | 6 rows × 5 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 30 | 0 | 0 | pass | |||
| join_asof_nearest_tolerance | 6 rows × 6 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 36 | 0 | 0 | pass | |||
| join_asof_int_tolerance | 3 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | |||
| Grouping and summaries | group_by_dynamic_day | 3 rows × 3 columns | exact equality | 9 | 0 | 0 | pass | ||
| group_by_dynamic_by_bounds | 9 rows × 5 columns | exact equality | 45 | 0 | 0 | pass | |||
| group_by_dynamic_label_offset | 3 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | |||
| Windows, rolling, and EWM | rolling_dataframe | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | ||
| rolling_dataframe_by | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| rolling_by_exprs | 6 rows × 9 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 54 | 0 | 0 | pass | |||
| rolling_quantile_skew | 6 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 24 | 0 | 0 | pass | |||
| ewm | 6 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 24 | 0 | 0 | pass | |||
| ewm_mean_by | 6 rows × 1 column | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 6 | 0 | 0 | pass | |||
| ewm_no_alpha | raises ValueError | exact equality | 1 | pass | |||||
| Expressions | cut_qcut | 6 rows × 5 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 30 | 0 | 0 | pass | ||
| cut_include_breaks | 6 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 12 | 0 | 0 | pass | |||
| rle | 4 rows × 2 columns | exact equality | 8 | 0 | 0 | pass | |||
| rle_id | 8 rows × 1 column | exact equality | 8 | 0 | 0 | pass | |||
| search_sorted | 1 row × 4 columns | exact equality | 4 | 0 | 0 | pass | |||
| search_sorted_many | 3 rows × 1 column | exact equality | 3 | 0 | 0 | pass | |||
| peaks_entropy | 6 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 24 | 0 | 0 | pass | |||
| hist_bins | 3 rows × 1 column | exact equality | 3 | 0 | 0 | pass | |||
| hist_count_breaks | 2 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 6 | 0 | 0 | pass | |||
| Missing values | interpolate_by | 7 rows × 1 column | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 7 | 0 | 0 | pass | ||
| Expressions | is_close_index_of | 4 rows × 5 columns | exact equality | 20 | 0 | 0 | pass | ||
| arg_unique_bounds | 1 row × 3 columns | exact equality | 5 | 0 | 0 | pass | |||
| trig_extra | 8 rows × 9 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 72 | 8.9e-16 | 2.2e-16 | pass | |||
| DataFrame methods | dataframe_shift | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | ||
| dataframe_shift_fill | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| dataframe_interpolate | 6 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 12 | 0 | 0 | pass | |||
| dataframe_quantile_product | 2 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 6 | 0 | 0 | pass | |||
| dataframe_top_bottom_k | 7 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 28 | 0 | 0 | pass | |||
| dataframe_gather_every | 3 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | |||
| dataframe_drop_nans | 5 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 20 | 0 | 0 | pass | |||
| dataframe_drop_nans_subset | 5 rows × 5 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 25 | 0 | 0 | pass | |||
| dataframe_is_duplicated | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| dataframe_upsample | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| dataframe_corr | 3 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 9 | 5.0e-16 | 2.4e-15 | pass | |||
| dataframe_insert_to_struct | 3 rows × 3 columns | exact equality | 9 | 0 | 0 | pass | |||
| dataframe_approx_n_unique | 1 row × 2 columns | exact equality | 2 | 0 | 0 | pass | |||
| Functions | fn_date_range | 4 rows × 1 column | exact equality | 4 | 0 | 0 | pass | ||
| fn_date_range_closed | 3 rows × 1 column | exact equality | 3 | 0 | 0 | pass | |||
| fn_datetime_range | 5 rows × 1 column | exact equality | 5 | 0 | 0 | pass | |||
| fn_date_ranges | 2 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| fn_int_ranges | 5 rows × 2 columns | exact equality | 17 | 0 | 0 | pass | |||
| fn_date_datetime | 5 rows × 2 columns | exact equality | 10 | 0 | 0 | pass | |||
| fn_duration | 5 rows × 2 columns | exact equality | 10 | 0 | 0 | pass | |||
| fn_from_epoch | 2 rows × 3 columns | exact equality | 6 | 0 | 0 | pass | |||
| fn_arg_where | 3 rows × 1 column | exact equality | 3 | 0 | 0 | pass | |||
| fn_corr_cov | 1 row × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 4 | 2.2e-16 | 2.0e-16 | pass | |||
| fn_nth | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| fn_repeat_linear_space | 3 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 6 | 0 | 0 | pass | |||
| fn_select | 1 row × 2 columns | exact equality | 2 | 0 | 0 | pass | |||
| fn_stat_shorthands | 1 row × 5 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 10 | 0 | 0 | pass | |||
| Strings | str_many | 6 rows × 6 columns | exact equality | 36 | 0 | 0 | pass | ||
| str_extract_groups | 3 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | |||
| str_split_exact | 3 rows × 4 columns | exact equality | 12 | 0 | 0 | pass | |||
| str_encode_decode | 3 rows × 3 columns | exact equality | 9 | 0 | 0 | pass | |||
| str_to_decimal | 3 rows × 1 column | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 3 | 0 | 0 | pass | |||
| str_normalize_escape | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| str_json | 3 rows × 3 columns | exact equality | 9 | 0 | 0 | pass | |||
| Dates and times | dt_parts_extra | 4 rows × 3 columns | exact equality | 12 | 0 | 0 | pass | ||
| dt_business | 4 rows × 5 columns | exact equality | 20 | 0 | 0 | pass | |||
| dt_combine_replace | 4 rows × 3 columns | exact equality | 12 | 0 | 0 | pass | |||
| dt_time_unit | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| Lists, arrays, and structs | list_more | 6 rows × 5 columns | exact equality | 30 | 0 | 0 | pass | ||
| list_to_array | 2 rows × 3 columns | exact equality | 8 | 0 | 0 | pass | |||
| arr_aggs | 3 rows × 9 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 27 | 0 | 0 | pass | |||
| arr_ops | 3 rows × 13 columns | exact equality | 62 | 0 | 0 | pass | |||
| arr_explode_struct | 2 rows × 3 columns | exact equality | 6 | 0 | 0 | pass | |||
| Categoricals and binary | cat_ns | 4 rows × 5 columns | exact equality | 20 | 0 | 0 | pass | ||
| cat_categories | 9 rows × 1 column | exact equality | 9 | 0 | 0 | pass | |||
| bin_ns | 3 rows × 8 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 24 | 0 | 0 | pass | |||
| Series | series_mirrors_expr | 6 rows × 5 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 30 | 0 | 0 | pass | ||
| series_scalar_reductions | 7 scalar values | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 7 | 0 | 0 | pass | |||
| Selectors | selectors | 40 scalar values | exact equality | 40 | 0 | 0 | pass | ||
| Expressions | multi_col_logic_is_boolean | 8 rows × 2 columns | exact equality | 16 | 0 | 0 | pass | ||
| Selectors | selectors_in_ops | 6 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 24 | 0 | 0 | pass | ||
| SQL | sql_dataframe | 4 rows × 3 columns | exact equality | 12 | 0 | 0 | pass | ||
| sql_context_join | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| sql_expressions | 6 rows × 6 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 36 | 0 | 0 | pass | |||
| sql_window_cte | 5 rows × 4 columns | exact equality | 20 | 0 | 0 | pass | |||
| sql_table_name | 1 row × 1 column | exact equality | 1 | 7 | 7 | 0 | 0 | pass | |
| sql_function | 2 rows × 2 columns | exact equality | 4 | 0 | 0 | pass | |||
| sql_error | raises ColumnNotFoundError | exact equality | 1 | pass | |||||
| DataFrame methods | dataframe_to_dummies | 6 rows × 9 columns | exact equality | 54 | 0 | 0 | pass | ||
| dataframe_to_dummies_opts | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| Series | series_to_dummies | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | ||
| DataFrame methods | dataframe_horizontal | 6 rows × 4 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 24 | 0 | 0 | pass | ||
| dataframe_clear | 2 rows × 2 columns | exact equality | 4 | 0 | 0 | pass | |||
| dataframe_replace_column | 2 rows × 2 columns | exact equality | 4 | 0 | 0 | pass | |||
| dataframe_column_index | 1 scalar value | exact equality | 1 | 4 | 4 | 0 | 0 | pass | |
| Grouping and summaries | group_by_quantile | 4 rows × 3 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 12 | 0 | 0 | pass | ||
| Expressions | min_max_by | 1 row × 2 columns | exact equality | 2 | 0 | 0 | pass | ||
| first_last_non_null | 1 row × 2 columns | exact equality | 2 | 0 | 0 | pass | |||
| expr_item | 1 row × 1 column | exact equality | 1 | 7 | 7 | 0 | 0 | pass | |
| cumulative_eval | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| bitwise | 3 rows × 6 columns | exact equality | 18 | 0 | 0 | pass | |||
| Lists, arrays, and structs | struct_with_fields | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | ||
| Functions | fn_business_day_count | 4 rows × 1 column | exact equality | 4 | 0 | 0 | pass | ||
| fn_format | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| fn_arg_sort_by | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| fn_concat_arr | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| Grouping and summaries | group_by_iter | 6 rows × 4 columns | exact equality | 24 | 0 | 0 | pass | ||
| Filtering and sorting | top_k_by | 3 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | ||
| Windows, rolling, and EWM | ewm_sum | 6 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 12 | 0 | 0 | pass | ||
| ewm_sum_by | 6 rows × 1 column | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 6 | 0 | 0 | pass | |||
| Expressions | extend_constant | 8 rows × 1 column | exact equality | 8 | 0 | 0 | pass | ||
| reshape | 2 rows × 1 column | exact equality | 2 | 0 | 0 | pass | |||
| Windows, rolling, and EWM | rolling_rank | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | ||
| rolling_rank_by | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| Expressions | expr_rolling | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | ||
| reinterpret | 2 rows × 1 column | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 2 | 0 | 0 | pass | |||
| is_empty_arg_true | 1 row × 4 columns | exact equality | 15 | 0 | 0 | pass | |||
| meta | 8 scalar values | exact equality | 8 | 0 | 0 | pass | |||
| ns_extras | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| Lists, arrays, and structs | list_item | 3 rows × 1 column | exact equality | 3 | 0 | 0 | pass | ||
| struct_unnest | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| Categoricals and binary | bin_reinterpret | 2 rows × 2 columns | exact equality | 4 | 0 | 0 | pass | ||
| DataFrame methods | dataframe_remove | 3 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | ||
| dataframe_gather | 3 rows × 2 columns | exact equality | 6 | 0 | 0 | pass | |||
| dataframe_merge_sorted | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| dataframe_update | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| dataframe_update_nulls_full | 7 rows × 3 columns | exact equality | 21 | 0 | 0 | pass | |||
| dataframe_update_by_row | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| dataframe_iter_slices | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| dataframe_map_rows | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| dataframe_map_rows_scalar | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| Grouping and summaries | group_by_having | 2 rows × 2 columns | exact equality | 4 | 0 | 0 | pass | ||
| Series | series_describe | 9 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 18 | 0 | 0 | pass | ||
| series_scatter | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | |||
| series_set | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| Functions | fn_more | 6 rows × 7 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 42 | 0 | 0 | pass | ||
| fn_cum_sum_horizontal | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | |||
| fn_head_tail | 2 rows × 2 columns | exact equality | 4 | 0 | 0 | pass | |||
| fn_linear_spaces | 2 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 10 | 0 | 0 | pass | |||
| fn_time | 6 rows × 1 column | exact equality | 6 | 0 | 0 | pass | |||
| fn_time_range | 3 rows × 1 column | exact equality | 3 | 0 | 0 | pass | |||
| fn_rolling_corr_cov | 6 rows × 2 columns | |x − r| ≤ 1e-9 × |r|; at r = 0, x = 0 exactly | 12 | 0 | 0 | pass | |||
| fn_escape_regex | 1 scalar value | exact equality | 1 | 0 | 0 | pass | |||
| fn_first_last_columns | 6 rows × 4 columns | exact equality | 27 | 0 | 0 | pass | |||
| Reshaping and concatenation | json_normalize | 3 rows × 6 columns | exact equality | 19 | 0 | 0 | pass | ||
| json_normalize_level | 3 rows × 5 columns | exact equality | 16 | 0 | 0 | pass | |||
| SQL | sql_expr | 6 rows × 2 columns | exact equality | 12 | 0 | 0 | pass | ||
| Reshaping and concatenation | melt | 6 rows × 3 columns | exact equality | 18 | 0 | 0 | pass | ||
| Functions | arange | 3 rows × 1 column | exact equality | 3 | 0 | 0 | pass |
Limitations
Exclusions
- NaN, INF, and -INF are encoded as {"$float": "NaN"}, {"$float": "INF"}, and {"$float": "-INF"} and compared exactly; they count as values compared and are excluded from the error statistics.
- Methods and arguments without a case are not compared.
Reproduction
uv run --with 'polars==1.43.2' --with numpy python scripts/pyfixtures.py
cargo build --release
scripts/site-content verifications
- Raw record
- site/verifications/py-polars-fixtures.json
- Full results
- tests/fixtures/py/expected.json
- Input data
- scripts/pyfixtures.py