Metadata-Version: 2.4
Name: without-core
Version: 0.0.1
Summary: Core contracts and executor for without: the sans-IO stream-processor substrate.
Author: Josh Karpel
Author-email: Josh Karpel <josh.karpel@gmail.com>
License-Expression: MIT
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Classifier: Typing :: Typed
Requires-Python: >=3.14
Description-Content-Type: text/markdown

# without

The narrow waist of the project: the contracts every plugin speaks, plus the
stream connectors and a `with`-scoped background task helper.

Three types carry the whole model (`without.contracts`):

- A `Stream[T]` is an asynchronous sequence of values: the one shape every
  connection takes, whoever does the I/O.
- A `Processor[In, Out]` transforms a stream of inputs into a stream of outputs:
  the only node type, and the only thing a user writes.
- A `Context[T]` is a stream viewed as its latest sampled value: `current()`
  reads the latest and never blocks.

Processors are built, not subclassed, from a 2×2 of builders (`from_map`,
`from_scan`, `from_sink`, `from_fold`) and connected with a small wiring
vocabulary (`compose`, `sample`, and the source/terminal adapters).

See [`PHILOSOPHY.md`](../../PHILOSOPHY.md) for why the model is shaped this way,
and the [`without` guide](https://without.help/guides/without/)
(with the [API reference](https://without.help/reference/without/))
for the full surface.
