Skip to main content

Tuberia logo

Tuberia CI pipeline status Tuberia coverage status Tuberia issues Tuberia contributors Tuberia total downloads Tuberia downloads per month
Data engineering meets software engineering


📚 Documentation: https://aidictive.github.io/tuberia

⌨️ Source Code: https://github.com/aidictive/tuberia


🤔 What is this?

Tuberia is born from the need to bring the worlds of data and software engineering closer together. Here is a list of common problems in data projects:

  • Loooooong SQL queries impossible to understand/test.
  • A lot of duplicate code due to the difficulty of reusing it in SQL queries.
  • Lack of tests, sometimes because the used framework does not facilitate testing tasks.
  • Lack of documentation.
  • Discrepancies between the existing documentation and the latest deployed code.
  • A set of notebooks deployed under the Databricks Share folder.
  • A generic notebook with utility functions.
  • Use of drag-and-drop frameworks that limit the developer's creativity.
  • Months of intense work to migrate existing pipelines from one orchestrator to another (e.g. from Airflow to Prefect, from Databricks Jobs to Data Factory...).

Tuberia aims to solve all these problems and many others.

🤓 How it works?

You can view Tuberia as if it were a compiler. Instead of compiling a programming language, it compiles the steps necessary for your data pipeline to run successfully.

Tuberia is not an orchestrator, but it allows you to run the code you write in Python in any existing orchestrator: Airflow, Prefect, Databricks Jobs, Data Factory....

Tuberia provides some abstraction of where the code is executed, but defines very well what are the necessary steps to execute it. For example, this shows how to create a PySpark DataFrame from the range function and creates a Delta table.

import pyspark.sql.functions as F

from tuberia import PySparkTable, run


class Range(PySparkTable):
    """Table with numbers from 1 to `n`.

    Attribute:
        n: Max number in table.

    """
    n: int = 10

    def df(self):
        return self.spark.range(self.n).withColumn("id", F.col(self.schema.id)


class DoubleRange(PySparkTable):
    range: Range = Range()

    def df(self):
        return self.range.read().withColumn("id", F.col("id") * 2)


run(DoubleRange())

!!! warning

Previous code may not work yet and it can change. Please, notice this
project is in an early stage of its development.

All docstrings included in the code will be used to generate documentation about your data pipeline. That information, together with the result of data expectations/data quality rules will help you to always have complete and up to date documentation.

Besides that, as you have seen, Tuberia is pure Python so doing unit tests/data tests is very easy. Programming gurus will enjoy data engineering again!

Metadata

Release files for tuberia 0.0.1

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

Source distribution (sdist)

Source distribution for tuberia 0.0.1
File Size Uploaded
tuberia-0.0.1.tar.gz 15.1 kB Details

Built distribution (wheel)

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

Total release size: 31.9 kB

Release files / tuberia-0.0.1.tar.gz

Download URL tuberia-0.0.1.tar.gz
Size 15.1 kB
Tags Source
SHA-256 checksum
How to use checksums
d58fa43aab538ef13f71ae4a83b01ec841a74e6a778344b4481185570ea58a1c
BLAKE2b-256 checksum
How to use checksums
b17d72084e69ccf97dbd54bb78a57b7f005a81dc2412c7a3debd0ed86732d998
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.0 CPython/3.10.8 Linux/5.15.0-1022-azure

Release files / tuberia-0.0.1-py3-none-any.whl

Download URL tuberia-0.0.1-py3-none-any.whl
Size 16.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
129079a6f23d82b07d272bfee50f4a80d008dfe5f613281701cfdd043ee09f6f
BLAKE2b-256 checksum
How to use checksums
6c34bf21bec5190c877f2427fd928d5eec9c02b9c67c686d67995c29c937aaf7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.2.0 CPython/3.10.8 Linux/5.15.0-1022-azure

Release history Release notifications | RSS feed

This release

0.0.1 This release

2 release files

0.0.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