Skip to content

Commit 43d4a12

Browse files
committed
ref(entities): split
1 parent 1980735 commit 43d4a12

File tree

23 files changed

+526
-634
lines changed

23 files changed

+526
-634
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ lines-after-imports = 2
7676
"src/tgdb/entities/*" = ["PLR2004"]
7777
"src/tgdb/application/*" = ["PLR0917"]
7878
"src/tgdb/infrastructure/adapters/*" = ["RUF029"]
79-
"src/tgdb/entities/transaction.py" = ["SLF001"]
79+
"src/tgdb/entities/horizon/transaction.py" = ["SLF001"]
8080
"tests/*" = ["PLR0124", "PLR0917", "S106", "C901", "PLR2004"]
8181
"__init__.py" = ["PLC0414"]
8282

src/tgdb/entities/entity.py

Lines changed: 0 additions & 171 deletions
This file was deleted.

src/tgdb/entities/horizon/__init__.py

Whitespace-only changes.
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
from collections.abc import Sequence, Set
2+
from dataclasses import dataclass
3+
from uuid import UUID
4+
5+
from tgdb.entities.topic.partition import PartitionTuple, PartitionTupleID
6+
7+
8+
@dataclass(frozen=True)
9+
class ViewedTuple:
10+
id: PartitionTupleID
11+
12+
def __and__(self, effect: "TupleEffect") -> "TupleEffect":
13+
return effect
14+
15+
16+
@dataclass(frozen=True)
17+
class NewTuple:
18+
tuple: PartitionTuple
19+
20+
def __and__(self, effect: "TupleEffect") -> "TupleEffect":
21+
match effect:
22+
case ViewedTuple():
23+
return self
24+
case MutatedTuple(tuple):
25+
return NewTuple(tuple)
26+
case NewTuple() | DeletedTuple():
27+
return effect
28+
29+
@property
30+
def id(self) -> PartitionTupleID:
31+
return self.tuple.id
32+
33+
34+
@dataclass(frozen=True)
35+
class MutatedTuple:
36+
tuple: PartitionTuple
37+
38+
def __and__(self, effect: "TupleEffect") -> "TupleEffect":
39+
match effect:
40+
case ViewedTuple():
41+
return self
42+
case NewTuple(tuple):
43+
return MutatedTuple(tuple)
44+
case MutatedTuple() | DeletedTuple():
45+
return effect
46+
47+
@property
48+
def id(self) -> PartitionTupleID:
49+
return self.tuple.id
50+
51+
52+
@dataclass(frozen=True)
53+
class DeletedTuple:
54+
id: PartitionTupleID
55+
56+
def __and__(self, effect: "TupleEffect") -> "TupleEffect":
57+
match effect:
58+
case ViewedTuple() | MutatedTuple() | DeletedTuple():
59+
return self
60+
case NewTuple(tuple):
61+
return MutatedTuple(tuple)
62+
63+
64+
type TupleEffect = NewTuple | ViewedTuple | MutatedTuple | DeletedTuple
65+
66+
67+
@dataclass(frozen=True)
68+
class Claim:
69+
id: UUID
70+
object: str
71+
72+
73+
type ConflictableTransactionScalarEffect = TupleEffect | Claim
74+
type ConflictableTransactionEffect = Sequence[TupleEffect | Claim]
75+
76+
type TransactionScalarEffect = NewTuple | MutatedTuple | DeletedTuple
77+
type TransactionEffect = Set[TransactionScalarEffect]
Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,15 @@
33
from dataclasses import dataclass
44
from uuid import UUID
55

6-
from tgdb.entities.assert_ import not_none
7-
from tgdb.entities.logic_time import LogicTime, age
8-
from tgdb.entities.operator import (
6+
from tgdb.entities.horizon.operator import (
97
AppliedOperator,
108
CommitOperator,
119
IntermediateOperator,
1210
Operator,
1311
RollbackOperator,
1412
StartOperator,
1513
)
16-
from tgdb.entities.transaction import (
14+
from tgdb.entities.horizon.transaction import (
1715
NoTransaction,
1816
Transaction,
1917
TransactionCommit,
@@ -22,42 +20,44 @@
2220
TransactionState,
2321
start_transaction,
2422
)
23+
from tgdb.entities.time.logic_time import LogicTime, age
24+
from tgdb.entities.tools.assert_ import not_none
2525

2626

2727
class NonLinearizedOperatorError(Exception): ...
2828

2929

30-
class UnlimitedTransactionHorizonError(Exception): ...
30+
class UnlimitedHorizonError(Exception): ...
3131

3232

33-
class UnattainableTransactionHorizonError(Exception): ...
33+
class UnattainableHorizonError(Exception): ...
3434

3535

3636
class UselessMaxHeightError(Exception): ...
3737

3838

3939
@dataclass
40-
class TransactionHorizon:
40+
class Horizon:
4141
_max_width: LogicTime | None
4242
_max_height: int | None
4343
_time: LogicTime | None
4444
_active_transaction_by_id: OrderedDict[UUID, Transaction]
4545

4646
def __post_init__(self) -> None:
4747
"""
48-
:raises tgdb.entities.transaction_horizon.UnlimitedTransactionHorizonError:
49-
:raises tgdb.entities.transaction_horizon.UnattainableTransactionHorizonError:
50-
:raises tgdb.entities.transaction_horizon.UselessMaxHeightError:
51-
""" # noqa: E501
48+
:raises tgdb.entities.horizon.horizon.UnlimitedHorizonError:
49+
:raises tgdb.entities.horizon.horizon.UnattainableHorizonError:
50+
:raises tgdb.entities.horizon.horizon.UselessMaxHeightError:
51+
"""
5252

5353
if self._max_width is None and self._max_height is None:
54-
raise UnlimitedTransactionHorizonError
54+
raise UnlimitedHorizonError
5555

5656
if self._max_width is not None and self._max_width <= 0:
57-
raise UnattainableTransactionHorizonError
57+
raise UnattainableHorizonError
5858

5959
if self._max_height is not None and self._max_height <= 0:
60-
raise UnattainableTransactionHorizonError
60+
raise UnattainableHorizonError
6161

6262
if (
6363
self._max_height is not None and self._max_width is not None
@@ -107,7 +107,7 @@ def add(
107107
self, applied_operator: AppliedOperator
108108
) -> TransactionPreparedCommit | None:
109109
"""
110-
:raises tgdb.entities.transaction_horizon.NonLinearizedOperatorError:
110+
:raises tgdb.entities.horizon.horizon.NonLinearizedOperatorError:
111111
"""
112112

113113
if self._time is not None and applied_operator.time <= self._time:
@@ -138,15 +138,15 @@ def _add_operator(
138138
Transaction(),
139139
TransactionState.active
140140
):
141-
transaction.add_effect(effect)
141+
transaction.include(effect)
142142

143143
case (
144144
CommitOperator(_, intermediate_operators),
145145
Transaction(),
146146
TransactionState.active
147147
):
148148
for intermediate_operator in intermediate_operators:
149-
transaction.add_effect(intermediate_operator.effect)
149+
transaction.include(intermediate_operator.effect)
150150

151151
return transaction.prepare_commit()
152152

@@ -191,17 +191,17 @@ def _oldest_transaction(self) -> Transaction | None:
191191
return None
192192

193193

194-
def create_transaction_horizon(
194+
def create_horizon(
195195
max_width: LogicTime | None,
196196
max_height: int | None,
197-
) -> TransactionHorizon:
197+
) -> Horizon:
198+
"""
199+
:raises tgdb.entities.horizon.horizon.UnlimitedHorizonError:
200+
:raises tgdb.entities.horizon.horizon.UnattainableHorizonError:
201+
:raises tgdb.entities.horizon.horizon.UselessMaxHeightError:
198202
"""
199-
:raises tgdb.entities.transaction_horizon.UnlimitedTransactionHorizonError:
200-
:raises tgdb.entities.transaction_horizon.UnattainableTransactionHorizonError:
201-
:raises tgdb.entities.transaction_horizon.UselessMaxHeightError:
202-
""" # noqa: E501
203203

204-
return TransactionHorizon(
204+
return Horizon(
205205
_max_width=max_width,
206206
_max_height=max_height,
207207
_time=None,

0 commit comments

Comments
 (0)