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.0.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.0-py3-none-any.whl (72.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: hulista-0.1.0.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.0.tar.gz
Algorithm Hash digest
SHA256 fdea68128da1f90b2c062bb579ac55ed738f827ec3ab1c2a7087725c10f0eda2
MD5 acd2e357131444d76da2e038e4ea3dec
BLAKE2b-256 09a82880992b438256529e1bdc7ca678f0782435293d2c5578998534b6ae37af

See more details on using hashes here.

Provenance

The following attestation bundles were made for hulista-0.1.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: hulista-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 72.6 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e66b0dfdf43db8163a997feeada3fb816f3c1e7c881455717a25f906d19bb9fe
MD5 3467c7a42b686e47f02659cbedf8171f
BLAKE2b-256 c2be144cafa70fd90c86de827e91f093fbd88064a1fd36af90ff599c18304d2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for hulista-0.1.0-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