Skip to main content

No project description provided

Project description

quak logo
quak /kwæk/

an anywidget for data that talks like a duck

quak is a scalable data profiler for quickly scanning large tables, capturing interactions as executable SQL queries.

  • interactive 🖱️ mouse over column summaries, cross-filter, sort, and slice rows.
  • fast ⚡ built with Mosaic; views are expressed as SQL queries lazily executed by DuckDB.
  • flexible 🔄 supports many data types and formats via Apache Arrow, the dataframe interchange protocol, and the Arrow PyCapsule Interface.
  • reproducible 📓 a UI for building complex SQL queries; materialize views in the kernel for further analysis.

install

pip install quak

usage

The easiest way to get started with quak is using the IPython cell magic.

%load_ext quak
import polars as pl

df = pl.read_parquet("https://github.com/uwdata/mosaic/raw/main/data/athletes.parquet")
df
olympic athletes table

quak hooks into Jupyter's display mechanism to automatically render any dataframe-like object (implementing the Python dataframe interchange protocol or Arrow PyCapsule Interface) using quak.Widget instead of the default display.

Alternatively, you can use quak.Widget directly:

import polars as pl
import quak

df = pl.read_parquet("https://github.com/uwdata/mosaic/raw/main/data/athletes.parquet")
widget = quak.Widget(df)
widget

interacting with the data

quak captures all user interactions as queries.

At any point, table state can be accessed as SQL,

widget.sql # SELECT * FROM df WHERE ...

which for convenience can be executed in the kernel to materialize the view for further analysis:

widget.data() # returns duckdb.DuckDBPyRelation object

By representing UI state as SQL, quak makes it easy to generate complex queries via interactions that would be challenging to write manually, while keeping them reproducible.

using quak in marimo

quak can also be used in marimo notebooks, which provide out-of-the-box support for anywidget:

import marimo as mo
import polars as pl
import quak

df = pl.read_parquet("https://github.com/uwdata/mosaic/raw/main/data/athletes.parquet")
widget = mo.ui.anywidget(quak.Widget(df))
widget

contributing

Contributors welcome! Check the Contributors Guide to get started. Note: I'm wrapping up my PhD, so I might be slow to respond. Please open an issue before contributing a new feature.

references

quak pieces together many important ideas from the web and Python data science ecosystems. It serves as an example of what you can achieve by embracing these platforms for their strengths.

  • Observable's data table: Inspiration for the UI design and user interactions.
  • Mosaic: The foundation for linking databases and interactive table views.
  • Apache Arrow: Support for various data types and efficient data interchange between JS/Python.
  • DuckDB: An amazingly engineered piece of software that makes SQL go vroom.

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

quak-0.3.4.tar.gz (180.0 kB view details)

Uploaded Source

Built Distribution

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

quak-0.3.4-py3-none-any.whl (180.9 kB view details)

Uploaded Python 3

File details

Details for the file quak-0.3.4.tar.gz.

File metadata

  • Download URL: quak-0.3.4.tar.gz
  • Upload date:
  • Size: 180.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for quak-0.3.4.tar.gz
Algorithm Hash digest
SHA256 fe9e0fad316f3833e01f7bce04d6ea1bc1d80c9830e6532c932672e22ecf8e4a
MD5 0de1a38f2b1ee0bebaa4e29be6bab93b
BLAKE2b-256 aa372b3b63f0e094f1d0c8305189538cba7b00b95864714be06f9131cc308876

See more details on using hashes here.

Provenance

The following attestation bundles were made for quak-0.3.4.tar.gz:

Publisher: release.yml on manzt/quak

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file quak-0.3.4-py3-none-any.whl.

File metadata

  • Download URL: quak-0.3.4-py3-none-any.whl
  • Upload date:
  • Size: 180.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for quak-0.3.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5db354ade98b14eedda69dfb0a31c6319acd6670c0ffa0a801e9402578057d07
MD5 2bab52c21a470fc647a1a0c77592f5e2
BLAKE2b-256 5f5d0aaca76857a0e9ab4e0be8f360477348b4e07a5cc2a3c145b90d0cc942f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for quak-0.3.4-py3-none-any.whl:

Publisher: release.yml on manzt/quak

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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