Diffly – A Python package to compare polars dataframes
DataFrame diffing for Polars with ASCII output when pandas comparisons fall short.
Statically type-safe DataFrame abstraction layer for Python.
Type-safe DataFrames without plugins: catch column typos in your editor, not production.
Python data engineers and analysts using DataFrames at scale who want static type safety
Polars (native type system) · SQLAlchemy ORM (declarative schema mapping) · Ibis (DataFrame abstraction layer)
Colnade replaces string-based column references with typed class attributes:
```
import colnade as cn
class Users(cn.Schema):
name: cn.Column[cn.Utf8]
age: cn.Column[cn.UInt64]
score: cn.Column[cn.Float64]
# Users.naem → type error in your editor# Users.name.sum() → type error (string column)
df.filter(Users.age > 25).sort(Users.score.desc())
```
Colnade is pure Python with no plugins. Backend adapters for Polars, Pandas, and Dask are included today, and the protocol is open to support other backends.
For schema-modifying operations like `select` and `agg`, Python's type system can't infer output schemas- Colnade handles this with explicit re-binding (`cast_schema`) and optional runtime validation, along with Pydantic-style `Field` constraints for domain invariants.
I started building this because time and time again I've found DataFrame operations to be the weakest part of data science & ML projects from a type safety standpoint.
The project is still quite new so the API is likely to continue to evolve quickly, but I'd love any feedback!
Docs: colnade.com Source: https://github.com/jwde/colnade
DataFrame diffing for Polars with ASCII output when pandas comparisons fall short.
Lint-time DataFrame checking when Pandera only validates at runtime.
Yet another DataFrame library competing against established tools like Polars.
Pandas API in pure Go, but Polars and DuckDB already own this space.
Yet another Polars competitor, but this one wraps existing C++ code.
Static type checking for Polars using Astral's `ty` before runtime errors happen.