python-event-sourcery 0.4.0a6__tar.gz → 0.4.0a8__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/PKG-INFO +1 -1
  2. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/event/serde.py +9 -1
  3. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/event_store.py +13 -24
  4. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/pyproject.toml +5 -3
  5. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/LICENSE +0 -0
  6. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/__init__.py +0 -0
  7. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/aggregate/__init__.py +0 -0
  8. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/aggregate/aggregate.py +0 -0
  9. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/aggregate/repository.py +0 -0
  10. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/__init__.py +0 -0
  11. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/dispatcher.py +0 -0
  12. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/event/__init__.py +0 -0
  13. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/event/dto.py +0 -0
  14. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/event/registry.py +0 -0
  15. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/exceptions.py +0 -0
  16. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/factory.py +0 -0
  17. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/in_memory.py +0 -0
  18. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/interfaces.py +0 -0
  19. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/outbox.py +0 -0
  20. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/stream_id.py +0 -0
  21. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/subscription.py +0 -0
  22. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/event_store/versioning.py +0 -0
  23. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/py.typed +0 -0
  24. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/read_model/__init__.py +0 -0
  25. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/read_model/cursors_dao.py +0 -0
  26. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery/read_model/projector.py +0 -0
  27. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_esdb/__init__.py +0 -0
  28. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_esdb/dto.py +0 -0
  29. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_esdb/event_store.py +0 -0
  30. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_esdb/outbox.py +0 -0
  31. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_esdb/py.typed +0 -0
  32. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_esdb/stream.py +0 -0
  33. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_esdb/subscription.py +0 -0
  34. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_sqlalchemy/__init__.py +0 -0
  35. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_sqlalchemy/cursors_dao.py +0 -0
  36. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_sqlalchemy/dto.py +0 -0
  37. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_sqlalchemy/event_store.py +0 -0
  38. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_sqlalchemy/guid.py +0 -0
  39. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_sqlalchemy/jsonb.py +0 -0
  40. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_sqlalchemy/models.py +0 -0
  41. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_sqlalchemy/outbox.py +0 -0
  42. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_sqlalchemy/py.typed +0 -0
  43. {python_event_sourcery-0.4.0a6 → python_event_sourcery-0.4.0a8}/event_sourcery_sqlalchemy/subscription.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: python-event-sourcery
3
- Version: 0.4.0a6
3
+ Version: 0.4.0a8
4
4
  Summary:
5
5
  License: MIT
6
6
  Author: Your Name
@@ -1,4 +1,4 @@
1
- from collections.abc import Mapping
1
+ from collections.abc import Mapping, Sequence
2
2
  from dataclasses import dataclass
3
3
  from typing import cast
4
4
 
@@ -28,6 +28,9 @@ class Serde:
28
28
  event=event_type(**data),
29
29
  )
30
30
 
31
+ def deserialize_many(self, events: Sequence[RawEvent]) -> list[WrappedEvent]:
32
+ return [self.deserialize(event) for event in events]
33
+
31
34
  def deserialize_record(self, record: RecordedRaw) -> Recorded:
32
35
  return Recorded(
33
36
  wrapped_event=self.deserialize(record.entry),
@@ -50,3 +53,8 @@ class Serde:
50
53
  data=model.model_dump(mode="json"),
51
54
  context=event.context.model_dump(mode="json"),
52
55
  )
56
+
57
+ def serialize_many(
58
+ self, events: Sequence[WrappedEvent], stream_id: StreamId
59
+ ) -> list[RawEvent]:
60
+ return [self.serialize(event, stream_id) for event in events]
@@ -5,7 +5,6 @@ from typing import cast
5
5
  from event_sourcery.event_store.event import (
6
6
  Event,
7
7
  Position,
8
- RawEvent,
9
8
  Serde,
10
9
  WrappedEvent,
11
10
  )
@@ -34,11 +33,11 @@ class EventStore:
34
33
  """Loads events from a given stream.
35
34
 
36
35
  Examples:
37
- >>> load_stream(stream_id=StreamId(name="not_existing_stream"))
36
+ >>> event_store.load_stream(stream_id=StreamId(name="not_existing_stream"))
38
37
  []
39
- >>> load_stream(stream_id=StreamId(name="existing_stream"))
38
+ >>> event_store.load_stream(stream_id=StreamId(name="existing_stream"))
40
39
  [WrappedEvent(..., version=1), ..., WrappedEvent(..., version=3)]
41
- >>> load_stream(stream_id=StreamId(name="existing_stream"), start=2, stop=3)
40
+ >>> event_store.load_stream(stream_id=StreamId(name="existing_stream"), start=2, stop=3)
42
41
  [WrappedEvent(..., version=2)]
43
42
 
44
43
  Args:
@@ -50,7 +49,7 @@ class EventStore:
50
49
  A sequence of events or empty list if the stream doesn't exist.
51
50
  """
52
51
  events = self._storage_strategy.fetch_events(stream_id, start=start, stop=stop)
53
- return self._deserialize_events(events)
52
+ return self._serde.deserialize_many(events)
54
53
 
55
54
  @singledispatchmethod
56
55
  def append(
@@ -66,9 +65,9 @@ class EventStore:
66
65
  To use it, pass the expected version of the stream.
67
66
 
68
67
  Examples:
69
- >>> append(WrappedEvent(...), stream_id=StreamId())
68
+ >>> event_store.append(WrappedEvent(...), stream_id=StreamId())
70
69
  None
71
- >>> append(WrappedEvent(...), stream_id=StreamId(), expected_version=1)
70
+ >>> event_store.append(WrappedEvent(...), stream_id=StreamId(), expected_version=1)
72
71
  None
73
72
 
74
73
  Args:
@@ -136,7 +135,7 @@ class EventStore:
136
135
  self._storage_strategy.insert_events(
137
136
  stream_id=stream_id,
138
137
  versioning=versioning,
139
- events=self._serialize_events(events, stream_id),
138
+ events=self._serde.serialize_many(events, stream_id),
140
139
  )
141
140
 
142
141
  def delete_stream(self, stream_id: StreamId) -> None:
@@ -145,9 +144,9 @@ class EventStore:
145
144
  If a stream does not exist, this method does nothing.
146
145
 
147
146
  Examples:
148
- >>> delete_stream(StreamId())
147
+ >>> event_store.delete_stream(StreamId())
149
148
  None
150
- >>> delete_stream(StreamId(name="not_existing_stream"))
149
+ >>> event_store.delete_stream(StreamId(name="not_existing_stream"))
151
150
  None
152
151
 
153
152
  Args:
@@ -162,9 +161,9 @@ class EventStore:
162
161
  """Saves a snapshot of the stream.
163
162
 
164
163
  Examples:
165
- >>> save_snapshot(StreamId(), WrappedEvent(...))
164
+ >>> event_store.save_snapshot(StreamId(), WrappedEvent(...))
166
165
  None
167
- >>> save_snapshot(StreamId(name="not_existing_stream"), WrappedEvent(...))
166
+ >>> event_store.save_snapshot(StreamId(name="not_existing_stream"), WrappedEvent(...))
168
167
  None
169
168
 
170
169
  Args:
@@ -178,24 +177,14 @@ class EventStore:
178
177
  serialized = self._serde.serialize(event=snapshot, stream_id=stream_id)
179
178
  self._storage_strategy.save_snapshot(serialized)
180
179
 
181
- def _deserialize_events(self, events: list[RawEvent]) -> list[WrappedEvent]:
182
- return [self._serde.deserialize(e) for e in events]
183
-
184
- def _serialize_events(
185
- self,
186
- events: Sequence[WrappedEvent],
187
- stream_id: StreamId,
188
- ) -> list[RawEvent]:
189
- return [self._serde.serialize(event=e, stream_id=stream_id) for e in events]
190
-
191
180
  @property
192
181
  def position(self) -> Position | None:
193
182
  """Returns the current position of the event store.
194
183
 
195
184
  Examples:
196
- >>> position
185
+ >>> event_store.position
197
186
  None # nothing was saved yet
198
- >>> position
187
+ >>> event_store.position
199
188
  Position(15) # Some events were saved
200
189
 
201
190
  """
@@ -1,6 +1,9 @@
1
+ [project]
2
+ requires-python = ">=3.10"
3
+
1
4
  [tool.poetry]
2
5
  name = "python-event-sourcery"
3
- version = "0.4.0a6"
6
+ version = "0.4.0a8"
4
7
  description = ""
5
8
  authors = ["Your Name <you@example.com>"]
6
9
  license = "MIT"
@@ -70,7 +73,6 @@ exclude_lines = [
70
73
  ]
71
74
 
72
75
  [tool.mypy]
73
- python_version = "3.10"
74
76
  ignore_missing_imports = true
75
77
  disallow_untyped_defs = true
76
78
  no_implicit_optional = true
@@ -81,7 +83,6 @@ show_error_codes = true
81
83
 
82
84
  [tool.ruff]
83
85
  line-length = 88
84
- target-version = "py310"
85
86
  show-fixes = true
86
87
  exclude = ["**/migrations"]
87
88
 
@@ -105,6 +106,7 @@ select = [
105
106
  ignore = [
106
107
  "N818", # error-suffix-on-exception-name
107
108
  "PLR2004", # magic-value-comparison
109
+ "E501", # line-too-long, ruff format takes care about it
108
110
  ]
109
111
 
110
112
  [tool.ruff.lint.per-file-ignores]