From 6bc7fc63b23a4bf89e90904d1e3ef83abdbaa966 Mon Sep 17 00:00:00 2001 From: Gergely Polonkai Date: Thu, 5 May 2022 16:31:59 +0200 Subject: [PATCH] Add an abstract base class for documents --- earthsnake/__init__.py | 1 + earthsnake/document/__init__.py | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 earthsnake/document/__init__.py diff --git a/earthsnake/__init__.py b/earthsnake/__init__.py index 4aff3ca..4ebff3e 100644 --- a/earthsnake/__init__.py +++ b/earthsnake/__init__.py @@ -15,3 +15,4 @@ Usage example __version__ = '0.1.0' from .identity import Identity +from .document import Document diff --git a/earthsnake/document/__init__.py b/earthsnake/document/__init__.py new file mode 100644 index 0000000..918967e --- /dev/null +++ b/earthsnake/document/__init__.py @@ -0,0 +1,27 @@ +"""Document handling classes""" + +from abc import ABC, abstractmethod +from datetime import datetime +from typing import Optional + +from ..identity import Identity +from ..path import Path + + +class Document(ABC): # pragma: no cover pylint: disable=too-few-public-methods + """Abstract base class for documents""" + + path: Path + + author: Identity + + timestamp: datetime + + signature: str + + @abstractmethod + def sign(self, identity: Optional[Identity] = None) -> None: + """Sign the document as identity + + If ``identity`` is ``None``, use ``self.author`` instead. + """