👔 Add support for dumping and importing

This commit is contained in:
Brian Wiborg 2023-04-03 07:21:41 +02:00
parent c9ce1bd130
commit e209036d1f
No known key found for this signature in database
GPG Key ID: BE53FA9286B719D6
2 changed files with 9 additions and 3 deletions

View File

@ -1,5 +1,4 @@
# ToDos
- add support for pickling/unpickling `Voting`
- add `click` and provide a user-friendly CLI
- add `fastapi` and implement a builtin JSON/REST API server

View File

@ -8,7 +8,7 @@ from .quorum import Quorum, QuorumKind
from arrow import Arrow, get as arrow_get
from dataclasses import dataclass
from enum import Enum
from typing import Dict, List
from typing import Dict, TextIO, List
import abc
import json.tool
@ -74,10 +74,17 @@ class Voting(object):
def dumps(self) -> str:
return json.dumps(self.as_dict())
def dump(self, f: TextIO) -> None:
f.write(self.dumps())
@classmethod
def loads(cls, data: Dict):
def loads(cls, data: Dict) -> None:
return cls(**json.loads(data))
@classmethod
def load(cls, f: TextIO) -> None:
return cls.loads('\n'.join(f.readlines()))
@dataclass
class Result: