|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import abc |
|
|
|
|
|
class File(metaclass=abc.ABCMeta): |
|
def __init__(self, id: str, filename: str, created_at: int) -> None: |
|
super().__init__() |
|
self.id = id |
|
self.filename = filename |
|
self.created_at = created_at |
|
|
|
def __eq__(self, other: object) -> bool: |
|
if isinstance(other, File): |
|
return self.id == other.id |
|
else: |
|
return False |
|
|
|
def __repr__(self) -> str: |
|
attrs_str = self._get_attrs_str() |
|
return f"<{self.__class__.__name__} {attrs_str}>" |
|
|
|
@abc.abstractmethod |
|
async def read_contents(self) -> bytes: |
|
raise NotImplementedError |
|
|
|
def _get_attrs_str(self) -> str: |
|
return ", ".join( |
|
[ |
|
f"id: {repr(self.id)}", |
|
f"filename: {repr(self.filename)}", |
|
f"created_at: {repr(self.created_at)}", |
|
] |
|
) |
|
|