Skip to main content

Functional, immutable, concurrent Python — all batteries included

Project description

hulista

Functional, immutable, concurrent Python — all batteries included.

hulista is the single published distribution for the full hulista toolkit. One install gives you immutable data structures, sealed typing, runtime dispatch, actor-style concurrency, collect-all task groups, functional combinators, and record-update ergonomics.

Documentation: https://rahulrajaram.github.io/hulista/

Why install the umbrella package?

Install hulista when you want a coherent batteries-included stack instead of picking packages one by one. It is especially useful for:

  • event-driven or agent-style systems that combine immutable state with async orchestration
  • teams that want one dependency and one docs entry point
  • experimentation across the full package family before narrowing to individual imports

The hulista wheel bundles the toolkit's runtime modules directly:

Package Import Description
asyncio-actors asyncio_actors OTP-inspired actor primitives for asyncio
fp-combinators fp_combinators Lightweight functional programming combinators
live-dispatch live_dispatch Runtime-extensible multiple dispatch
persistent-collections persistent_collections Immutable collections with structural sharing
sealed-typing sealed_typing Sealed classes for exhaustive matching
taskgroup-collect taskgroup_collect TaskGroup that collects all errors
with-update with_update Record update syntax for frozen dataclasses

Install

Install the full toolkit:

pip install hulista

The bundled modules remain importable directly if you prefer focused imports:

from persistent_collections import PersistentMap
from fp_combinators import pipe

Quick start

import hulista

# Persistent immutable map
m = hulista.PersistentMap().set("x", 1).set("y", 2)

# FP pipe
result = hulista.pipe(m, lambda pm: sum(pm.values()))

# Result type
ok = hulista.Ok(42)
err = hulista.Err("oops")

# Sealed hierarchy
@hulista.sealed
class Event: pass

class Click(Event): pass
class KeyPress(Event): pass

subs = hulista.sealed_subclasses(Event)  # {Click, KeyPress}

What you get

  • PersistentMap / PersistentVector for immutable application state with structural sharing
  • pipe, async_pipe, Ok, and Err for dataflow and typed error handling
  • ActorSystem for supervised async workers and message passing
  • Dispatcher for runtime-extensible type or predicate dispatch
  • sealed for exhaustiveness-friendly closed hierarchies
  • CollectorTaskGroup for collect-all structured concurrency
  • updatable and with_update for record-update syntax on frozen models

Source layout

Each package lives in the monorepo with its own README and tests, but the public PyPI release is hulista:

Requires Python 3.11+

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

hulista-0.1.1.tar.gz (56.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hulista-0.1.1-py3-none-any.whl (73.5 kB view details)

Uploaded Python 3

File details

Details for the file hulista-0.1.1.tar.gz.

File metadata

  • Download URL: hulista-0.1.1.tar.gz
  • Upload date:
  • Size: 56.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hulista-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7dfcb8094d43a94a12cbc01274a53f64cd5325f4d331711a6c1379192b0045bb
MD5 a7f661a72e3b3259d23e25b4100abd24
BLAKE2b-256 5630653a432149df08d3254e10f2f734dfce82a1d60d137af1209d01a596a1b6

See more details on using hashes here.

Provenance

The following attestation bundles were made for hulista-0.1.1.tar.gz:

Publisher: publish.yml on rahulrajaram/hulista

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hulista-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: hulista-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 73.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for hulista-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b51689910b76d0604a677aa7e3a7abda655d42d2de8cc057eec7a21a0890df66
MD5 5f5c2bf87c28e7aa00eca9aaf96dd4bb
BLAKE2b-256 fca77d1c31730cb78ed1b1bb9645e4d9f75e33ebf8634dd7126e5a60caa0a32b

See more details on using hashes here.

Provenance

The following attestation bundles were made for hulista-0.1.1-py3-none-any.whl:

Publisher: publish.yml on rahulrajaram/hulista

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page