Skip to main content

A functional programming library that aims to supplant Python's existing functional interfaces, offering a more comprehensive and expressive alternative.

Project description

Seittik

Seittik is a functional programming library for Python that aims to supplant Python's existing functional interfaces, offering a more comprehensive and expressive alternative.

Put another way: If you ever wished Python's map, filter, and itertools had a fluent API, or that lambda wasn't quite so verbose, this is for you.

It provides:

  • A fluent and extensive API for processing iterable data: pipes.
  • A compact and expressive alternative to lambda: shears.
  • A kitchen-sink, all-under-one-roof approach.
  • A REPL-first philosophy.

Examples

Something basic:

from seittik import P, X, Y

# Take numbers 1 through 4, triple them, keep evens, and sum them
P([1, 2, 3, 4]).map(X * 3).filter(X % 2 == 0).fold(X + Y)
# 18

# Or, equivalently:
P.range(1, 4).map(X * 3).filter(X % 2 == 0).sum()
# 18

And something more amusing:

import random; random.seed(0) # Get a deterministic result below
from seittik import P, X, Y

# Return 5 arrays of traditional RPG stats (rolling three six-sided dice
# for each of "Str", "Dex", "Con", "Int", "Wis", and "Cha") that have at
# least one score of 14 or better, sorted by the sum of the array, in
# descending order, providing dict labels.
(P.roll('3d6')
    .chunk(6)
    .filter(P.any(X >= 14))
    .dictmap({'sum': sum, 'scores': X})
    .take(5)
    .sort(key=X['sum'], reverse=True)
    .list())
# [{'sum': 71, 'scores': (13, 13, 9, 8, 16, 12)},
#  {'sum': 66, 'scores': (14, 10, 8, 13, 9, 12)},
#  {'sum': 66, 'scores': (8, 14, 9, 12, 13, 10)},
#  {'sum': 57, 'scores': (9, 15, 8, 6, 10, 9)},
#  {'sum': 54, 'scores': (12, 7, 5, 14, 6, 10)}]

(These undoubtedly look much nicer on the documentation site.)

Installation

Using Poetry with an existing project:

poetry add seittik

If you're using pip directly (not recommended):

pip install seittik

Documentation

See seittik.com

License

MIT. See LICENSE.

Changelog

See CHANGELOG.md.

Like it? Support kitties!

If you're able, donations to 4 Paws Sake PA would be enormously appreciated. They're an absolutely wonderful animal rescue.

("Seittik" is "kitties" spelled backwards. I'm a cat person, and I wanted to avoid name collisions.)

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

seittik-2023.4.tar.gz (39.2 kB view hashes)

Uploaded Source

Built Distribution

seittik-2023.4-py3-none-any.whl (41.5 kB view hashes)

Uploaded Python 3

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