This commit is contained in:
didier amyot committed 2023-12-01 13:18:27 -05:00
1 parent eace153f2d
commit 2faa94ec14
10 files changed
+320

No files matched your search

+40
View File
@@ -0,0 +1,40 @@
import json
from pathlib import Path
class Reader:
def read_lines(self) -> list[str]:
raise Exception("not yet implemented")
class FileReader(Reader):
def __init__(self, path: Path|str):
self._path = Path(path)
def read(self) -> str:
return self._path.read_text('utf-8')
def read_lines(self) -> list[str]:
return [l for l in self.read().split('\n') if l.strip()]
class User:
def __init__(self, name: str):
self.name = name
@classmethod
def from_json(cls, blob) -> 'User' | None:
if 'name' not in blob:
return
return cls(blob['name'])
class UserLoader:
def __init__(self, reader: Reader):
self._file_reader = reader
def get_users(self) -> list[User]:
ret = [User.from_json(json.loads(line)) for line in self._file_reader.read_lines()]
return [r for r in ret if r is not None]