summaryrefslogtreecommitdiff
path: root/blog/post.py
diff options
context:
space:
mode:
authorDmitry Ilvokhin <d@ilvokhin.com>2023-02-05 13:29:44 +0000
committerDmitry Ilvokhin <d@ilvokhin.com>2023-02-05 13:29:44 +0000
commit4d727570a469f40d124038e4c3f2b05c9185c637 (patch)
treea042e59ad0cf9cf3b1542e7ae87a92a1ebce8b7b /blog/post.py
parent0aecd26331741bb149bca9eefedad4a33a3f3ff1 (diff)
downloadblog-4d727570a469f40d124038e4c3f2b05c9185c637.tar.gz
blog-4d727570a469f40d124038e4c3f2b05c9185c637.tar.bz2
blog-4d727570a469f40d124038e4c3f2b05c9185c637.zip
Add type annotation support with mypy
Default target in Makefile check types now.
Diffstat (limited to 'blog/post.py')
-rw-r--r--blog/post.py20
1 files changed, 15 insertions, 5 deletions
diff --git a/blog/post.py b/blog/post.py
index 54440ff..1ac8dfa 100644
--- a/blog/post.py
+++ b/blog/post.py
@@ -2,27 +2,37 @@ import os
import shutil
import datetime
import functools
+from typing import Dict
+
+from jinja2 import Template
import render
class Metadata(object):
__slots__ = ("title", "date", "status")
+ title: str
+ date: str
+ status: str
- def __init__(self, title, date, status):
+ def __init__(self, title: str, date: str, status: str) -> None:
self.title = title
self.date = date
self.status = status
class Post(object):
- def __init__(self, template, directory):
+ template: Template
+ directory: str
+ name: str
+
+ def __init__(self, template: Template, directory: str) -> None:
self.template = template
self.directory = directory
self.name = os.path.basename(directory)
@staticmethod
- def _load_raw_metadata(filename):
+ def _load_raw_metadata(filename: str) -> Dict[str, str]:
data = {}
with open(filename) as f:
@@ -33,7 +43,7 @@ class Post(object):
return data
@functools.cached_property
- def metadata(self):
+ def metadata(self) -> Metadata:
raw = Post._load_raw_metadata(os.path.join(self.directory,
"metadata.txt"))
@@ -43,7 +53,7 @@ class Post(object):
return Metadata(title, date, status)
- def generate(self, basedir):
+ def generate(self, basedir: str) -> None:
postdir = os.path.basename(self.directory)
workdir = os.path.join(basedir, postdir)
os.makedirs(workdir)