eventsourcing 9.2.22__py3-none-any.whl → 9.3.0__py3-none-any.whl
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.
Potentially problematic release.
This version of eventsourcing might be problematic. Click here for more details.
- eventsourcing/__init__.py +1 -1
- eventsourcing/application.py +116 -135
- eventsourcing/cipher.py +15 -12
- eventsourcing/dispatch.py +31 -91
- eventsourcing/domain.py +220 -226
- eventsourcing/examples/__init__.py +0 -0
- eventsourcing/examples/aggregate1/__init__.py +0 -0
- eventsourcing/examples/aggregate1/application.py +27 -0
- eventsourcing/examples/aggregate1/domainmodel.py +16 -0
- eventsourcing/examples/aggregate1/test_application.py +37 -0
- eventsourcing/examples/aggregate2/__init__.py +0 -0
- eventsourcing/examples/aggregate2/application.py +27 -0
- eventsourcing/examples/aggregate2/domainmodel.py +22 -0
- eventsourcing/examples/aggregate2/test_application.py +37 -0
- eventsourcing/examples/aggregate3/__init__.py +0 -0
- eventsourcing/examples/aggregate3/application.py +27 -0
- eventsourcing/examples/aggregate3/domainmodel.py +38 -0
- eventsourcing/examples/aggregate3/test_application.py +37 -0
- eventsourcing/examples/aggregate4/__init__.py +0 -0
- eventsourcing/examples/aggregate4/application.py +27 -0
- eventsourcing/examples/aggregate4/domainmodel.py +114 -0
- eventsourcing/examples/aggregate4/test_application.py +38 -0
- eventsourcing/examples/aggregate5/__init__.py +0 -0
- eventsourcing/examples/aggregate5/application.py +27 -0
- eventsourcing/examples/aggregate5/domainmodel.py +131 -0
- eventsourcing/examples/aggregate5/test_application.py +38 -0
- eventsourcing/examples/aggregate6/__init__.py +0 -0
- eventsourcing/examples/aggregate6/application.py +30 -0
- eventsourcing/examples/aggregate6/domainmodel.py +123 -0
- eventsourcing/examples/aggregate6/test_application.py +38 -0
- eventsourcing/examples/aggregate6a/__init__.py +0 -0
- eventsourcing/examples/aggregate6a/application.py +40 -0
- eventsourcing/examples/aggregate6a/domainmodel.py +149 -0
- eventsourcing/examples/aggregate6a/test_application.py +45 -0
- eventsourcing/examples/aggregate7/__init__.py +0 -0
- eventsourcing/examples/aggregate7/application.py +48 -0
- eventsourcing/examples/aggregate7/domainmodel.py +144 -0
- eventsourcing/examples/aggregate7/persistence.py +57 -0
- eventsourcing/examples/aggregate7/test_application.py +38 -0
- eventsourcing/examples/aggregate7/test_compression_and_encryption.py +45 -0
- eventsourcing/examples/aggregate7/test_snapshotting_intervals.py +67 -0
- eventsourcing/examples/aggregate7a/__init__.py +0 -0
- eventsourcing/examples/aggregate7a/application.py +56 -0
- eventsourcing/examples/aggregate7a/domainmodel.py +170 -0
- eventsourcing/examples/aggregate7a/test_application.py +46 -0
- eventsourcing/examples/aggregate7a/test_compression_and_encryption.py +45 -0
- eventsourcing/examples/aggregate8/__init__.py +0 -0
- eventsourcing/examples/aggregate8/application.py +47 -0
- eventsourcing/examples/aggregate8/domainmodel.py +65 -0
- eventsourcing/examples/aggregate8/persistence.py +57 -0
- eventsourcing/examples/aggregate8/test_application.py +37 -0
- eventsourcing/examples/aggregate8/test_compression_and_encryption.py +44 -0
- eventsourcing/examples/aggregate8/test_snapshotting_intervals.py +38 -0
- eventsourcing/examples/bankaccounts/__init__.py +0 -0
- eventsourcing/examples/bankaccounts/application.py +70 -0
- eventsourcing/examples/bankaccounts/domainmodel.py +56 -0
- eventsourcing/examples/bankaccounts/test.py +173 -0
- eventsourcing/examples/cargoshipping/__init__.py +0 -0
- eventsourcing/examples/cargoshipping/application.py +126 -0
- eventsourcing/examples/cargoshipping/domainmodel.py +330 -0
- eventsourcing/examples/cargoshipping/interface.py +143 -0
- eventsourcing/examples/cargoshipping/test.py +231 -0
- eventsourcing/examples/contentmanagement/__init__.py +0 -0
- eventsourcing/examples/contentmanagement/application.py +118 -0
- eventsourcing/examples/contentmanagement/domainmodel.py +69 -0
- eventsourcing/examples/contentmanagement/test.py +180 -0
- eventsourcing/examples/contentmanagement/utils.py +26 -0
- eventsourcing/examples/contentmanagementsystem/__init__.py +0 -0
- eventsourcing/examples/contentmanagementsystem/application.py +54 -0
- eventsourcing/examples/contentmanagementsystem/postgres.py +17 -0
- eventsourcing/examples/contentmanagementsystem/sqlite.py +17 -0
- eventsourcing/examples/contentmanagementsystem/system.py +14 -0
- eventsourcing/examples/contentmanagementsystem/test_system.py +180 -0
- eventsourcing/examples/searchablecontent/__init__.py +0 -0
- eventsourcing/examples/searchablecontent/application.py +45 -0
- eventsourcing/examples/searchablecontent/persistence.py +23 -0
- eventsourcing/examples/searchablecontent/postgres.py +118 -0
- eventsourcing/examples/searchablecontent/sqlite.py +136 -0
- eventsourcing/examples/searchablecontent/test_application.py +110 -0
- eventsourcing/examples/searchablecontent/test_recorder.py +68 -0
- eventsourcing/examples/searchabletimestamps/__init__.py +0 -0
- eventsourcing/examples/searchabletimestamps/application.py +32 -0
- eventsourcing/examples/searchabletimestamps/persistence.py +20 -0
- eventsourcing/examples/searchabletimestamps/postgres.py +110 -0
- eventsourcing/examples/searchabletimestamps/sqlite.py +99 -0
- eventsourcing/examples/searchabletimestamps/test_searchabletimestamps.py +94 -0
- eventsourcing/examples/test_invoice.py +176 -0
- eventsourcing/examples/test_parking_lot.py +206 -0
- eventsourcing/interface.py +2 -2
- eventsourcing/persistence.py +85 -81
- eventsourcing/popo.py +30 -31
- eventsourcing/postgres.py +379 -590
- eventsourcing/sqlite.py +91 -99
- eventsourcing/system.py +52 -57
- eventsourcing/tests/application.py +20 -32
- eventsourcing/tests/application_tests/__init__.py +0 -0
- eventsourcing/tests/application_tests/test_application_with_automatic_snapshotting.py +55 -0
- eventsourcing/tests/application_tests/test_application_with_popo.py +22 -0
- eventsourcing/tests/application_tests/test_application_with_postgres.py +75 -0
- eventsourcing/tests/application_tests/test_application_with_sqlite.py +72 -0
- eventsourcing/tests/application_tests/test_cache.py +134 -0
- eventsourcing/tests/application_tests/test_event_sourced_log.py +162 -0
- eventsourcing/tests/application_tests/test_notificationlog.py +232 -0
- eventsourcing/tests/application_tests/test_notificationlogreader.py +126 -0
- eventsourcing/tests/application_tests/test_processapplication.py +110 -0
- eventsourcing/tests/application_tests/test_processingpolicy.py +109 -0
- eventsourcing/tests/application_tests/test_repository.py +504 -0
- eventsourcing/tests/application_tests/test_snapshotting.py +68 -0
- eventsourcing/tests/application_tests/test_upcasting.py +459 -0
- eventsourcing/tests/docs_tests/__init__.py +0 -0
- eventsourcing/tests/docs_tests/test_docs.py +293 -0
- eventsourcing/tests/domain.py +1 -1
- eventsourcing/tests/domain_tests/__init__.py +0 -0
- eventsourcing/tests/domain_tests/test_aggregate.py +1180 -0
- eventsourcing/tests/domain_tests/test_aggregate_decorators.py +1604 -0
- eventsourcing/tests/domain_tests/test_domainevent.py +80 -0
- eventsourcing/tests/interface_tests/__init__.py +0 -0
- eventsourcing/tests/interface_tests/test_remotenotificationlog.py +258 -0
- eventsourcing/tests/persistence.py +52 -50
- eventsourcing/tests/persistence_tests/__init__.py +0 -0
- eventsourcing/tests/persistence_tests/test_aes.py +93 -0
- eventsourcing/tests/persistence_tests/test_connection_pool.py +722 -0
- eventsourcing/tests/persistence_tests/test_eventstore.py +72 -0
- eventsourcing/tests/persistence_tests/test_infrastructure_factory.py +21 -0
- eventsourcing/tests/persistence_tests/test_mapper.py +113 -0
- eventsourcing/tests/persistence_tests/test_noninterleaving_notification_ids.py +69 -0
- eventsourcing/tests/persistence_tests/test_popo.py +124 -0
- eventsourcing/tests/persistence_tests/test_postgres.py +1119 -0
- eventsourcing/tests/persistence_tests/test_sqlite.py +348 -0
- eventsourcing/tests/persistence_tests/test_transcoder.py +44 -0
- eventsourcing/tests/postgres_utils.py +7 -7
- eventsourcing/tests/system_tests/__init__.py +0 -0
- eventsourcing/tests/system_tests/test_runner.py +935 -0
- eventsourcing/tests/system_tests/test_system.py +284 -0
- eventsourcing/tests/utils_tests/__init__.py +0 -0
- eventsourcing/tests/utils_tests/test_utils.py +226 -0
- eventsourcing/utils.py +47 -50
- {eventsourcing-9.2.22.dist-info → eventsourcing-9.3.0.dist-info}/METADATA +29 -79
- eventsourcing-9.3.0.dist-info/RECORD +145 -0
- {eventsourcing-9.2.22.dist-info → eventsourcing-9.3.0.dist-info}/WHEEL +1 -2
- eventsourcing-9.2.22.dist-info/RECORD +0 -25
- eventsourcing-9.2.22.dist-info/top_level.txt +0 -1
- {eventsourcing-9.2.22.dist-info → eventsourcing-9.3.0.dist-info}/AUTHORS +0 -0
- {eventsourcing-9.2.22.dist-info → eventsourcing-9.3.0.dist-info}/LICENSE +0 -0
eventsourcing/utils.py
CHANGED
|
@@ -7,23 +7,24 @@ from inspect import isfunction
|
|
|
7
7
|
from random import random
|
|
8
8
|
from threading import Lock
|
|
9
9
|
from time import sleep
|
|
10
|
-
from types import FunctionType, WrapperDescriptorType
|
|
11
10
|
from typing import (
|
|
11
|
+
TYPE_CHECKING,
|
|
12
12
|
Any,
|
|
13
13
|
Callable,
|
|
14
14
|
Dict,
|
|
15
15
|
Iterator,
|
|
16
16
|
List,
|
|
17
17
|
Mapping,
|
|
18
|
-
Optional,
|
|
19
18
|
Sequence,
|
|
20
19
|
Type,
|
|
21
20
|
TypeVar,
|
|
22
|
-
Union,
|
|
23
21
|
no_type_check,
|
|
24
22
|
overload,
|
|
25
23
|
)
|
|
26
24
|
|
|
25
|
+
if TYPE_CHECKING: # pragma: nocover
|
|
26
|
+
from types import FunctionType, WrapperDescriptorType
|
|
27
|
+
|
|
27
28
|
|
|
28
29
|
class TopicError(Exception):
|
|
29
30
|
"""
|
|
@@ -98,12 +99,12 @@ def resolve_topic(topic: str) -> Any:
|
|
|
98
99
|
msg = f"Failed to resolve topic '{topic}': {e}"
|
|
99
100
|
raise TopicError(msg) from e
|
|
100
101
|
if attr_name:
|
|
101
|
-
|
|
102
|
-
|
|
102
|
+
try:
|
|
103
|
+
for attr_name_part in attr_name.split("."):
|
|
103
104
|
obj = getattr(obj, attr_name_part)
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
except AttributeError as e:
|
|
106
|
+
msg = f"Failed to resolve topic '{topic}': {e}"
|
|
107
|
+
raise TopicError(msg) from e
|
|
107
108
|
register_topic(topic, obj)
|
|
108
109
|
return obj
|
|
109
110
|
|
|
@@ -125,10 +126,11 @@ def register_topic(topic: str, obj: Any) -> None:
|
|
|
125
126
|
_topic_cache[topic] = obj
|
|
126
127
|
else:
|
|
127
128
|
if cached_obj != obj:
|
|
128
|
-
|
|
129
|
+
msg = (
|
|
129
130
|
f"Object {cached_obj} is already registered "
|
|
130
131
|
f"for topic '{topic}', so refusing to cache obj {obj}"
|
|
131
132
|
)
|
|
133
|
+
raise TopicError(msg)
|
|
132
134
|
|
|
133
135
|
|
|
134
136
|
def clear_topic_cache() -> None:
|
|
@@ -136,7 +138,7 @@ def clear_topic_cache() -> None:
|
|
|
136
138
|
|
|
137
139
|
|
|
138
140
|
def retry(
|
|
139
|
-
exc:
|
|
141
|
+
exc: Type[Exception] | Sequence[Type[Exception]] = Exception,
|
|
140
142
|
max_attempts: int = 1,
|
|
141
143
|
wait: float = 0,
|
|
142
144
|
stall: float = 0,
|
|
@@ -148,7 +150,6 @@ def retry(
|
|
|
148
150
|
:param max_attempts: Maximum number of attempts to try.
|
|
149
151
|
:param wait: Amount of time to wait before retrying after an exception.
|
|
150
152
|
:param stall: Amount of time to wait before the first attempt.
|
|
151
|
-
:param verbose: If True, prints a message to STDOUT when retries occur.
|
|
152
153
|
:return: Returns the value returned by decorated function.
|
|
153
154
|
"""
|
|
154
155
|
|
|
@@ -162,13 +163,13 @@ def retry(
|
|
|
162
163
|
while True:
|
|
163
164
|
try:
|
|
164
165
|
return func(*args, **kwargs)
|
|
165
|
-
except exc
|
|
166
|
+
except exc: # noqa: PERF203
|
|
166
167
|
attempts += 1
|
|
167
168
|
if max_attempts is None or attempts < max_attempts:
|
|
168
|
-
sleep(wait * (1 + 0.1 * (random() - 0.5)))
|
|
169
|
+
sleep(wait * (1 + 0.1 * (random() - 0.5))) # noqa: S311
|
|
169
170
|
else:
|
|
170
171
|
# Max retries exceeded.
|
|
171
|
-
raise
|
|
172
|
+
raise
|
|
172
173
|
|
|
173
174
|
return retry_decorator
|
|
174
175
|
|
|
@@ -181,23 +182,26 @@ def retry(
|
|
|
181
182
|
exc = Exception
|
|
182
183
|
# Wrap and return.
|
|
183
184
|
return _retry(func=_func)
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
185
|
+
# Check decorator args, and return _retry,
|
|
186
|
+
# to be called with the decorated function.
|
|
187
|
+
if isinstance(exc, (list, tuple)):
|
|
188
|
+
for _exc in exc:
|
|
189
|
+
if not (isinstance(_exc, type) and issubclass(_exc, Exception)):
|
|
190
|
+
msg = f"not an exception class: {_exc}"
|
|
191
|
+
raise TypeError(msg)
|
|
192
|
+
elif not (isinstance(exc, type) and issubclass(exc, Exception)):
|
|
193
|
+
msg = f"not an exception class: {exc}"
|
|
194
|
+
raise TypeError(msg)
|
|
195
|
+
if not isinstance(max_attempts, int):
|
|
196
|
+
msg = f"'max_attempts' must be an int: {max_attempts}"
|
|
197
|
+
raise TypeError(msg)
|
|
198
|
+
if not isinstance(wait, (float, int)):
|
|
199
|
+
msg = f"'wait' must be a float: {max_attempts}"
|
|
200
|
+
raise TypeError(msg)
|
|
201
|
+
if not isinstance(stall, (float, int)):
|
|
202
|
+
msg = f"'stall' must be a float: {max_attempts}"
|
|
203
|
+
raise TypeError(msg)
|
|
204
|
+
return _retry
|
|
201
205
|
|
|
202
206
|
|
|
203
207
|
def strtobool(val: str) -> bool:
|
|
@@ -208,28 +212,25 @@ def strtobool(val: str) -> bool:
|
|
|
208
212
|
'val' is anything else.
|
|
209
213
|
"""
|
|
210
214
|
if not isinstance(val, str):
|
|
211
|
-
|
|
215
|
+
msg = f"{val} is not a str"
|
|
216
|
+
raise TypeError(msg)
|
|
212
217
|
val = val.lower()
|
|
213
218
|
if val in ("y", "yes", "t", "true", "on", "1"):
|
|
214
219
|
return True
|
|
215
|
-
|
|
220
|
+
if val in ("n", "no", "f", "false", "off", "0"):
|
|
216
221
|
return False
|
|
217
|
-
|
|
218
|
-
|
|
222
|
+
msg = f"invalid truth value {val!r}"
|
|
223
|
+
raise ValueError(msg)
|
|
219
224
|
|
|
220
225
|
|
|
221
226
|
def reversed_keys(d: Dict[Any, Any]) -> Iterator[Any]:
|
|
222
|
-
|
|
223
|
-
return reversed(d.keys())
|
|
224
|
-
else: # pragma: no cover
|
|
225
|
-
return reversed(list(d.keys()))
|
|
227
|
+
return reversed(d.keys())
|
|
226
228
|
|
|
227
229
|
|
|
228
|
-
def get_method_name(method:
|
|
230
|
+
def get_method_name(method: FunctionType | WrapperDescriptorType) -> str:
|
|
229
231
|
if sys.version_info >= (3, 10): # pragma: no cover
|
|
230
232
|
return method.__qualname__
|
|
231
|
-
|
|
232
|
-
return method.__name__
|
|
233
|
+
return method.__name__ # pragma: no cover
|
|
233
234
|
|
|
234
235
|
|
|
235
236
|
EnvType = Mapping[str, str]
|
|
@@ -237,21 +238,17 @@ T = TypeVar("T")
|
|
|
237
238
|
|
|
238
239
|
|
|
239
240
|
class Environment(Dict[str, str]):
|
|
240
|
-
def __init__(self, name: str = "", env:
|
|
241
|
+
def __init__(self, name: str = "", env: EnvType | None = None):
|
|
241
242
|
super().__init__(env or {})
|
|
242
243
|
self.name = name
|
|
243
244
|
|
|
244
245
|
@overload
|
|
245
|
-
def get(self, key: str) ->
|
|
246
|
-
... # pragma: no cover
|
|
246
|
+
def get(self, key: str) -> str | None: ... # pragma: no cover
|
|
247
247
|
|
|
248
248
|
@overload
|
|
249
|
-
def get(self, key: str, default:
|
|
250
|
-
... # pragma: no cover
|
|
249
|
+
def get(self, key: str, default: str | T) -> str | T: ... # pragma: no cover
|
|
251
250
|
|
|
252
|
-
def get(
|
|
253
|
-
self, key: str, default: Optional[Union[str, T]] = None
|
|
254
|
-
) -> Optional[Union[str, T]]:
|
|
251
|
+
def get(self, key: str, default: str | T | None = None) -> str | T | None:
|
|
255
252
|
for _key in self.create_keys(key):
|
|
256
253
|
value = super().get(_key, None)
|
|
257
254
|
if value is not None:
|
|
@@ -1,104 +1,53 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: eventsourcing
|
|
3
|
-
Version: 9.
|
|
3
|
+
Version: 9.3.0
|
|
4
4
|
Summary: Event sourcing in Python
|
|
5
5
|
Home-page: https://github.com/pyeventsourcing/eventsourcing
|
|
6
|
+
License: BSD 3-Clause
|
|
7
|
+
Keywords: event sourcing,event store,domain driven design,domain-driven design,ddd,cqrs,cqs
|
|
6
8
|
Author: John Bywater
|
|
7
9
|
Author-email: john.bywater@appropriatesoftware.net
|
|
8
|
-
|
|
9
|
-
Keywords: event sourcing,event store,domain driven design,domain-driven design,ddd,cqrs,cqs
|
|
10
|
+
Requires-Python: >=3.8,<4.0
|
|
10
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
11
12
|
Classifier: Intended Audience :: Developers
|
|
12
13
|
Classifier: Intended Audience :: Education
|
|
13
14
|
Classifier: Intended Audience :: Science/Research
|
|
14
15
|
Classifier: License :: OSI Approved :: BSD License
|
|
16
|
+
Classifier: License :: Other/Proprietary License
|
|
15
17
|
Classifier: Operating System :: OS Independent
|
|
16
18
|
Classifier: Programming Language :: Python
|
|
17
|
-
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
20
|
Classifier: Programming Language :: Python :: 3.8
|
|
19
21
|
Classifier: Programming Language :: Python :: 3.9
|
|
20
22
|
Classifier: Programming Language :: Python :: 3.10
|
|
21
23
|
Classifier: Programming Language :: Python :: 3.11
|
|
22
24
|
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
-
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
24
25
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
25
|
-
Requires-Python: >=3.7
|
|
26
|
-
Description-Content-Type: text/markdown
|
|
27
|
-
License-File: LICENSE
|
|
28
|
-
License-File: AUTHORS
|
|
29
|
-
Requires-Dist: typing-extensions ; python_version < "3.8"
|
|
30
26
|
Provides-Extra: crypto
|
|
31
|
-
Requires-Dist: pycryptodome (<=3.16.99999) ; extra == 'crypto'
|
|
32
|
-
Provides-Extra: dev
|
|
33
|
-
Requires-Dist: psycopg2-binary (<=2.9.99999) ; extra == 'dev'
|
|
34
|
-
Requires-Dist: pycryptodome (<=3.16.99999) ; extra == 'dev'
|
|
35
|
-
Requires-Dist: Sphinx (==4.2.0) ; extra == 'dev'
|
|
36
|
-
Requires-Dist: docutils (==0.17.1) ; extra == 'dev'
|
|
37
|
-
Requires-Dist: sphinx-rtd-theme (==1.3.0) ; extra == 'dev'
|
|
38
|
-
Requires-Dist: sphinxcontrib-applehelp (==1.0.2) ; extra == 'dev'
|
|
39
|
-
Requires-Dist: sphinxcontrib-devhelp (==1.0.2) ; extra == 'dev'
|
|
40
|
-
Requires-Dist: sphinxcontrib-htmlhelp (==2.0.0) ; extra == 'dev'
|
|
41
|
-
Requires-Dist: sphinxcontrib-jquery (==4.1) ; extra == 'dev'
|
|
42
|
-
Requires-Dist: sphinxcontrib-qthelp (==1.0.3) ; extra == 'dev'
|
|
43
|
-
Requires-Dist: sphinxcontrib-serializinghtml (==1.1.5) ; extra == 'dev'
|
|
44
|
-
Requires-Dist: Jinja2 (==3.1.2) ; extra == 'dev'
|
|
45
|
-
Requires-Dist: Pygments (==2.16.1) ; extra == 'dev'
|
|
46
|
-
Requires-Dist: snowballstemmer (==2.2.0) ; extra == 'dev'
|
|
47
|
-
Requires-Dist: alabaster (==0.7.13) ; extra == 'dev'
|
|
48
|
-
Requires-Dist: Babel (==2.13.0) ; extra == 'dev'
|
|
49
|
-
Requires-Dist: imagesize (==1.4.1) ; extra == 'dev'
|
|
50
|
-
Requires-Dist: requests (==2.31.0) ; extra == 'dev'
|
|
51
|
-
Requires-Dist: packaging (==23.2) ; extra == 'dev'
|
|
52
|
-
Requires-Dist: MarkupSafe (==2.1.3) ; extra == 'dev'
|
|
53
|
-
Requires-Dist: charset-normalizer (==3.3.0) ; extra == 'dev'
|
|
54
|
-
Requires-Dist: idna (==3.4) ; extra == 'dev'
|
|
55
|
-
Requires-Dist: urllib3 (==2.0.7) ; extra == 'dev'
|
|
56
|
-
Requires-Dist: certifi (==2023.7.22) ; extra == 'dev'
|
|
57
|
-
Requires-Dist: pydantic (==2.4.2) ; extra == 'dev'
|
|
58
|
-
Requires-Dist: pydantic-core (==2.10.1) ; extra == 'dev'
|
|
59
|
-
Requires-Dist: annotated-types (==0.5.0) ; extra == 'dev'
|
|
60
|
-
Requires-Dist: orjson (==3.9.7) ; extra == 'dev'
|
|
61
|
-
Requires-Dist: python-coveralls ; extra == 'dev'
|
|
62
|
-
Requires-Dist: coverage ; extra == 'dev'
|
|
63
|
-
Requires-Dist: black ; extra == 'dev'
|
|
64
|
-
Requires-Dist: mypy ; extra == 'dev'
|
|
65
|
-
Requires-Dist: flake8 ; extra == 'dev'
|
|
66
|
-
Requires-Dist: flake8-bugbear ; extra == 'dev'
|
|
67
|
-
Requires-Dist: isort ; extra == 'dev'
|
|
68
|
-
Requires-Dist: backports.zoneinfo ; (python_version < "3.9") and extra == 'dev'
|
|
69
27
|
Provides-Extra: docs
|
|
70
|
-
Requires-Dist: psycopg2-binary (<=2.9.99999) ; extra == 'docs'
|
|
71
|
-
Requires-Dist: pycryptodome (<=3.16.99999) ; extra == 'docs'
|
|
72
|
-
Requires-Dist: Sphinx (==4.2.0) ; extra == 'docs'
|
|
73
|
-
Requires-Dist: docutils (==0.17.1) ; extra == 'docs'
|
|
74
|
-
Requires-Dist: sphinx-rtd-theme (==1.3.0) ; extra == 'docs'
|
|
75
|
-
Requires-Dist: sphinxcontrib-applehelp (==1.0.2) ; extra == 'docs'
|
|
76
|
-
Requires-Dist: sphinxcontrib-devhelp (==1.0.2) ; extra == 'docs'
|
|
77
|
-
Requires-Dist: sphinxcontrib-htmlhelp (==2.0.0) ; extra == 'docs'
|
|
78
|
-
Requires-Dist: sphinxcontrib-jquery (==4.1) ; extra == 'docs'
|
|
79
|
-
Requires-Dist: sphinxcontrib-qthelp (==1.0.3) ; extra == 'docs'
|
|
80
|
-
Requires-Dist: sphinxcontrib-serializinghtml (==1.1.5) ; extra == 'docs'
|
|
81
|
-
Requires-Dist: Jinja2 (==3.1.2) ; extra == 'docs'
|
|
82
|
-
Requires-Dist: Pygments (==2.16.1) ; extra == 'docs'
|
|
83
|
-
Requires-Dist: snowballstemmer (==2.2.0) ; extra == 'docs'
|
|
84
|
-
Requires-Dist: alabaster (==0.7.13) ; extra == 'docs'
|
|
85
|
-
Requires-Dist: Babel (==2.13.0) ; extra == 'docs'
|
|
86
|
-
Requires-Dist: imagesize (==1.4.1) ; extra == 'docs'
|
|
87
|
-
Requires-Dist: requests (==2.31.0) ; extra == 'docs'
|
|
88
|
-
Requires-Dist: packaging (==23.2) ; extra == 'docs'
|
|
89
|
-
Requires-Dist: MarkupSafe (==2.1.3) ; extra == 'docs'
|
|
90
|
-
Requires-Dist: charset-normalizer (==3.3.0) ; extra == 'docs'
|
|
91
|
-
Requires-Dist: idna (==3.4) ; extra == 'docs'
|
|
92
|
-
Requires-Dist: urllib3 (==2.0.7) ; extra == 'docs'
|
|
93
|
-
Requires-Dist: certifi (==2023.7.22) ; extra == 'docs'
|
|
94
|
-
Requires-Dist: pydantic (==2.4.2) ; extra == 'docs'
|
|
95
|
-
Requires-Dist: pydantic-core (==2.10.1) ; extra == 'docs'
|
|
96
|
-
Requires-Dist: annotated-types (==0.5.0) ; extra == 'docs'
|
|
97
|
-
Requires-Dist: orjson (==3.9.7) ; extra == 'docs'
|
|
98
28
|
Provides-Extra: postgres
|
|
99
|
-
Requires-Dist:
|
|
100
|
-
|
|
101
|
-
Requires-Dist:
|
|
29
|
+
Requires-Dist: Sphinx ; extra == "docs"
|
|
30
|
+
Requires-Dist: backports.zoneinfo ; python_version < "3.9"
|
|
31
|
+
Requires-Dist: orjson ; extra == "docs"
|
|
32
|
+
Requires-Dist: psycopg (<=3.2.1) ; (python_full_version <= "3.12.999999") and (extra == "postgres")
|
|
33
|
+
Requires-Dist: psycopg-c (<=3.2.1) ; (python_full_version <= "3.12.999999") and (extra == "postgres")
|
|
34
|
+
Requires-Dist: psycopg-pool (<=3.2.2) ; (python_full_version <= "3.12.999999") and (extra == "postgres")
|
|
35
|
+
Requires-Dist: pycryptodome (<=3.20.99999) ; extra == "crypto"
|
|
36
|
+
Requires-Dist: pydantic ; extra == "docs"
|
|
37
|
+
Requires-Dist: sphinx_rtd_theme ; extra == "docs"
|
|
38
|
+
Requires-Dist: typing_extensions
|
|
39
|
+
Project-URL: Repository, https://github.com/pyeventsourcing/eventsourcing
|
|
40
|
+
Description-Content-Type: text/markdown
|
|
41
|
+
|
|
42
|
+
[](https://github.com/pyeventsourcing/eventsourcing/tree/main)
|
|
43
|
+
[](https://coveralls.io/github/pyeventsourcing/eventsourcing?branch=main)
|
|
44
|
+
[](https://eventsourcing.readthedocs.io/en/stable/)
|
|
45
|
+
[](https://pypi.org/project/eventsourcing/)
|
|
46
|
+
[](https://pypistats.org/packages/eventsourcing)
|
|
47
|
+
[](https://github.com/psf/black)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# Event Sourcing in Python
|
|
102
51
|
|
|
103
52
|
A library for event sourcing in Python.
|
|
104
53
|
|
|
@@ -294,3 +243,4 @@ for this project, which you are [welcome to join](https://join.slack.com/t/event
|
|
|
294
243
|
|
|
295
244
|
Please refer to the [documentation](https://eventsourcing.readthedocs.io/) for installation and usage guides.
|
|
296
245
|
|
|
246
|
+
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
eventsourcing/__init__.py,sha256=st2H3shrhTk5rqoUeZHUW8XD9iOX9tGGtQFWr2HGYmo,26
|
|
2
|
+
eventsourcing/application.py,sha256=iXoFwffQAGkyNcpl8kMafIq59InIwd5nBGm8-qjbm24,36440
|
|
3
|
+
eventsourcing/cipher.py,sha256=NJcVfZdSlCER6xryM4zVoY3cmKstF-iSSniB4jmpaKg,3200
|
|
4
|
+
eventsourcing/compressor.py,sha256=IdvrJUB9B2td871oifInv4lGXmHwYL9d69MbHHCr7uI,421
|
|
5
|
+
eventsourcing/dispatch.py,sha256=yYSpT-jqc6l_wTdqEnfPJJfvsZN2Ta8g2anrVPWIcqQ,1412
|
|
6
|
+
eventsourcing/domain.py,sha256=rvm4Sv2MmLcha8_5wqJ13AjmqyWvuzkquYsexUaePIg,57264
|
|
7
|
+
eventsourcing/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
8
|
+
eventsourcing/examples/aggregate1/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
eventsourcing/examples/aggregate1/application.py,sha256=LPle9YoAu85EQFrp-lUk0I8DKuSdQOSUyJ__38JHSvE,766
|
|
10
|
+
eventsourcing/examples/aggregate1/domainmodel.py,sha256=Li9vLdoNu2MZnrcKR4xiOSWIG9l2ET0IteAVaG9l7OM,369
|
|
11
|
+
eventsourcing/examples/aggregate1/test_application.py,sha256=hGL4J3lsU1QgaQ0V2AQ6qe8TfK1p_cNx-xVRtkywf1A,1214
|
|
12
|
+
eventsourcing/examples/aggregate2/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
+
eventsourcing/examples/aggregate2/application.py,sha256=Q4Eyq2APXmAU8mKOEOpDOrj6IZfSthvkkrFPKSvnHb8,766
|
|
14
|
+
eventsourcing/examples/aggregate2/domainmodel.py,sha256=u98TIOwYVzG4clywsrUhGqTJeLE3v2S8t-DUUzHl-Fg,484
|
|
15
|
+
eventsourcing/examples/aggregate2/test_application.py,sha256=HwTbNVpMqFlKXBluS6fqa6dpY779SfFtTQ5VoJ7sijw,1214
|
|
16
|
+
eventsourcing/examples/aggregate3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
+
eventsourcing/examples/aggregate3/application.py,sha256=J-ISiAvZg0uOxklA3NtemtggvKaGEvDhZgbtWVnrrPU,780
|
|
18
|
+
eventsourcing/examples/aggregate3/domainmodel.py,sha256=NmSQVcsTlbRGvJy1NSUSmAwzxwUlW9gl0e9eFizi8vk,1013
|
|
19
|
+
eventsourcing/examples/aggregate3/test_application.py,sha256=QYG1L4mHvkpPV9enPvYsFdEbk4UMzZv5grH_5ejybt0,1214
|
|
20
|
+
eventsourcing/examples/aggregate4/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
+
eventsourcing/examples/aggregate4/application.py,sha256=Jq1DB6mSRsnd1XrxkAPHx7l9AfMbjG_cqx_KXILSDeY,825
|
|
22
|
+
eventsourcing/examples/aggregate4/domainmodel.py,sha256=M4d8JQ6imRR1YM3EZU1QLmz3jt9NWZyOOtdvOXBhdrk,3137
|
|
23
|
+
eventsourcing/examples/aggregate4/test_application.py,sha256=W9OtwKumB76DpYvVRmWQ4Fq-IXUqGYggNGJPHFLUYB4,1306
|
|
24
|
+
eventsourcing/examples/aggregate5/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
+
eventsourcing/examples/aggregate5/application.py,sha256=2xfv9awolKYYoBhzwRfnQ3MB749LP1gcl05PBfhvZ1c,842
|
|
26
|
+
eventsourcing/examples/aggregate5/domainmodel.py,sha256=gpEGR1VZprOCSxRtdzOc5SKgc-rVd0YqrVFtsO95Chs,3637
|
|
27
|
+
eventsourcing/examples/aggregate5/test_application.py,sha256=vTeUbBAruW510wnjc24F78gQdyE5G7yoTcAWZvDYyuA,1306
|
|
28
|
+
eventsourcing/examples/aggregate6/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
+
eventsourcing/examples/aggregate6/application.py,sha256=g-fun86hqoyJW5sDf6kwzjA45AQWaxF_MPphW5WVO-s,870
|
|
30
|
+
eventsourcing/examples/aggregate6/domainmodel.py,sha256=vMs17TCzJrFHrqJ_09YTOTru03oI-J7YGL4PR3a5EAw,2876
|
|
31
|
+
eventsourcing/examples/aggregate6/test_application.py,sha256=LdrMWj5ZV12gH3A3d8dYPHgtq9fllDJBPHZAwz3QqHs,1312
|
|
32
|
+
eventsourcing/examples/aggregate6a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
33
|
+
eventsourcing/examples/aggregate6a/application.py,sha256=KK8PjIhlMuxKmV4Gjr6tLSWk5oVZGjbiazs1BvW2Ckg,1247
|
|
34
|
+
eventsourcing/examples/aggregate6a/domainmodel.py,sha256=LaktSGm8sa4xIDyXQAyRkjH8m_HhVt3GHbQw8vfZkUQ,3627
|
|
35
|
+
eventsourcing/examples/aggregate6a/test_application.py,sha256=s8tyZqGWwLQXpD9FSEe1h5MZT3v5_zJc17Vzw133_lw,1673
|
|
36
|
+
eventsourcing/examples/aggregate7/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
37
|
+
eventsourcing/examples/aggregate7/application.py,sha256=cOJ3nYKRTOCO3gA3M-CmlR0Gu-lW8Agmq5epy5uVf90,1395
|
|
38
|
+
eventsourcing/examples/aggregate7/domainmodel.py,sha256=pImr-nOg8uR1SjfF0Ou1R19eLjrsZ9-Xpbhbkci7izk,3261
|
|
39
|
+
eventsourcing/examples/aggregate7/persistence.py,sha256=zb2yJc4iVqkOc9iGLeqLCgo1E-kRRIoBYNvOBhUOfKg,1874
|
|
40
|
+
eventsourcing/examples/aggregate7/test_application.py,sha256=tWRTrRdIL81AlEyO-j2LHTF3l-6yWqXFTOj8Dnk2Nt4,1366
|
|
41
|
+
eventsourcing/examples/aggregate7/test_compression_and_encryption.py,sha256=s9EGEdQ_m4xpt6tyPBhXeGQO9JAx1IpckjHE7vtmBbo,1634
|
|
42
|
+
eventsourcing/examples/aggregate7/test_snapshotting_intervals.py,sha256=_poDWDfHXciTgFfA2IRcR_JVonFedWcV4afaRIto5Ho,2190
|
|
43
|
+
eventsourcing/examples/aggregate7a/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
|
+
eventsourcing/examples/aggregate7a/application.py,sha256=dRa5XGu29Ka31qbSY8VBfKPekvQnzWELE6_gM2Xht-E,1748
|
|
45
|
+
eventsourcing/examples/aggregate7a/domainmodel.py,sha256=l0mdBGedAOljbSYAxVbh6Po2nbbAKp_vhVGs915MYFA,4016
|
|
46
|
+
eventsourcing/examples/aggregate7a/test_application.py,sha256=06ViRUVfIE74OLEj7N3rYmVhLO7V5sbCCaS8ozLBIH4,1741
|
|
47
|
+
eventsourcing/examples/aggregate7a/test_compression_and_encryption.py,sha256=h3pxOUMHMCUMWx36vN2pqg4Mrwry_KCpJfMYYkA64o8,1636
|
|
48
|
+
eventsourcing/examples/aggregate8/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
49
|
+
eventsourcing/examples/aggregate8/application.py,sha256=b4MQb7wFzzk29cHe8ZuVQuwFXn2kskEmLojzqO4EKsw,1357
|
|
50
|
+
eventsourcing/examples/aggregate8/domainmodel.py,sha256=Nnc62RyMy_wukqPLxnRo2vJOqxho2XVAgagWfT-Vuq0,1276
|
|
51
|
+
eventsourcing/examples/aggregate8/persistence.py,sha256=zb2yJc4iVqkOc9iGLeqLCgo1E-kRRIoBYNvOBhUOfKg,1874
|
|
52
|
+
eventsourcing/examples/aggregate8/test_application.py,sha256=tbd77pTSpUopE_CENZAt31vCZOYs8E0Ot3WnFRQrhhw,1268
|
|
53
|
+
eventsourcing/examples/aggregate8/test_compression_and_encryption.py,sha256=UWGnTSIlRu-FbXWQ0rX1YOQuDkMj9NCCssoQES23i-w,1509
|
|
54
|
+
eventsourcing/examples/aggregate8/test_snapshotting_intervals.py,sha256=w_HAY_RirHqHtSQ1Z-muqqUz75RTYYBLeFGCB8ELhbI,1261
|
|
55
|
+
eventsourcing/examples/bankaccounts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
+
eventsourcing/examples/bankaccounts/application.py,sha256=a7LQ7bw4u3uGihZdjU9fII_27Vk_F8BlsMwt45hB8HM,2286
|
|
57
|
+
eventsourcing/examples/bankaccounts/domainmodel.py,sha256=sXTOk_R6_4axwOdH4cnDgW2jhpys9eBAxOni4eMWpsI,1574
|
|
58
|
+
eventsourcing/examples/bankaccounts/test.py,sha256=r6wSbjhaX1U-faQEmblWMkdUlmR18TkjZdkutQcWJm4,5577
|
|
59
|
+
eventsourcing/examples/cargoshipping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
+
eventsourcing/examples/cargoshipping/application.py,sha256=18QdjZyZltw5SV-FfN79Rl3M_4hS336YirfDhPf8BR8,3646
|
|
61
|
+
eventsourcing/examples/cargoshipping/domainmodel.py,sha256=ezVoA1JztlsKX7XxHY5dQ39jqIVm4jXSREiO88S-__w,9638
|
|
62
|
+
eventsourcing/examples/cargoshipping/interface.py,sha256=R0oWoX8V3S9bkr8gq2DP-DR3XUO2SO9aJ4-XWmtT1jg,4846
|
|
63
|
+
eventsourcing/examples/cargoshipping/test.py,sha256=vEYp170m_fP7Du6DDE_hLOxlP4osV2ZqgqJe7J3-sOg,9649
|
|
64
|
+
eventsourcing/examples/contentmanagement/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
65
|
+
eventsourcing/examples/contentmanagement/application.py,sha256=CPk7yP2323sUYK2jofQ6stRoSSoUyCLNxGnP-osSf-Y,3918
|
|
66
|
+
eventsourcing/examples/contentmanagement/domainmodel.py,sha256=VkWAscENxH0fBALtsu8RUl4Rqb083Cx92tNV78RjtJQ,1825
|
|
67
|
+
eventsourcing/examples/contentmanagement/test.py,sha256=7IwbWK1tL7uH9x4gua53NMb-ClojvdKc9E-03LDEfQQ,6230
|
|
68
|
+
eventsourcing/examples/contentmanagement/utils.py,sha256=NOQ5nqn8HHDg3o28wQE1-nHm-9zDlWfIyWzi43fM3Sc,745
|
|
69
|
+
eventsourcing/examples/contentmanagementsystem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
+
eventsourcing/examples/contentmanagementsystem/application.py,sha256=MlBee_mnqFYL7k-U6dI_XhdjzU4UJYKwfIiWbhX6TR8,1877
|
|
71
|
+
eventsourcing/examples/contentmanagementsystem/postgres.py,sha256=FvT-I1AaQawqVwQTO73YzpM8OVHXgHhMnxGGA8j4Ew8,423
|
|
72
|
+
eventsourcing/examples/contentmanagementsystem/sqlite.py,sha256=WN3uBB4ygIXKblDgJ4GTQYkh7vVJ3uMFGPGeE0zagsw,411
|
|
73
|
+
eventsourcing/examples/contentmanagementsystem/system.py,sha256=XB6rU8qHB66AIIWTnonS6tekpSIYqX60EXFf0u9YMDE,444
|
|
74
|
+
eventsourcing/examples/contentmanagementsystem/test_system.py,sha256=OtQ5GQBCgAZeojR0RhugoXcHa0yGOdZIYpQqcVwxo8U,7581
|
|
75
|
+
eventsourcing/examples/searchablecontent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
|
+
eventsourcing/examples/searchablecontent/application.py,sha256=-TxT-5BZj0VA1PIefb0LvZr2hxIDPMN_onIudcKI7e8,1670
|
|
77
|
+
eventsourcing/examples/searchablecontent/persistence.py,sha256=PbSJLw3wZTK1UVpxqr5bNoyZzIKwAevzlRCnUyRlIsI,596
|
|
78
|
+
eventsourcing/examples/searchablecontent/postgres.py,sha256=EEskpT1I0pZmbu_8K4BZylLMjISRpF8zVCWpuDXB1Dg,3831
|
|
79
|
+
eventsourcing/examples/searchablecontent/sqlite.py,sha256=mVb7SFsSLRyPGy7db7d1eYSJ-LB4NN3u095uDnXabbo,4736
|
|
80
|
+
eventsourcing/examples/searchablecontent/test_application.py,sha256=oCL6tG2NfCl6ibsI5NlpVkxMr4-D39CxWDlQIxNoltA,3971
|
|
81
|
+
eventsourcing/examples/searchablecontent/test_recorder.py,sha256=se8qEjVxbbUzQ4sxIVLPYEVQ8_gTHYdwAKEoAFKAI6o,2329
|
|
82
|
+
eventsourcing/examples/searchabletimestamps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
|
+
eventsourcing/examples/searchabletimestamps/application.py,sha256=uFFbuzSka9WW8Ibrmomyt7djvb6xd2eaaMvgbFuDG3o,1325
|
|
84
|
+
eventsourcing/examples/searchabletimestamps/persistence.py,sha256=WxVTpOobeP0D_mCO6kLmXpEhg0iFXUdu-WyojjcqlcU,543
|
|
85
|
+
eventsourcing/examples/searchabletimestamps/postgres.py,sha256=AlDwmLGOcCW2eS6QS2rJZZJ3arENn9I0oTI45TGvLVQ,3857
|
|
86
|
+
eventsourcing/examples/searchabletimestamps/sqlite.py,sha256=Gllj5N3TMrZFVTNfMFNQ0pCDm_sQE2V-LquQOmTX1uo,3312
|
|
87
|
+
eventsourcing/examples/searchabletimestamps/test_searchabletimestamps.py,sha256=sPW15_wqPoZZ2x89cHteCRivzXXrmzEqNkZOc_Q4M-Q,3268
|
|
88
|
+
eventsourcing/examples/test_invoice.py,sha256=2T_aCMUni4o5NjoD_AsIuQ4RJ59bsQI2w6_TWMT96fM,4890
|
|
89
|
+
eventsourcing/examples/test_parking_lot.py,sha256=Tlm8KYlMoZFBi20mX-_BSAPPJfeKDgS8CZQrIWLKATQ,6682
|
|
90
|
+
eventsourcing/interface.py,sha256=KzDWLeIkREf-TAFl5AFHtKJwJFA-IthqMKClFkUFqdc,4676
|
|
91
|
+
eventsourcing/persistence.py,sha256=TJseAtsWwdC33XLvcoyHdgwTv6s6KsvQS8XLKIq472s,37672
|
|
92
|
+
eventsourcing/popo.py,sha256=AApSGneHuXa8yHOWdDfsFTMVDI-9ivEpuKTX1BSOXr8,6547
|
|
93
|
+
eventsourcing/postgres.py,sha256=ZsDw36JJbR9O3_FeYSkA_NVab7N0fg4FrmWkVN4h3Lo,29767
|
|
94
|
+
eventsourcing/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
95
|
+
eventsourcing/sqlite.py,sha256=jz7SZk26Gcsjw88KL1xnr4-1tStTW16f1NR6TjMsZnQ,18466
|
|
96
|
+
eventsourcing/system.py,sha256=Fyho27C44MckwC3OD9opw7an1Thz20QsD7PnRymnYik,45501
|
|
97
|
+
eventsourcing/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
98
|
+
eventsourcing/tests/application.py,sha256=wBanhWzAZvL3fYxCFe5cloN-Up7uLw6KcdRQ2dhKVAg,17586
|
|
99
|
+
eventsourcing/tests/application_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
100
|
+
eventsourcing/tests/application_tests/test_application_with_automatic_snapshotting.py,sha256=RI2C3TcIRmx5QXizOU2MDyaib48yJDd5aXpJMvZPIh8,1956
|
|
101
|
+
eventsourcing/tests/application_tests/test_application_with_popo.py,sha256=KytM7YJEWME8fDM9nvRPnbrdykYy9hejKbduKVqflAk,678
|
|
102
|
+
eventsourcing/tests/application_tests/test_application_with_postgres.py,sha256=hAS_wC11aYIAYijV-I5OZorycw5Xl_Z4KT4QLDAqC0o,2431
|
|
103
|
+
eventsourcing/tests/application_tests/test_application_with_sqlite.py,sha256=9g1tdU1_XJirDwo29UYYehpUBR30kgysfdAJ8LfjQWE,2059
|
|
104
|
+
eventsourcing/tests/application_tests/test_cache.py,sha256=5WG4mVnmfavL_nGk0yDWj6bS-P9fxsdJJBRK8JkOnOg,3516
|
|
105
|
+
eventsourcing/tests/application_tests/test_event_sourced_log.py,sha256=IgJ-CPhaZAxeVE2O35fGwkfIu6GzNNhX6IgakzCPZ6w,5438
|
|
106
|
+
eventsourcing/tests/application_tests/test_notificationlog.py,sha256=jsU0-4xAeRPOu2xn4qbDDIgmAarBQGjM368WdqqfTM4,9194
|
|
107
|
+
eventsourcing/tests/application_tests/test_notificationlogreader.py,sha256=OOLW4_P6Rvu-XJ636EcVkq76gNNWX7laxHImZxeyj20,4298
|
|
108
|
+
eventsourcing/tests/application_tests/test_processapplication.py,sha256=2W3uY3-qogKsEiIgi1gopYHVmE3S3EjfWeucxkXTobI,3744
|
|
109
|
+
eventsourcing/tests/application_tests/test_processingpolicy.py,sha256=ViE0OGR4TLX1FeDRPc1fO1Ts43QnLZ1Hl2UiuqPkTMc,3212
|
|
110
|
+
eventsourcing/tests/application_tests/test_repository.py,sha256=AhL_iYYSwyx7FE9dB2Tg5sjz7r_n6eiyQpQFfqQH3p0,18873
|
|
111
|
+
eventsourcing/tests/application_tests/test_snapshotting.py,sha256=gpOksEaFaFXrPpwirD8wNLinXK67r3dJedUih8171Q0,2042
|
|
112
|
+
eventsourcing/tests/application_tests/test_upcasting.py,sha256=n_Lphch_NOqgY0IJDxDcxJI1qIV50Fzu5VmHiUltirU,14355
|
|
113
|
+
eventsourcing/tests/docs_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
114
|
+
eventsourcing/tests/docs_tests/test_docs.py,sha256=bxb4xd0PNMRG9X-SeyQ6C7Tq6nAw4MgoC3FdQ3T0rsg,10871
|
|
115
|
+
eventsourcing/tests/domain.py,sha256=lHSlY6jIoSeqlcPSbrrozEPUJGvJ8bgPrznlmzTxn2w,3254
|
|
116
|
+
eventsourcing/tests/domain_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
117
|
+
eventsourcing/tests/domain_tests/test_aggregate.py,sha256=sh4j7bnL6Mx3sYoKZX-iiu39SLFaMvYqQLN2pk4ROwg,38485
|
|
118
|
+
eventsourcing/tests/domain_tests/test_aggregate_decorators.py,sha256=zky6jmqblM0GKgdhCJjYdSxtEE9MwRcemYaZhqxL1AE,50256
|
|
119
|
+
eventsourcing/tests/domain_tests/test_domainevent.py,sha256=3EGLKnla1aWfKPzMfLCNmh7UtVAztk_ne_Oi0cP7jPU,2782
|
|
120
|
+
eventsourcing/tests/interface_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
121
|
+
eventsourcing/tests/interface_tests/test_remotenotificationlog.py,sha256=TCy-XZmFbr5jcZBmAny5JhbovD-A6SrlLOQlU75bwks,9140
|
|
122
|
+
eventsourcing/tests/persistence.py,sha256=giLWEZDdViXY8_SHCJerJ0sYVbJUP3UkLKaEbel9sqs,45777
|
|
123
|
+
eventsourcing/tests/persistence_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
124
|
+
eventsourcing/tests/persistence_tests/test_aes.py,sha256=fPq5yGdPCOTNS2TWco4dWpksfI9vfUEse3-hJruEdUE,2873
|
|
125
|
+
eventsourcing/tests/persistence_tests/test_connection_pool.py,sha256=j9FKcORI5DtFWqcVHTwD1hXpPhy6Qt2rtaj79IARjnE,23641
|
|
126
|
+
eventsourcing/tests/persistence_tests/test_eventstore.py,sha256=XEWzj78F8-0MEcnHIuJoc69uJd8WWjHSyxddSRcm6Fs,2261
|
|
127
|
+
eventsourcing/tests/persistence_tests/test_infrastructure_factory.py,sha256=xcDdUiGtWJ9R5ChFNELOEnpBEzg9y1xAfw7ZmMQxFGA,730
|
|
128
|
+
eventsourcing/tests/persistence_tests/test_mapper.py,sha256=3GWdhLzFrld8-h7pPfsYdNzIn1YNTa_L6iHb-dCg5zk,3806
|
|
129
|
+
eventsourcing/tests/persistence_tests/test_noninterleaving_notification_ids.py,sha256=O8t9AT1SJ0mwrkh9hyDvQr_bpO-n3RA-PO4S9RVdzhY,2130
|
|
130
|
+
eventsourcing/tests/persistence_tests/test_popo.py,sha256=7KIb72i2VF566N14IyEhM21P7eX3o8UmOLQKkaFAH84,3366
|
|
131
|
+
eventsourcing/tests/persistence_tests/test_postgres.py,sha256=6mxPWJCAFWB0GIgVLEDXVpxY_mPVlm4ZunU22V3VvUA,41185
|
|
132
|
+
eventsourcing/tests/persistence_tests/test_sqlite.py,sha256=dABEY6r0AIjGkgbBBk6f7MgfvQz9JkXgpOPEq8xvei0,11744
|
|
133
|
+
eventsourcing/tests/persistence_tests/test_transcoder.py,sha256=IU1phRrGpyB0KzKFxivtDzDBP2Vn609nrwU52yk9YKM,1251
|
|
134
|
+
eventsourcing/tests/postgres_utils.py,sha256=xymcGYasUXeZTBenkHz-ykD8HtrFjVM1Z7-qRrH6OQk,1364
|
|
135
|
+
eventsourcing/tests/system_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
136
|
+
eventsourcing/tests/system_tests/test_runner.py,sha256=zK5YySh1QKnOybpBeGhsCWktzaC_Qc1AZU6jaePk6JU,32020
|
|
137
|
+
eventsourcing/tests/system_tests/test_system.py,sha256=IRmLBovJ5Ha4KWNVg8efM-0OVewSsGcpBO4J9SY0Ut8,9492
|
|
138
|
+
eventsourcing/tests/utils_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
139
|
+
eventsourcing/tests/utils_tests/test_utils.py,sha256=8HcTk_0_lXyoT307fEmd2utwmOUS_joToUPGFeFnKW8,6486
|
|
140
|
+
eventsourcing/utils.py,sha256=PIWDvoGiKCXsNbR5DirkoJ_svopg80SoH37bqxOcjkU,8247
|
|
141
|
+
eventsourcing-9.3.0.dist-info/AUTHORS,sha256=8aHOM4UbNZcKlD-cHpFRcM6RWyCqtwtxRev6DeUgVRs,137
|
|
142
|
+
eventsourcing-9.3.0.dist-info/LICENSE,sha256=bSE_F-T6cQPmMY5LuJC27km_pGB1XCVuUFx1uY0Nueg,1512
|
|
143
|
+
eventsourcing-9.3.0.dist-info/METADATA,sha256=U7xzgwPqDQehIwIr8Tf4YAwCcYVpHqUQYFB1YZXVIyY,10116
|
|
144
|
+
eventsourcing-9.3.0.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
145
|
+
eventsourcing-9.3.0.dist-info/RECORD,,
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
eventsourcing/__init__.py,sha256=Hpg9SdjfYItZxEUzUbD9mGUqUeUTNonU51w0c-M2cRs,23
|
|
2
|
-
eventsourcing/application.py,sha256=jfq-iXsrCPAfp328kxnRzg_5Td8LAY62SIAUFh4-X9Q,37372
|
|
3
|
-
eventsourcing/cipher.py,sha256=WlqJyaizIxtsGy9ewNhr9284b_veBANymlNTLgN50t8,3129
|
|
4
|
-
eventsourcing/compressor.py,sha256=IdvrJUB9B2td871oifInv4lGXmHwYL9d69MbHHCr7uI,421
|
|
5
|
-
eventsourcing/dispatch.py,sha256=cG9ox7PLLqOkHGLDgzhOR_-2k_1c4TXaZwcfLHdsz0c,3828
|
|
6
|
-
eventsourcing/domain.py,sha256=LdH8lxDecOnaxUg8B6VD4yUQZxnEnzESLQk9h6Uki40,57336
|
|
7
|
-
eventsourcing/interface.py,sha256=3-1qnvxwjf4miwD5d2HaMc-eFSobmpTNb9YowsL394k,4692
|
|
8
|
-
eventsourcing/persistence.py,sha256=1s-q7lb-tTvxW6NNGaegzHiLID1C-3e7mX0VyDO7sXU,37715
|
|
9
|
-
eventsourcing/popo.py,sha256=PicK5f7B7vXBt-Yb9IhyK6MKFIW_m2Eee1aPrm1OcjY,6585
|
|
10
|
-
eventsourcing/postgres.py,sha256=bxzSoR18pNjtJgYODj_Xnmzct7t1lwg9IYKJ79pSre4,36887
|
|
11
|
-
eventsourcing/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
-
eventsourcing/sqlite.py,sha256=151ZG0nUBghRntoHgS6TDBxdddzb0X-CGNyJ-7Q8Sh8,19042
|
|
13
|
-
eventsourcing/system.py,sha256=1b55dZd8V9yLn2rfQhinJy4EQHnbXj9yupZM64sIDzw,45818
|
|
14
|
-
eventsourcing/utils.py,sha256=KOajw9kWoHNj38ZloTQMzk8o51kVcqW9sOeB7qFvWkg,8487
|
|
15
|
-
eventsourcing/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
eventsourcing/tests/application.py,sha256=0X8S3BB3HAxuOKDL8HmyZlaGFTP0kWrRoK3oGNyrH98,17749
|
|
17
|
-
eventsourcing/tests/domain.py,sha256=wrxK_TOMQwBZ70nmD1vKkycN1Kr4WkEpKvYeuksl39g,3256
|
|
18
|
-
eventsourcing/tests/persistence.py,sha256=Y2ujaVF7Dn4qMMTSaKnOEdtxcKQw3R4ctll4DMCXvco,45519
|
|
19
|
-
eventsourcing/tests/postgres_utils.py,sha256=wJEE97_0j7qNNHDVKXgIJwnHOengFBVVuahm4Ad4haY,1340
|
|
20
|
-
eventsourcing-9.2.22.dist-info/AUTHORS,sha256=8aHOM4UbNZcKlD-cHpFRcM6RWyCqtwtxRev6DeUgVRs,137
|
|
21
|
-
eventsourcing-9.2.22.dist-info/LICENSE,sha256=bSE_F-T6cQPmMY5LuJC27km_pGB1XCVuUFx1uY0Nueg,1512
|
|
22
|
-
eventsourcing-9.2.22.dist-info/METADATA,sha256=H_Ff4w_1lFah2OVRaIU9PVU4XeF3UrSqH0J0tfqIIDU,12330
|
|
23
|
-
eventsourcing-9.2.22.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
|
24
|
-
eventsourcing-9.2.22.dist-info/top_level.txt,sha256=z6uyRibvRK8Kgsq-bBb2Eg1CBkoaUItlN_n9ZU40nkk,14
|
|
25
|
-
eventsourcing-9.2.22.dist-info/RECORD,,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
eventsourcing
|
|
File without changes
|
|
File without changes
|