semvec/pypi-packages huggingface dataset:
yaps-lib 0.0.1
A lightweight publish, subscribe library
Requires Python: >=3.8

Github can be found [here](https://github.com/victorhook/yaps)

## Setup
`pip install yaps`

## CLI tools
To use the executables, ensure that yaps is installed which should put *yaps-publish*, *yaps-subscribe* and *yaps-server* available your path.

### CLI Publish
`yaps-publish --topic weather --message "Very cold today!"`

### CLI Subscribe
`yaps-publish --topic weather`


## Python API
The client can be used either asynchronous or synchronous.

### Publish Synchronous
```
from yaps.client import Client

client = Client('127.0.0.1', 8999)
client.publish(topic='weather', message='Very cold today!')
```
### Subscribe Synchronous
```
from yaps.client import Client

client = Client('127.0.0.1', 8999)
client.subscribe(topic='weather',
                 data_received=lambda msg: print(f'New data: {msg}'))
```

### Publish Asynchronous
```
import asyncio
from yaps.client import AsyncClient

client = AsyncClient('127.0.0.1', 8999)
asyncio.run(client.publish(topic='weather', message='Very cold today!'))
```

### Subscribe Asynchronous
```
import asyncio
from yaps.client import AsyncClient

client = AsyncClient('127.0.0.1', 8999)
callback = lambda msg: print(f'New data: {msg}')
asyncio.run(client.subscribe(topic='test',
                             data_received=callback))
```

### Server (Asynchronous only)
```
import asyncio
from yaps.server import Server

server = Server('127.0.0.1', 8999)
asyncio.run(server.start())
```

## Logging
Logging is enabled by default and can be disabled by calling `disable()` on either a client or server.
You can set the logging level by calling `set_loglevel(string)` with either a string, or an int directly from the `logging` module.
Logging output is by default directed to both stdin and a log file, located at `~/.yaps` on Unix systems (not 100% sure where this is located in Windows).