Files
chia-blockchain/chia/plot_sync/delta.py
T
dustinfaceandGitHub 3e3dafb0ef farmer: Improve logging in plot_sync.{receiver|delta} (#11474)
* Add the `node_id` to the logs in `Receiver`

* Log all processed messages

* Log reset calls

* Improve `reciever.Sync` and `delta.Delta` logging
2022-05-24 16:21:56 -07:00

60 lines
1.8 KiB
Python

from dataclasses import dataclass, field
from typing import Dict, List, Union
from chia.protocols.harvester_protocol import Plot
@dataclass
class DeltaType:
additions: Union[Dict[str, Plot], List[str]]
removals: List[str]
def __str__(self) -> str:
return f"+{len(self.additions)}/-{len(self.removals)}"
def clear(self) -> None:
self.additions.clear()
self.removals.clear()
def empty(self) -> bool:
return len(self.additions) == 0 and len(self.removals) == 0
@dataclass
class PlotListDelta(DeltaType):
additions: Dict[str, Plot] = field(default_factory=dict)
removals: List[str] = field(default_factory=list)
@dataclass
class PathListDelta(DeltaType):
additions: List[str] = field(default_factory=list)
removals: List[str] = field(default_factory=list)
@staticmethod
def from_lists(old: List[str], new: List[str]) -> "PathListDelta":
return PathListDelta([x for x in new if x not in old], [x for x in old if x not in new])
@dataclass
class Delta:
valid: PlotListDelta = field(default_factory=PlotListDelta)
invalid: PathListDelta = field(default_factory=PathListDelta)
keys_missing: PathListDelta = field(default_factory=PathListDelta)
duplicates: PathListDelta = field(default_factory=PathListDelta)
def empty(self) -> bool:
return self.valid.empty() and self.invalid.empty() and self.keys_missing.empty() and self.duplicates.empty()
def __str__(self) -> str:
return (
f"[valid {self.valid}, invalid {self.invalid}, keys missing: {self.keys_missing}, "
f"duplicates: {self.duplicates}]"
)
def clear(self) -> None:
self.valid.clear()
self.invalid.clear()
self.keys_missing.clear()
self.duplicates.clear()