Skip to main content

Add your description here

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 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 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 to collect().write_parquet() when streaming=False.
  • session[name] — Retrieve a checkpoint as a LazyFrame.
  • 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

polars_checkpoint-0.1.0.tar.gz (5.6 kB view details)

Uploaded Source

Built Distribution

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

polars_checkpoint-0.1.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file polars_checkpoint-0.1.0.tar.gz.

File metadata

  • Download URL: polars_checkpoint-0.1.0.tar.gz
  • Upload date:
  • Size: 5.6 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

Hashes for polars_checkpoint-0.1.0.tar.gz
Algorithm Hash digest
SHA256 df1b50103604b8a4990454e7833da1071fe31a6412c7bd6c086eb10e1c45a122
MD5 9c11457ad9c18bcede59853bd96cf07e
BLAKE2b-256 f8a12abb54b917aafc370e052455d3474b27c4a25d33069cd721c2c9b79343c4

See more details on using hashes here.

File details

Details for the file polars_checkpoint-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: polars_checkpoint-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.0 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

Hashes for polars_checkpoint-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 50e030744fc31150413175531aa5f4ceaf419ca343c2b6b4b74fb226d06be356
MD5 3285db13089cd5a48e7ccc5332a66384
BLAKE2b-256 f0933f09f88e771ee0d6e725f9e24425f3c951e359adc4e03d975b5635c8de01

See more details on using hashes here.

Supported by

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