Skip to main content

A framework for declarative, functional dataset definitions.

Project description

Labrea Logo

Labrea

A framework for declarative, functional dataset definitions.

lifecycle PyPI Downloads pre-commit Coverage docs

Installation

Labrea is available for install via pip.

pip install labrea

Alternatively, you can install the latest development version from GitHub.

pip install git+https://github.com/8451/labrea@develop

Usage

See our usage guide here.

Labrea exposes a dataset decorator that allows you to define datasets and their dependencies in a declarative manner. Dependencies can either be other datasets or Options, which are values that can be passed in at runtime via a dictionary.

from labrea import dataset, Option
import pandas as pd


@dataset
def stores(path: str = Option('PATHS.STORES')) -> pd.DataFrame:
    return pd.read_csv(path)


@dataset
def transactions(path: str = Option('PATHS.SALES')) -> pd.DataFrame:
    return pd.read_csv(path)


@dataset
def sales_by_region(
        stores_: pd.DataFrame = stores,
        transactions_: pd.DataFrame = transactions
) -> pd.DataFrame:
    """Merge stores to transactions, sum sales by region"""
    return pd.merge(transactions_, stores_, on='store_id').groupby('region')['sales'].sum().reset_index()


options = {
    'PATHS': {
        'STORES': 'path/to/stores.csv',
        'SALES': 'path/to/sales.csv'
    }
}


stores(options)
## +-----------------+-----------+
## | store_id        | region    |
## |-----------------+-----------|
## | 1               | North     |
## | 2               | North     |
## | 3               | South     |
## | 4               | South      |
## +-----------------+-----------+

transactions(options)
## +-----------------+-----------------+-----------------+
## | store_id        | sales           | transaction_id  |
## |-----------------+-----------------+-----------------|
## | 1               | 100             | 1               |
## | 2               | 200             | 2               |
## | 3               | 300             | 3               |
## | 4               | 400             | 4               |
## +-----------------+-----------------+-----------------+

sales_by_region(options)
## +-----------------+-----------------+
## | region          | sales           |
## |-----------------+-----------------|
## | North           | 300             |
## | South           | 700             |
## +-----------------+-----------------+

Contributing

If you would like to contribute to labrea, please read the Contributing Guide.

Changelog

A summary of recent updates to labrea can be found in the Changelog.

Maintainers

Maintainer Email
Austin Warner austin.warner@8451.com
Michael Stoepel michael.stoepel@8451.com

Links

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

labrea-2.0.2.tar.gz (245.6 kB view details)

Uploaded Source

Built Distribution

labrea-2.0.2-py3-none-any.whl (44.9 kB view details)

Uploaded Python 3

File details

Details for the file labrea-2.0.2.tar.gz.

File metadata

  • Download URL: labrea-2.0.2.tar.gz
  • Upload date:
  • Size: 245.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for labrea-2.0.2.tar.gz
Algorithm Hash digest
SHA256 75b3ef2326952d2c41e48aa1e32f9ffe904b215679b50dfd305097406afad8d0
MD5 4c54749a50b6ab3e8e07ea679d55f759
BLAKE2b-256 3c66be296453c424a96d7666eb012788d94c181b90677dcd6a68a1fd4574b79b

See more details on using hashes here.

Provenance

The following attestation bundles were made for labrea-2.0.2.tar.gz:

Publisher: build-and-deploy.yml on 8451/labrea

Attestations:

File details

Details for the file labrea-2.0.2-py3-none-any.whl.

File metadata

  • Download URL: labrea-2.0.2-py3-none-any.whl
  • Upload date:
  • Size: 44.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.1.1 CPython/3.12.7

File hashes

Hashes for labrea-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f4484adc095ba1cad94b43be5228775985df8ecf47cfc97dcffabdb8b1d41806
MD5 aef705886ef3b201ce8615395d8ffb14
BLAKE2b-256 282d6339521e037692251a409ce165d3d8f734a2f3ee5cba129a59282aad5a78

See more details on using hashes here.

Provenance

The following attestation bundles were made for labrea-2.0.2-py3-none-any.whl:

Publisher: build-and-deploy.yml on 8451/labrea

Attestations:

Supported by

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