atomicpuppy
A service-activator component for eventstore, written in Python
A Brief and Mostly Useless Quickstart:
# config.yaml
atomicpuppy:
host: localhost
port: 2113
# each stream will be polled by a separate async http client
streams:
- stream_a
- stream_b
- stream_with_a_#date#
# the counter keeps track of which messages have been processed
counter:
redis:
host: localhost
port: 6379
# main.py
# AtomicPuppy uses asyncio coroutines for concurrent IO
import asyncio
import logging
import signal
from atomicpuppy import AtomicPuppy
# AtomicPuppy needs a callback to pass you messages.
def handle(msg):
print(msg)
# Config is read from yaml files.
ap = AtomicPuppy('config.yaml', handle)
loop = asyncio.get_event_loop()
# to kill the puppy, call stop()
def stop():
logging.debug("SIGINT received, shutting down")
ap.stop()
loop.add_signal_handler(signal.SIGINT, stop)
# and to start it call start.
loop.run_until_complete(ap.start())
Run the tests
A tox.ini file is provided to run the tests with different versions of Python.
To run the tests:
- Make sure you have the Python 3.6, 3.7, 3,8, 3.9 and 3.10 headers installed (for Ubuntu please refer to https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa)
pip install -r test-requirements.txtfrom the root folder of the repository- Run
toxfrom the root folder of the repository
Prepare and run the tests on Mac with pyenv
Install pyenv and pyenv-virtualenv and python versions
brew install pyenv pyenv-virtualenv
Add the following lines to your .zshrc (check latest pyenv doc):
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
pyenv install 3.6.15
pyenv install 3.7.12
pyenv install 3.8.12
pyenv install 3.9.9
pyenv install 3.10.1
Check the latest versions, install the latest minor from each major version.
Create a virtual environment
pyenv virtualenv 3.10.1 atomicpuppy
pyenv activate atomicpuppy
pip install tox-pyenv
pip install -r test-requirements.txt
Run the tests
pyenv local atomicpuppy 3.6.13 3.7.10 3.8.10 3.9.5
tox
About python version
There is a bug in asyncio for python3.4 that was fixed in other versions. This is the bug report: https://bugs.python.org/issue23812 Because of that we have dropped support for python3.4 and we recommend to use python3.7.
Metadata
Release files for AtomicPuppy 1.5.6
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 |
|---|---|---|---|---|
| AtomicPuppy-1.5.6.tar.gz | 40.3 kB | Without provenance | Details for AtomicPuppy-1.5.6.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| AtomicPuppy-1.5.6-py3-none-any.whl | Python 3 | none | any | Details for AtomicPuppy-1.5.6-py3-none-any.whl |
Total release size: 69.7 kB
Release files / AtomicPuppy-1.5.6.tar.gz
| Download URL | AtomicPuppy-1.5.6.tar.gz |
|---|---|
| Size | 40.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1486032268b7c92ed22d6a71f6c98028a8916150cae5244f4e79361f59360546
|
|
BLAKE2b-256 checksum How to use checksums |
4994c6e0a293eaebe09ce3f7625485de2f4aba762c1067e0ed335656166c9c54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.14
|
Release files / AtomicPuppy-1.5.6-py3-none-any.whl
| Download URL | AtomicPuppy-1.5.6-py3-none-any.whl |
|---|---|
| Size | 29.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0dc307db6af5890342785a5281d81a22cebbdbb39be7486668c6f49eae970dd1
|
|
BLAKE2b-256 checksum How to use checksums |
bb066a8d61c45c2f35d6d1eb25bf637ec9910bd20e3d56248b5117a6c0e091bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.1 CPython/3.9.14
|
Security for AtomicPuppy 1.5.6
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.