pola-rs/polars
66.9
Adequate · 29 July 2026
503.3k
lines of production code
Rust
with Python
2
measurements over time
How this codebase got here
Score
- CAI 62 → 67 (+4.9)
- Rubric changed (rubric-2026.08.17 → rubric-2026.08.18) — scores are not directly comparable.
Lenses
- Code Health 72 → 70 (-1.9)
- Architecture 98 → 97 (-1.3)
- Maturity 72 → 68 (-4.1)
- Readiness 71 → 83 (+12.1)
- Security 48 → 58 (+11.0)
- Domain Modelling 100 → 100 (+0.0)
Resolved (122)
- AExpr.is_equal_node (cyclomatic 22) (crates/polars-plan/src/plans/visitor/expr.rs)
- ApplyExpr.apply_multiple_group_aware (cognitive 17) (crates/polars-expr/src/expressions/apply.rs)
- BinviewKeyIdxTable.insert_keys_subset (cognitive 17) (crates/polars-expr/src/idx_table/binview.rs)
- BlockUnion.get (cyclomatic 17) (crates/polars-compute/src/rolling/quantile_filter.rs)
- Boundary-crossing change coupling: mod.rs ↔ _plr.py (crates/polars-python/src/c_api/mod.rs)
- Bridge.run_impl (cognitive 16) (crates/polars-stream/src/nodes/io_sources/multi_scan/pipeline/tasks/bridge.rs)
- Change coupling: anonymous_scan.rs ↔ csv.rs (crates/polars-lazy/src/scan/anonymous_scan.rs)
- Change coupling: anonymous_scan.rs ↔ ipc.rs (crates/polars-lazy/src/scan/anonymous_scan.rs)
- Change coupling: anonymous_scan.rs ↔ ndjson.rs (crates/polars-lazy/src/scan/anonymous_scan.rs)
- Change coupling: anonymous_scan.rs ↔ parquet.rs (crates/polars-lazy/src/scan/anonymous_scan.rs)
- Change coupling: fmt.rs ↔ to_graph.rs (crates/polars-stream/src/physical_plan/fmt.rs)
- Change coupling: functions.rs ↔ ir_to_dsl.rs (crates/polars-plan/src/plans/conversion/dsl_to_ir/functions.rs)
- Change coupling: mod.rs ↔ mod.rs (crates/polars-core/src/series/ops/mod.rs)
- Change coupling: mod.rs ↔ mod.rs (crates/polars-stream/src/nodes/mod.rs)
- Change coupling: mod.rs ↔ to_graph.rs (crates/polars-stream/src/nodes/mod.rs)
- ChunkedArray.agg_max (cyclomatic 16) (crates/polars-core/src/frame/group_by/aggregations/mod.rs)
- CloudOptions.build_aws (cyclomatic 16) (crates/polars-io/src/cloud/options.rs)
- Column.arg_sort (cyclomatic 16) (crates/polars-core/src/frame/column/mod.rs)
- ConcurrencyController.spawn_control_loop (cyclomatic 18) (crates/polars-io/src/cloud/concurrency/mod.rs)
- DataTypeExpr.fmt (cyclomatic 19) (crates/polars-plan/src/dsl/datatype_expr.rs)
- …and 102 more
New (174)
- Boundary-crossing change coupling: array.rs ↔ array.py (crates/polars-plan/src/dsl/array.rs)
- Boundary-crossing change coupling: array.rs ↔ array.py (crates/polars-plan/src/dsl/function_expr/array.rs)
- Boundary-crossing change coupling: array.rs ↔ array.py (crates/polars-python/src/expr/array.rs)
- Boundary-crossing change coupling: array.rs ↔ array.py (crates/polars-python/src/expr/array.rs)
- Boundary-crossing change coupling: list.rs ↔ list.py (crates/polars-python/src/expr/list.rs)
- Boundary-crossing change coupling: list.rs ↔ list.py (crates/polars-python/src/expr/list.rs)
- Boundary-crossing change coupling: meta.rs ↔ meta.py (crates/polars-python/src/expr/meta.rs)
- Boundary-crossing change coupling: mod.rs ↔ array.py (crates/polars-ops/src/chunked_array/array/mod.rs)
- Boundary-crossing change coupling: options.rs ↔ frame.py (crates/polars-io/src/parquet/write/options.rs)
- Boundary-crossing change coupling: string.rs ↔ string.py (crates/polars-python/src/expr/string.rs)
- Build action pinned to a mutable branch
- Dependency hygiene not measured — dependency manifest found but not parsed for hygiene
- FileTooLong: aexpr/filter_constraint.rs (crates/polars-plan/src/plans/aexpr/filter_constraint.rs)
- FileTooLong: aexpr/schema.rs (crates/polars-plan/src/plans/aexpr/schema.rs)
- FileTooLong: aggregations/mod.rs (crates/polars-core/src/frame/group_by/aggregations/mod.rs)
- FileTooLong: arithmetic/borrowed.rs (crates/polars-core/src/series/arithmetic/borrowed.rs)
- FileTooLong: arithmetic/list.rs (crates/polars-core/src/series/arithmetic/list.rs)
- FileTooLong: array/static_array_collect.rs (crates/polars-arrow/src/array/static_array_collect.rs)
- FileTooLong: binview/mod.rs (crates/polars-parquet/src/arrow/read/deserialize/binview/mod.rs)
- FileTooLong: cast/mod.rs (crates/polars-compute/src/cast/mod.rs)
- …and 154 more
Changes since last survey
- 51 commits — 22 feature/other, 29 fixes
By area
- crates/polars-plan — 17 commits
- docs/source — 4 commits
- py-polars/tests — 4 commits
- crates/polars-stream — 3 commits
- py-polars/src — 3 commits
- (root) — 2 commits
- crates/polars-async — 2 commits
- crates/polars-core — 2 commits
- crates/polars-mem-engine — 2 commits
- crates/polars-ops — 2 commits
- crates/polars-python — 2 commits
- crates/polars-sql — 2 commits
- crates/polars-expr — 1 commit
- crates/polars-io — 1 commit
- crates/polars-parquet — 1 commit
- crates/polars-time — 1 commit
- crates/polars-utils — 1 commit
- py-polars/runtime — 1 commit
Notable commits
- fix: fix(rust): Add missing Send bounds in Connector (#28497)
- fix: fix(rust): Decrement ParkGroup worker count when worker exits (#28492)
- fix: fix(rust): Insert missing coercions from Unknown(_) in list/array arithmetic (#28411)
- fix: fix: Address 3VL issue with SQL NOT IN interaction with NULL values and joins (#28484)
- fix: fix: Avoid IEJoin rewrite for Categorical comparisons (#28427)
- fix: fix: Avoid panic when union slice skips all rows (#28420)
- fix: fix: Block predicate pushdown past overwritten window keys (#28429)
- fix: fix: Check join schema by position (#28455)
- fix: fix: Do not CSE non-column height expr on streaming engine (#28480)
- fix: fix: Ensure SQL SUM and CORR aggregates return NULL for all-null inputs, add TOTAL (#28475)
- fix: fix: Fix UB on first/last_non_null with empty chunk (#28495)
- fix: fix: Fix dropped slice on multiple unions (#28477)
- fix: fix: Fix high blocking thread use in sink_parquet with async local path (#28543)
- fix: fix: Fix in-memory engine incorrect slice on maintain order join (#28478)
- fix: fix: Fix panic on self join of scan_delta / scan_iceberg (#28468)
- fix: fix: Flip nulls_last after Expr.reverse() (#28572)
- fix: fix: Incorrect slicing when a join requires sorting (#28541)
- fix: fix: Propagate is_scalar from the input to the output of .sort() and .sort_by() (#28438)
- fix: fix: Propagate nulls_last in function_expr_sortedness (#28544)
- fix: fix: Propagate adjusted sortedness through Gather (#28493)
- …and 31 more
Architecture
- Unchanged — 0 containers · 1 contexts · 0 edges
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
pola-rs/polars was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 29 July 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 138e72bee7e3c8e9059c28356463d405d8eeb080 — the exact code this score is about.
- Scored under rubric-2026.08.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer latest.