v0.2.2 (2026-07-11)
- Add
ps.F, ps.B, ps.E for calling arbitrary functions (numpy, scipy, plain Python, …) directly on expressions, in place of hand-rolled pl.struct(...).map_batches(...)/ map_elements(...).
- Add
ps.format, ps.fmt_col, and Expr.ps_str.format — an Expr-aware str.format. Any {field:spec} whose value is a pl.Expr is formatted per row via Python’s own format(), so the full format-spec mini-language works without reimplementing it. ps.fmt_col(...) lets a column be embedded directly inside a real f-string without touching pl.Expr.__format__ itself. Expr.ps_str.format additionally unpacks a Struct column’s fields as named template arguments.
FrameExpr (and therefore any ps_enum/ps_chop/ps.apply/ps.F expression) now supports .over(*by), a group-aware equivalent of pl.Expr.over().
- Fix
ps_enum.infreq()/ps_enum.reorder() raising a DuplicateError when applied to multiple columns at once (e.g. pl.col('a', 'b').ps_enum.infreq()). reorder()’s by now also raises a clear ValueError (instead of crashing) if a by expression resolves to more than one column.
v0.2.1 (2026-07-01)
- Add
ps_enum.to_level() and refactor enum handling to avoid unnecessary to_physical() calls.
- Fix
ps_chop.chop() on older Polars versions.
v0.2.0 (2026-06-04)
- Rename
ps_enum.relabel to ps_enum.rename.
- Add
ps_enum.move() and ps_enum.unify().
ps_enum.rename() can now merge multiple factor levels into one.
ps_enum.make() uses natural sort order for discovered categories instead of lexical order.
- Refactor column resolution to consistently alias inside the resolver across all
ps_enum/ ps_chop functions.
v0.1.5 (2026-05-30)
- Clarify which
ps_enum functions accept plain String columns (not just Enum/Categorical).
v0.1.4 (2026-05-26)
- Add
ps.select, the FrameExpr-aware counterpart of ps.with_columns for .select().
- Relax the minimum supported Python version to 3.10.
v0.1.0–0.1.3 (2026-05-25)
- Initial release:
ps_enum (Enum creation, reordering, lumping rare levels, replacing missing values, …), ps_chop (binning numeric/temporal/categorical columns, inspired by R’s santoku), ps.apply for custom functions that need to peek at the full LazyFrame, and the underlying FrameExpr/two-phase peek-then-resolve design.
- Documentation site and package metadata fixes.