Skip to main content

pyfect

PyPI version Python 3.13+ CI codecov Documentation Status License: MIT

Structured effects for modern Python

Python is being used to build systems far larger and more concurrent than it was originally designed for. Async is now unavoidable, yet error handling, resource management, and concurrency remain ad‑hoc and fragile. Exceptions leak everywhere. Background tasks escape. The sync/async boundary infects entire codebases.

pyfect exists to make this situation survivable.

It provides a small, opinionated core for describing effects explicitly, handling errors as values, and enforcing structured concurrency — without turning Python into something unrecognizable.


What pyfect is

  • A Python‑native effect system inspired by functional programming, not a port of another language
  • A single execution model that can compose synchronous and asynchronous work
  • Explicit errors that compose instead of exploding control flow
  • Structured concurrency by default — no silent background work
  • A runtime‑first design where safety is enforced at execution boundaries

pyfect favors clarity, discipline, and correctness over convenience magic.


What pyfect is not

  • Not a framework
  • Not a replacement for asyncio, Trio, or AnyIO
  • Not “pure FP” or academic
  • Not decorator‑driven async magic
  • Not a grab‑bag of monadic utilities

pyfect does not attempt to encode the entire program in types, eliminate exceptions everywhere, or abstract away Python’s runtime model.


Design philosophy

Safety over convenience

If an operation can fail, it should say so. If work runs concurrently, it should be scoped. If resources are acquired, their lifetime should be explicit.

pyfect intentionally avoids APIs that:

  • spawn unscoped background tasks
  • swallow errors
  • rely on implicit global state
  • hide sync/async boundaries

Effects describe, runtimes decide

Effects are descriptions of work. Execution is centralized and controlled. Side effects only happen at the boundary, where they can be supervised, cancelled, logged, or traced.

Small core, honest utilities

The core of pyfect is intentionally small. Utilities are built on top — but only when they preserve explicit failure, structured concurrency, and resource safety.


Status

pyfect is in early design and exploration. The ideas and philosophy are being shaped before the implementation is finalized.

Expect breaking changes. Expect opinions. Expect discipline.


License

MIT

Metadata

Release files for pyfect 0.2.1

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

Source distribution (sdist)

Source distribution for pyfect 0.2.1
File Size Uploaded
pyfect-0.2.1.tar.gz 16.1 kB Details

Built distribution (wheel)

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

Total release size: 31.7 kB

Release files / pyfect-0.2.1.tar.gz

Download URL pyfect-0.2.1.tar.gz
Size 16.1 kB
Tags Source
SHA-256 checksum
How to use checksums
148eb6f4578c359a57e52b56898cc62b70ba2ee502f4d32ec541cbe679902a83
BLAKE2b-256 checksum
How to use checksums
c022f28b3da727750dbe8042109fed2065b379d62ab8f6a888b80713eb496188
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 10, 2026.

Transparency log

Release files / pyfect-0.2.1-py3-none-any.whl

Download URL pyfect-0.2.1-py3-none-any.whl
Size 15.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a2991cf01e20640bb9383def064f5452c171d09b16ac690b977cebbfbce6549c
BLAKE2b-256 checksum
How to use checksums
3c3a7525ca93e711bb1ca91ca1fc3ddf5699e67468a0b9fcdfd61debade18fba
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Feb 10, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files

0.2.0

2 release files

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