Skip to main content

Tobacco: Your shiny new pipe >>!

Do you miss the %>% from R/dplyr? What about the |> from Julia? Now you can use a tobacco.pipe to chain together function calls! The @pipe decorator will take a function and repurpose the builtin right-bitshift operator >> to be a function pipe. I've hardly ever seen anyone using >>, so it doesn't seem likely many people will miss the default behavior.

A pipeline takes the value of a function call on the left-hand side, and passes it in as the first argument to the function on the right-hand side:

0 >> f >> g  # evaluates to g(f(0))

You can even specify keyword closures within the pipeline

# Evaluates to g(f(0, some_keyword=5), another="foo")
0 >> f(some_keyword=5) >> g(another="foo")

Installation

pip install tobacco

Usage

from tobacco import pipe


@pipe  # `pipe` overrides the builtin right-bitshift operator `>>`
def plus_one(a: int) -> int:
    return a + 1


@pipe
def minus_amount(b: int, amount: int = 2) -> int:
    return b - amount


@pipe
def plus_five(c: int) -> int:
    return c + 5


# 0 + 1 - 4 + 5 = 2
res = 0 >> plus_one >> minus_amount(amount=4) >> plus_five
print(res)  # 2

For very long data pipelines, this can clean up the readability a lot:

result = (
    load_data
    >> clean_data
    >> add_columns
    >> do_analysis
    >> upload_to_database
)

In this short example, result is the output of upload_to_database after all the prior steps completed.

Release files for tobacco 1.0.3

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

Source distribution (sdist)

Source distribution for tobacco 1.0.3
File Size Uploaded
tobacco-1.0.3.tar.gz 2.7 kB Details

Built distribution (wheel)

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

Total release size: 6.1 kB

Release files / tobacco-1.0.3.tar.gz

Download URL tobacco-1.0.3.tar.gz
Size 2.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ce1065c02448d88e624ed929a1c672d956c185418f147864cf983e4bad9d52c4
BLAKE2b-256 checksum
How to use checksums
02c9e4e7773599545d08705cdf8af0de41c1003108efb1c50023481cc722c001
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

Release files / tobacco-1.0.3-py3-none-any.whl

Download URL tobacco-1.0.3-py3-none-any.whl
Size 3.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
459b933e6422b654b54f7f2f1e908e65bcc070c9bf47ce4c0959aba108fa2724
BLAKE2b-256 checksum
How to use checksums
ec01f4e3a975682c27d74aee1ffa961403ecb1697bc64e656813af413e2b90b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

Release history Release notifications | RSS feed

This release

1.0.3 This release

2 release files

1.0.2

2 release files

1.0.1

2 release files

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