Skip to main content

beakers

beakers is an experimental lightweight declarative ETL framework for Python

It is still very much in flux with no correctness or stability guarantees.

No contributions yet please, but feel free to poke around/ask questions.

Features

  • declarative ETL graph comprised of Python functions & Pydantic models
  • developer-friendly CLI for running processes
  • sync/async task execution
  • data checkpoints stored in local database for intermediate caching & resuming interrupted runs
  • robust error handling, including retries

Guiding Principles

  • Lightweight - Writing a single python file should be enough to get started. It should be as easy to use as a script in that sense.
  • Data-centric - Know what data is added at each step.
  • Modern Python - Take full advantage of recent additions to Python, including type hints, asyncio, and libraries like pydantic and rich.
  • Developer Experience - Focused on the developer experience: a nice CLI, helpful error messages.

Anti-Principles

Unlike most tools in this space, this is not a complete "enterprise grade" ETL solution.

It isn't a perfect analogy by any means but it could be said databeakers is to luigi what flask is to Django. If you are building your entire business around ETL, it makes sense to invest in the infrastructure & tooling to make that work. Maybe structuring your code around beakers will make it easier to migrate to one of those tools than if you had written a bespoke script. Plus, beakers is Python, so you can always start by running it from within a bigger framework.

Concepts

Like most ETL tools, beakers is built around a directed acyclic graph (DAG).

The nodes on this graph are known as "beakers", and the edges are often called "transforms".

(Note: These names aren't final, suggestions welcome.)

Beakers

Each node in the graph is called a "beaker". A beaker is a container for some data.

Each beaker has a name and a type. The name is used to refer to the beaker elsewhere in the graph. The type, represented by a pydantic model, defines the structure of the data. By leveraging pydantic we get a lot of nice features for free, like validation and serialization.

Transform

Edges in the graph represent dataflow between beakers. Each edge has a concept of a "source beaker" and a "destination beaker".

These come in two main flavors:

  • Transforms - A transform places new data in the destination beaker based on data already in the source beaker. An example of this might be a transform that takes a list of URLs and downloads the HTML for each one, placing the results in a new beaker.

  • Filter - A filter can be used to stop the flow of data from one beaker to another based on some criteria.

Seed

A concept somewhat unique to beakers is the "seed". A seed is a function that returns initial data for a beaker.

This is useful for things like starting the graph with a list of URLs to scrape, or a list of images to process.

A beaker can have any number of seeds, for example one might have a short list of URLs to use for testing, and another that reads from a database.

Metadata

Release files for databeakers 0.3.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for databeakers 0.3.10
File Size Uploaded
databeakers-0.3.10.tar.gz 42.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for databeakers 0.3.10
File Interpreter ABI Platform
databeakers-0.3.10-py3-none-any.whl Python 3 none any Details

Total release size: 78.8 kB

Release files / databeakers-0.3.10.tar.gz

Download URL databeakers-0.3.10.tar.gz
Size 42.5 kB
Tags Source
SHA-256 checksum
How to use checksums
28a5166e08c343a4054d8dbe5f0197bfc0bb2c8718969102a41904d69d464eee
BLAKE2b-256 checksum
How to use checksums
965b5910b1547a51e80ebef4db50efac39f2695178b309de745b5cdbe8a2b605
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.4

Release files / databeakers-0.3.10-py3-none-any.whl

Download URL databeakers-0.3.10-py3-none-any.whl
Size 36.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ec46bf450a59533a89ce56205ddbb4d857d08c0acf4a34b7d67e7502501bf7a5
BLAKE2b-256 checksum
How to use checksums
eff5d7a408e77fb505505c0127c6fea7ba9e41541e4851f5b9c2cf38b79948cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.4

Release history Release notifications | RSS feed

This release

0.3.10 This release

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page