Metadata-Version: 2.1
Name: mediate
Version: 0.1.6
Summary: Middleware for every occasion
Home-page: https://github.com/tombulled/middleware
License: MIT
Keywords: python,middleware,mediate
Author: Tom Bulled
Author-email: 26026015+tombulled@users.noreply.github.com
Requires-Python: >=3.8,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Requires-Dist: roster (>=0.1.11,<0.2.0)
Requires-Dist: typing-extensions (>=4.4.0,<5.0.0)
Project-URL: Documentation, https://github.com/tombulled/middleware
Project-URL: Repository, https://github.com/tombulled/middleware
Description-Content-Type: text/markdown

# mediate
Middleware for every occasion

## Installation
`mediate` can be installed from [PyPI](https://pypi.org/project/mediate/)
```console
pip install mediate
```

## Usage
### `@middleware`
```python
from mediate import middleware

def shout(call_next, name):
    return call_next(name.upper())

def exclaim(call_next, name):
    return call_next(name + "!")

@middleware(shout, exclaim)
def hello(name):
    print(f"Hello, {name}")
```

```python
>>> hello("sam")
Hello, SAM!
```

### `Middleware`
#### `Middleware.bind`
```python
import mediate

middleware = mediate.Middleware()

@middleware
def shout(call_next, name):
    return call_next(name.upper())

@middleware
def exclaim(call_next, name):
    return call_next(name + "!")

@middleware.bind
def hello(name):
    print(f"Hello, {name}")
```

```python
>>> hello("sam")
Hello, SAM!
```

#### `Middleware.compose`
```python
import mediate

middleware = mediate.Middleware()

@middleware
def shout(call_next, name):
    return call_next(name.upper())

@middleware
def exclaim(call_next, name):
    return call_next(name + "!")

def hello(name):
    print(f"Hello, {name}")

composed_hello = middleware.compose(hello)
```

```python
>>> hello("sam")
Hello, sam
>>> composed_hello("sam")
Hello, SAM!
```
