Skip to main content

Event Sourcing library using python

Project description

Event Sourcing with Python

Libray for python developers to help use of Event Sourcing Architecture for the persistence layer

Installation

This library is published in pypi, so you can install with pip:

pip install evsrc

Usage

The library has two main interfaces to implement at its application layer:

  • Aggregate: Every change in the aggregate is done by one event (ChangeEvent) and can notify it to any external observer.
  • ChangeEvent: The events shall implement a method apply_on where the argument is the aggregate and changes the state of it. It is recommended to be inside the class (yes, python allows that).

The persistence has been modeled as files in file systems. The events and snapshots of aggregates are stored as files. For this purpose, the developer should implement these interfaces or ports:

  • FileSystem: The units of storage are files (or file-like). This interface not only can be implemented with a operating system filesystem, but azure storage, amazon s3, redis,...
  • AggregateParser: Encode to bytes lists of aggregates and the inverse function(decode). It is recommended one by aggregate type.
  • EventBatchParser: Encode to bytes lists of EventRecords and the inverse function(decode). It is recommended one by aggregate type.

There are some apapters for the ports already implemented and available to developer:

  • InMemFileSystem: implementation in memory, useless unless you'll want quick integration tests.
  • PickleAggregateParser, PickleEventBatchParser: The parsing use pickle library to encoding and decoding bytes. Very easy!!!
  • JsonAggregateParser, JsonEventBatchParser: The parsing use json library to encoding and decoding bytes. Very important the concept of JDict which is a dict with string as keys and only jsonable tokens(bool, str, int, float, lists, jdict). It needs to embed

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

evsrc-4.0.6.tar.gz (41.4 kB view details)

Uploaded Source

Built Distribution

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

evsrc-4.0.6-py3-none-any.whl (5.6 kB view details)

Uploaded Python 3

File details

Details for the file evsrc-4.0.6.tar.gz.

File metadata

  • Download URL: evsrc-4.0.6.tar.gz
  • Upload date:
  • Size: 41.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for evsrc-4.0.6.tar.gz
Algorithm Hash digest
SHA256 cc91ae848bb268ad0b6078744b1279f6225196a5457251536570eab9f39b0495
MD5 db270c6d99cd61798ae5b304763c20d0
BLAKE2b-256 dbbb15470d8046710dfe2602a807797e8eb5c3425bf723c0b676cad9fde4620c

See more details on using hashes here.

File details

Details for the file evsrc-4.0.6-py3-none-any.whl.

File metadata

  • Download URL: evsrc-4.0.6-py3-none-any.whl
  • Upload date:
  • Size: 5.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for evsrc-4.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 11b6e230e936cd06281c40ae54a1e7f04d0dedeb0125f99f810371bd9c4f74b1
MD5 28811e08bc65e469eac5bedaf0445b63
BLAKE2b-256 dcc65f37b4fe9c5d7558b743d1c2c7438faf047dc7c80272657918cb8c185fe2

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