No project description provided
Project description
artigraph
Declarative Data Production
Installation
Artigraph can be installed from PyPI on python 3.9+ with pip install arti
.
Example
This simple example takes a series of purchase transactions and computes the total amount spent:
from pathlib import Path
from typing import Annotated
from arti import Annotation, Artifact, Graph, producer
from arti.formats.json import JSON
from arti.storage.local import LocalFile
from arti.types import Collection, Date, Float64, Int64, Struct
from arti.versions import SemVer
DIR = Path(__file__).parent
class Vendor(Annotation):
name: str
class Transactions(Artifact):
"""Transactions partitioned by day."""
type = Collection(
element=Struct(fields={"id": Int64(), "date": Date(), "amount": Float64()}),
partition_by=("date",),
)
class TotalSpend(Artifact):
"""Aggregate spend over all time."""
type = Float64()
format = JSON()
storage = LocalFile()
@producer(version=SemVer(major=1, minor=0, patch=0))
def aggregate_transactions(
transactions: Annotated[list[dict], Transactions]
) -> Annotated[float, TotalSpend]:
return sum(txn["amount"] for txn in transactions)
with Graph(name="test") as g:
g.artifacts.vendor.transactions = Transactions(
annotations=[Vendor(name="Acme")],
format=JSON(),
storage=LocalFile(path=str(DIR / "transactions" / "{date.iso}.json")),
)
g.artifacts.spend = aggregate_transactions(transactions=g.artifacts.vendor.transactions)
This example can be run easily with docker run --rm artigraph/example-spend
.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
arti-0.0.1.tar.gz
(51.0 kB
view hashes)
Built Distribution
arti-0.0.1-py3-none-any.whl
(63.9 kB
view hashes)