Skip to main content

Infix piping operator

Project description

ipo: Infix piping operator

Demo

from ipo import ipo, opi, head, write, p

# Ipo makes data flows much easier to follow.
ipo([5, 2, 3, 1, 4]) | sorted                     | opi  # [1, 2, 3, 4, 5]
# Ipo comes with a shorthand for partial application:
#   p(head)(3) is equivalent to functools.partial(head, 3)
ipo([5, 2, 3, 1, 4]) | p(head)(3)          | list | opi  # [5, 2, 3]
ipo([5, 2, 3, 1, 4]) | p(head)(3) | sorted        | opi  # [2, 3, 5]
ipo([5, 2, 3, 1, 4]) | sorted | p(head)(3) | list | opi  # [1, 2, 3]
# Much more readable than the original!
#   list(itertools.islice(sorted([5, 2, 3, 1, 4]), 3))

# You can also pipe to print directly…
ipo([5, 2, 3, 1, 4]) | sorted | p(head)(3) | list | print  # [1, 2, 3]
# …or to ipo's write, which prints each line of an iterable on its own line.
ipo([5, 2, 3, 1, 4]) | sorted | p(head)(3) | list | write  # 1\n2\n3
from itertools import starmap
from ipo import from_csv, skip, to_csv, before, write, p

# Ipo is ideally suited for working with CSV data.
ipo("""
#Voltage,Current
12,1
8,2
220,6
""".strip().split()) | from_csv | p(skip)(1) | \
	p(starmap)(lambda v, a: (v, a, float(v) * float(a))) | \
	to_csv | p(before)(["#Voltage,Current,Power"]) | write
# #Voltage,Current,Power
# 12,1,12.0
# 8,2,16.0
# 220,6,1320.0
from ipo import read, write, p

# Most ipo chains that work over iterable data are lazy by default. You can load huge files,
# process them and write the results to another file.
with open("bigfile.txt") as f_in, open("processed.txt") as f_out:
	read(file=f_in) | p(map)(some_preprocessing) | \
	p(map)(some_advanced_function) | \
	p(map)(some_formatting) | p(write)(file=f_out)

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

ipo-1.1.0.tar.gz (24.4 kB view details)

Uploaded Source

Built Distribution

ipo-1.1.0-py3-none-any.whl (21.9 kB view details)

Uploaded Python 3

File details

Details for the file ipo-1.1.0.tar.gz.

File metadata

  • Download URL: ipo-1.1.0.tar.gz
  • Upload date:
  • Size: 24.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for ipo-1.1.0.tar.gz
Algorithm Hash digest
SHA256 f74004b19ccf411f8d6c5dd1373b4e90ef1811cc36fdac5183a5564aecb21603
MD5 045d9a703b65714a86d873f771c38ba4
BLAKE2b-256 a108959872cedffc07d586a910a55ad9fa6a88586070d68c0a90b4e714069c65

See more details on using hashes here.

File details

Details for the file ipo-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: ipo-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 21.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.5

File hashes

Hashes for ipo-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 afacd0aa48d577e51eb9539365d3c8ab185f3eb47302280225223daa51dd1c2d
MD5 7b5ae51695f39cce8fff44fee88fe791
BLAKE2b-256 7ddfa161cdab8e9d394394503751ca1058325e9bbfcd76c67b32adde25e43e61

See more details on using hashes here.

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