diff --git a/my/reddit/common.py b/my/reddit/common.py index 9b1ca47..c4a1f81 100644 --- a/my/reddit/common.py +++ b/my/reddit/common.py @@ -21,8 +21,6 @@ else: # common fields across all the Protocol classes, so generic code can be written -# doesnt seem we can subclass this to the other Protocols though sadly, see -# https://www.python.org/dev/peps/pep-0544/#toc-entry-28 class RedditBase(Protocol): @property def raw(self) -> Json: ... @@ -37,62 +35,23 @@ class RedditBase(Protocol): # Note: doesn't include GDPR Save's since they don't have the same metadata -class Save(Protocol): - @property - def raw(self) -> Json: ... - @property - def created(self) -> datetime_aware: ... - @property - def id(self) -> str: ... - @property - def url(self) -> str: ... - @property - def text(self) -> str: ... +class Save(Protocol, RedditBase): @property def subreddit(self) -> str: ... # Note: doesn't include GDPR Upvote's since they don't have the same metadata -class Upvote(Protocol): - @property - def raw(self) -> Json: ... - @property - def id(self) -> str: ... - @property - def created(self) -> datetime_aware: ... - @property - def url(self) -> str: ... - @property - def text(self) -> str: ... +class Upvote(Protocol, RedditBase): @property def title(self) -> str: ... # From rexport, pushshift and the reddit GDPR export -class Comment(Protocol): - @property - def raw(self) -> Json: ... - @property - def id(self) -> str: ... - @property - def created(self) -> datetime_aware: ... - @property - def url(self) -> str: ... - @property - def text(self) -> str: ... +class Comment(Protocol, RedditBase): + pass # From rexport and the GDPR export -class Submission(Protocol): - @property - def raw(self) -> Json: ... - @property - def id(self) -> str: ... - @property - def created(self) -> datetime_aware: ... - @property - def url(self) -> str: ... - @property - def text(self) -> str: ... +class Submission(Protocol, RedditBase): @property def title(self) -> str: ...