🧬 Formed
Formed is a flexible framework for managing data, experiments, and workflows in both research and production environments. It provides a simple yet powerful DAG-based workflow system with automatic caching, dependency tracking, and seamless integration with popular ML tools.
Key Features
- 📊 DAG-based workflows: Define complex workflows as directed acyclic graphs with automatic dependency resolution
- 💾 Smart caching: Content-based automatic caching that detects code changes via AST analysis
- 🔧 Flexible configuration: Use Jsonnet/JSON for declarative workflow definitions with type safety
- 🔌 Rich integrations: Built-in support for PyTorch, 🤗 Transformers, MLflow, and more
- 🎯 Type-safe: Leverage Python type hints for automatic object construction and validation
- 📦 Extensible: Easy to extend with custom steps, formats, and organizers
Quick Example
Define reusable computation steps with automatic caching:
# mysteps.py
from collections.abc import Iterator
from formed import workflow
@workflow.step
def load_dataset(size: int) -> Iterator[int]:
for i in range(size):
yield i
@workflow.step
def square(dataset: Iterator[int]) -> Iterator[int]:
for i in dataset:
yield i * i
Connect steps in a workflow configuration:
// workflow.jsonnet
{
steps: {
dataset: {
type: 'load_dataset',
size: 10
},
results: {
type: 'square',
dataset: { type: 'ref', ref: 'dataset' }
}
}
}
Configure and run:
# formed.yml
workflow:
organizer:
type: filesystem
required_modules:
- mysteps
formed workflow run workflow.jsonnet --execution-id my-experiment
Results are automatically cached - rerunning only executes changed steps!
Installation
pip install formed
With integrations:
pip install formed[mlflow] # MLflow integration
pip install formed[torch] # PyTorch integration
pip install formed[transformers] # 🤗 Transformers integration
pip install formed[all] # All integrations
Documentation
📖 Full documentation available here
- Quick Start - Get started in minutes
- Tutorials - Practical examples and use cases
- Guides - Deep dives into concepts and features
- API Reference - Complete API documentation
Why Formed?
Formed bridges the gap between experimental notebooks and production pipelines:
- Reproducible: Content-based caching ensures consistent results
- Iterative: Only re-execute what changed, speeding up development
- Collaborative: Declarative configs make workflows easy to share and review
- Production-ready: Same code works in research and deployment
Whether you're prototyping in Jupyter or deploying at scale, formed adapts to your workflow.
License
MIT License - see LICENSE file for details.
Metadata
Release files for formed 0.0.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| formed-0.0.13.tar.gz | 196.0 kB | Without provenance | Details for formed-0.0.13.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| formed-0.0.13-py3-none-any.whl | Python 3 | none | any | Details for formed-0.0.13-py3-none-any.whl |
Total release size: 444.4 kB
Release files / formed-0.0.13.tar.gz
| Download URL | formed-0.0.13.tar.gz |
|---|---|
| Size | 196.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
694da879db7660a22274335d332d27b5b0719cf10efe6a196cd0fdb85d99c8a3
|
|
BLAKE2b-256 checksum How to use checksums |
9be66a8baa2345e313a7f6b0677d9dbcd10673f25a49a820ad09fccd8044335b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / formed-0.0.13-py3-none-any.whl
| Download URL | formed-0.0.13-py3-none-any.whl |
|---|---|
| Size | 248.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2f9dd1c525e6e9d241c0eb54b6b6be5d2ad85e50a843a4ed6fcf35247acb1e6c
|
|
BLAKE2b-256 checksum How to use checksums |
d062289d939c75bb9598c2e9d214338291e92771b79dc5e965d9dc1cea14c475
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Security for formed 0.0.13
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.