Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

planframe-polars

Docs PyPI License: MIT

Polars adapter package for PlanFrame. Import as planframe_polars.

Documentation (ReadTheDocs):

  • Polars track (end users): https://planframe.readthedocs.io/en/latest/planframe_polars/
  • Light API reference: https://planframe.readthedocs.io/en/latest/planframe_polars/reference/api/

Install

pip install planframe-polars

Usage

from planframe_polars import PolarsFrame


class User(PolarsFrame):
    id: int
    age: int

# Construct from python data:
pf = User({"id": [1], "age": [2]})
df = pf.select("id").collect()

# Common transforms (PlanFrame is always lazy; these build a plan until `collect()`).
pf3 = pf.with_row_index(name="row_nr").clip(lower=0, subset=("age",))
pf4 = pf.rename_upper().cast_many({"age": float})

# If you already have a Polars DataFrame/LazyFrame, use `Frame.source(...)`:
import polars as pl

pf2 = User.source(pl.DataFrame({"id": [1], "age": [2]}).lazy(), adapter=User._adapter_singleton, schema=User)

Execution model

Core v1.2.0+ (current minor v1.3.x) includes execute_plan_async, planframe.materialize, discoverable Frame async aliases (collect_async, to_dict_async, …), and v1.3.0 adapter/typing additions—see the migration guide and API reference.

PlanFrame is always lazy:

  • Chaining methods (like .select(...)) does not run Polars operations.
  • collect() evaluates the full plan (and returns list[pydantic.BaseModel]).
  • If you need a backend-native polars.DataFrame / polars.LazyFrame, use collect_backend().
  • If you want to iterate rows, use stream_dicts() / stream() (see the Streaming rows guide).

Optional API skins (core)

The core package includes typed mixins you can combine with PolarsFrame if you want a different surface API (same lazy plan underneath):

  • planframe.spark.SparkFrame: PySpark-like column access, withColumns, groupBy().agg(...), hint(), … — see PySpark-like API.
  • planframe.pandas.PandasLikeFrame: pandas-like naming — see pandas-like API (the pandas adapter’s PandasFrame uses this mixin by default).

Notes (Polars-specific)

  • Pivot: LazyFrame.pivot(...) requires on_columns to be provided up-front (Polars must know the output schema prior to collect()). PlanFrame enforces this at execution time.
  • pivot_wider: wrapper around pivot(...); for deterministic output columns on lazy sources, pass on_columns.
  • vstack: implemented via polars.concat(..., how="vertical").
  • Join: implemented via LazyFrame.join(...) / DataFrame.join(...) with symmetric on or asymmetric left_on / right_on, plus optional JoinOptions mapped to Polars (nulls_equal, validate, coalesce, maintain_order, allow_parallel / force_parallel, streaming, engine_streaming when supported by the installed Polars).
  • Group by / agg: group_by compiles to Polars group_by with column or expression keys (expression keys are aliased __pf_g{i}). agg compiles tuple reductions to pl.col(...).sum()-style calls and AggExpr to aggregated expressions on compiled inners (e.g. agg_sum(truediv(col("a"), col("b")))).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

planframe_polars-1.3.0.tar.gz (13.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

planframe_polars-1.3.0-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file planframe_polars-1.3.0.tar.gz.

File metadata

  • Download URL: planframe_polars-1.3.0.tar.gz
  • Upload date:
  • Size: 13.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for planframe_polars-1.3.0.tar.gz
Algorithm Hash digest
SHA256 072e13651195472889b57b95fba7077fb9aea3ae3d4fbb4fc528e4fed3415ca8
MD5 6a25d0b91e3aebafa0bdce48530a5f0b
BLAKE2b-256 757eb3e71f1bf6bc56da12cc637a92bfc390f1918b75a5ee6448a1eedb0a491e

See more details on using hashes here.

File details

Details for the file planframe_polars-1.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for planframe_polars-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 10c408ee95e042e4b87e4056229addc49a483081f42ec18e45aa05296bb503ef
MD5 fec55eec966229739be48928a455eef1
BLAKE2b-256 99189425e0113c1afa197ba18fbca0543cfdff54b9f6f5a9f838c23675674a1e

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 files

1.2.0

2 files

1.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page