Catalog PyPI
Back to packageRELEASE DETAILS

0.1.3a11

PyPI

additory

Elegant data operations for DataFrames - add.to(), add.transform(), add.synthetic()

datadata-augmentationdataframepandaspolarsrustsynthetic-data
Published9 May 2026
Direct dependencies4
Transitive dependenciesNot calculated

README

Version 0.1.3a11 documentation

additory

Elegant data operations for DataFrames

A Rust-powered Python library for intuitive data transformations, lookups, synthetic data generation, and DataFrame comparison — with Polars and Pandas.

PyPI version Python Support License: MIT

Installation

pip install additory

Requirements: Python 3.9+ · Polars (required) · pyarrow (required) · Pandas (optional)

Quick Start

import additory as add
import polars as pl

Bring data from another DataFrame

orders = pl.DataFrame({'order_id': [1, 2], 'customer_id': [101, 102], 'amount': [250, 180]})
customers = pl.DataFrame({'customer_id': [101, 102], 'name': ['Alice', 'Bob']})

result = add.to(orders, customers, 'name', 'customer_id')

Transform data

df = pl.DataFrame({'price': [100, 200, 300], 'quantity': [2, 3, 1]})

result = add.transform('@calc', df, strategy={'total': 'price * quantity', 'tax': 'total * 0.1'})
result = add.transform('@filter', df, where='price > 150')
result = add.transform('@sort', df, by='price', strategy='desc')
result = add.transform('@aggregate', df, by='category', strategy={'price': 'sum'})

Generate synthetic data

result = add.synthetic('@new', n=1000, strategy={
    'age': 'normal(40, 10)',
    'salary': 'normal(75000, 15000)',
})

# Augment existing data
result = add.synthetic(df, n=100)

Compare DataFrames

diff = add.scan('@diff', old=df_jan, new=df_feb)

Use dynamic expressions

patients = pl.DataFrame({'weight': [70, 85], 'height': [1.70, 1.80]})
result = add.bmi(patients)

Pipe compatibility

result = (
    orders
    .pipe(add.to, customers, 'name', 'customer_id')
    .pipe(add.to, products, 'price', 'product_id')
)

Core Functions

FunctionPurposePipe-Friendly
add.to(bring_to, bring_from, bring, against, ...)Bring columns from another DataFrame✅
add.transform(mode, df, ...)Transform data (12 modes)❌
add.synthetic(df_or_mode, n, ...)Generate or augment data✅
add.scan(mode, df, ...)Analyze, diff, manage expressions❌
add.<dynamic>(df, ...)Named expression functions✅

Transform Modes

@calc · @filter · @sort · @aggregate · @harmonize · @round · @transpose · @extract · @onehot · @label · @deduce · @split

Features

  • 🔗 Intuitive Lookups — bring columns from external sources with natural syntax
  • ⚡ 12 Transform Modes — calculate, filter, sort, aggregate, encode, impute
  • 🔍 DataFrame Diff — compare snapshots with add.scan('@diff')
  • 🧮 Dynamic Expressions — 74 built-in formulas across 7 categories, extensible via .add files
  • 🎲 Synthetic Data — generate realistic test data or augment existing datasets
  • 📊 Lineage Tracking — trace data provenance with lineage=True
  • 🔄 Pipe Compatibility — fluent chaining with df.pipe()
  • 🚀 Rust Performance — ~95% Rust core via PyO3
  • 🐼 Polars & Pandas — works with both DataFrame libraries

Documentation

📚 sekarkrishna.github.io/additory

Version

Current version: 0.1.3a11

License

MIT License — see LICENSE for details.

Author: Krishnamoorthy Sankaran

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 9

Native requirements
4 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
polars
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
polars>=0.19.0runtime
pyarrow
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
pyarrow>=10.0.0runtime
pandas
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
pandas>=1.5.0; extra == "all"runtime
pyarrow
Environment
{
  "extras": "",
  "marker": "extra == \"all\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
pyarrow>=10.0.0; extra == "all"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
pytest>=7.0; extra == "dev"runtime
pandas
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
pandas>=1.5.0; extra == "dev"runtime
pyarrow
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
pyarrow>=10.0.0; extra == "dev"runtime
pandas
Environment
{
  "extras": "",
  "marker": "extra == \"pandas\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
pandas>=1.5.0; extra == "pandas"runtime
pyarrow
Environment
{
  "extras": "",
  "marker": "extra == \"pandas\"",
  "requires_python": ">=3.9",
  "evaluation": "NOT_EVALUATED"
}
pyarrow>=10.0.0; extra == "pandas"runtime

Distribution files

16 collected
additory-0.1.3a11-cp310-cp310-macosx_11_0_arm64.whl

bdist_wheel · 10,429.44 KB · Python cp310

Source file
additory-0.1.3a11-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

bdist_wheel · 11,693.21 KB · Python cp310

Source file
additory-0.1.3a11-cp310-cp310-win_amd64.whl

bdist_wheel · 11,630.07 KB · Python cp310

Source file
additory-0.1.3a11-cp311-cp311-macosx_11_0_arm64.whl

bdist_wheel · 10,429.26 KB · Python cp311

Source file
additory-0.1.3a11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

bdist_wheel · 11,693.09 KB · Python cp311

Source file
additory-0.1.3a11-cp311-cp311-win_amd64.whl

bdist_wheel · 11,630.4 KB · Python cp311

Source file
additory-0.1.3a11-cp312-cp312-macosx_11_0_arm64.whl

bdist_wheel · 10,429.21 KB · Python cp312

Source file
additory-0.1.3a11-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

bdist_wheel · 11,693.97 KB · Python cp312

Source file
additory-0.1.3a11-cp312-cp312-win_amd64.whl

bdist_wheel · 11,633.44 KB · Python cp312

Source file
additory-0.1.3a11-cp313-cp313-macosx_11_0_arm64.whl

bdist_wheel · 10,429.21 KB · Python cp313

Source file
additory-0.1.3a11-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

bdist_wheel · 11,693.97 KB · Python cp313

Source file
additory-0.1.3a11-cp313-cp313-win_amd64.whl

bdist_wheel · 11,633.43 KB · Python cp313

Source file
additory-0.1.3a11-cp39-cp39-macosx_11_0_arm64.whl

bdist_wheel · 10,429.05 KB · Python cp39

Source file
additory-0.1.3a11-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

bdist_wheel · 11,695.04 KB · Python cp39

Source file
additory-0.1.3a11-cp39-cp39-win_amd64.whl

bdist_wheel · 11,633.73 KB · Python cp39

Source file
additory-0.1.3a11.tar.gz

sdist · 1,239.16 KB · Python source

Source file

Repository

PENDING
sekarkrishna/additory

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 19:19 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:79288c4370872d2ec77d58bbee74cbe5833ebfdc3ac9cded95f94e0f8aa86a5e

Other collected versions

View all collected versions →