Convenient APIs to break lineage in complex Polars LazyFrame jobs. Can significantly reduce memory overhead for iterative processing.
Project description
polars-checkpoint
Materialise Polars LazyFrames to parquet files and scan them back lazily. Defaults to the streaming engine for sink/scan. Useful for managing & reducing memory pressure due to expensive intermediate results in complex multi-step transforms.
Installation
Requires polars and Python 3.10+.
Quick Start
import polars as pl
from polars_checkpoint import checkpoint
lf = pl.LazyFrame({"x": range(1_000_000)}).with_columns(y=pl.col("x") * 2)
# Materialises to a temp parquet file; returns a lazy re-scan
lf = checkpoint(lf)
lf.filter(pl.col("y") > 100).collect()
A process-wide default session manages the temp directory and cleans it up at exit.
Session API
For explicit control over storage location and lifecycle, use CheckpointSession:
from polars_checkpoint import CheckpointSession
# As a context manager — cleans up on exit from the block
with CheckpointSession(root_dir="./my_checkpoints") as sess:
lf = pl.scan_csv("big.csv")
lf = sess.checkpoint(lf, name="after-parse")
lf = lf.filter(pl.col("status") == "active")
lf = sess.checkpoint(lf, name="filtered")
# Without a context manager — cleans up at GC or interpreter shutdown,
# or when you call close() explicitly
sess = CheckpointSession(root_dir="./my_checkpoints")
lf = sess.checkpoint(pl.scan_csv("big.csv"), name="raw")
reloaded = sess["raw"]
print(sess.summary())
sess.close() # optional; triggers early cleanup
CheckpointSession constructor
| Parameter | Default | Description |
|---|---|---|
root_dir |
None (auto temp dir) |
Parent directory for checkpoint folders. |
cleanup |
True |
Delete checkpoint files on close / GC / interpreter exit. |
default_sink_kwargs |
{"compression": "zstd"} |
Defaults passed to sink_parquet / write_parquet. |
default_scan_kwargs |
{} |
Defaults passed to scan_parquet. |
Key methods & features
checkpoint(lf, *, name=None, streaming=True, ...)— Materialise a LazyFrame to parquet. Auto-generates a name if none given. Falls back tocollect().write_parquet()whenstreaming=False.session[name]— Retrieve a checkpoint as aLazyFrame.name in session— Check existence.len(session)/iter(session)— Count / list checkpoints.summary()— Returns a Polars DataFrame with name, size (MB), and path of each checkpoint.close(timeout=None)— Waits for in-flight writes, then cleans up. Also usable as a context manager.
Thread Safety
Sessions are internally locked. Concurrent checkpoint() calls from multiple threads are safe; close() waits for all in-flight materialisations before removing files.
Cleanup Behaviour
| Scenario | cleanup=True (default) |
cleanup=False |
|---|---|---|
close() / __exit__ |
Files deleted | Files retained |
| GC / interpreter shutdown | Files deleted (via weakref.finalize) |
Files retained |
When root_dir is auto-generated, the entire temp directory is removed. When user-supplied, only the individual checkpoint subdirectories created by the session are removed.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file polars_checkpoint-0.1.4.tar.gz.
File metadata
- Download URL: polars_checkpoint-0.1.4.tar.gz
- Upload date:
- Size: 6.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1185c7e40aef54fe0cba5428c614e7d453ad164dc5dc2cf6eba7a2756a58608f
|
|
| MD5 |
b9e31bdd9f546e439a75de684c8e3d78
|
|
| BLAKE2b-256 |
97b68b4db593e177745ef91766112aa7d415366a57c454ebc6f25694772072f4
|
File details
Details for the file polars_checkpoint-0.1.4-py3-none-any.whl.
File metadata
- Download URL: polars_checkpoint-0.1.4-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e8914724ad0c108be1067f2ac3b17ab6155fa07b30205632bf839c1a414fffd
|
|
| MD5 |
3b1f5af2f70b798b8159abbe8210a182
|
|
| BLAKE2b-256 |
d7c224ca22fe0ea15f9efaa2e7ed66dda4d2c3d3d97b24ace830f572dba2acc4
|