Skip to main content

Python package for eventsourcing with UmaDB

Project description

Event Sourcing with UmaDB

This package supports using the Python eventsourcing library with UmaDB.

Installation

Use pip to install the stable distribution from the Python Package Index.

$ pip install eventsourcing-umadb

Please note, it is recommended to install Python packages into a Python virtual environment.

Getting started

from typing import Any, Dict
from uuid import UUID

from eventsourcing.application import Application
from eventsourcing.domain import Aggregate, event


class TrainingSchool(Application):
    def register(self, name: str) -> UUID:
        dog = Dog(name)
        self.save(dog)
        return dog.id

    def add_trick(self, dog_id: UUID, trick: str) -> None:
        dog = self.repository.get(dog_id)
        dog.add_trick(trick)
        self.save(dog)

    def get_dog(self, dog_id) -> Dict[str, Any]:
        dog = self.repository.get(dog_id)
        return {'name': dog.name, 'tricks': tuple(dog.tricks)}


class Dog(Aggregate):
    @event('Registered')
    def __init__(self, name: str) -> None:
        self.name = name
        self.tricks = []

    @event('TrickAdded')
    def add_trick(self, trick: str) -> None:
        self.tricks.append(trick)

Configure the application to use UmaDB. Set environment variable PERSISTENCE_MODULE to 'eventsourcing_umadb', and set UMADB_URI to your UmaDB URI.

school = TrainingSchool(env={
    "PERSISTENCE_MODULE": "eventsourcing_umadb",
    "UMADB_URI": "http://127.0.0.1:50051",
})

The application's methods may be then called, from tests and user interfaces.

# Register dog.
dog_id = school.register('Fido')

# Add tricks.
school.add_trick(dog_id, 'roll over')
school.add_trick(dog_id, 'play dead')

# Get details.
dog = school.get_dog(dog_id)
assert dog["name"] == 'Fido'
assert dog["tricks"] == ('roll over', 'play dead')

For more information, please refer to the Python eventsourcing library and the UmaDB project.

Developers

Clone the GitHub repo and the use the following make commands.

Install Poetry.

$ make install-poetry

Install packages.

$ make install

Start UmaDB.

$ make start-umadb

Run tests.

$ make test

Stop UmaDB.

$ make stop-umadb

Check the formatting of the code.

$ make lint

Reformat the code.

$ make fmt

Tests belong in ./tests.

Edit package dependencies in pyproject.toml. Update installed packages (and the poetry.lock file) using the following command.

$ make update

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eventsourcing_umadb-0.3.1.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

eventsourcing_umadb-0.3.1-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file eventsourcing_umadb-0.3.1.tar.gz.

File metadata

  • Download URL: eventsourcing_umadb-0.3.1.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.14.0 Darwin/24.6.0

File hashes

Hashes for eventsourcing_umadb-0.3.1.tar.gz
Algorithm Hash digest
SHA256 a2ec80d55aa54d0c6417c2ae09a770da9dd839509768b1e25654d1b28c2eccd4
MD5 c6fdba69f9af5fda290767099674c931
BLAKE2b-256 58fd29530d0c8d6b7f263b4faf945b04d57d8a58f6d600a0f008cfd60a23f8b4

See more details on using hashes here.

File details

Details for the file eventsourcing_umadb-0.3.1-py3-none-any.whl.

File metadata

File hashes

Hashes for eventsourcing_umadb-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b9ba51dfaa44ee5ca990ae12fbfd7e3682da3b186e3abcf67f0ff2fed5f5f88e
MD5 ab55741b9144bacc87bef05e548c1087
BLAKE2b-256 20d1fe3b67e208c306545644cc1a082579732b3c96095769474e004af5e432aa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page