@@ -26,18 +26,19 @@ class ChangeKind(StrEnum):
26
26
OTHER = "other"
27
27
28
28
29
- class ChangeMeta :
30
- def __init__ (self , date : datetime , kind : ChangeKind , title : str ):
29
+ class ChangeEntry :
30
+ def __init__ (self , date : datetime , kind : ChangeKind , title : str , contents : str ):
31
31
self .date = date
32
32
self .kind = kind
33
33
self .title = title
34
+ self .contents = contents
34
35
35
36
36
37
def get_changelog_entries (
37
38
previous_version_commit : Commit ,
38
39
repo : Repo ,
39
40
changelog_sub_path : str ,
40
- ) -> list [tuple [ ChangeKind , str ] ]:
41
+ ) -> list [ChangeEntry ]:
41
42
changelog = []
42
43
43
44
# Compare previous version commit with current working tree
@@ -51,34 +52,33 @@ def get_changelog_entries(
51
52
for diff_item in diff_index .iter_change_type ("A" ):
52
53
file_path = diff_item .b_path
53
54
54
- change_meta , contents = extract_changelog_data (repo .working_dir , file_path )
55
-
56
- changelog .append ((str (change_meta .kind ), contents ))
55
+ change_entry = extract_changelog_entry (repo .working_dir , file_path )
56
+ changelog .append (change_entry )
57
57
58
58
return changelog
59
59
60
60
61
- def extract_changelog_data (working_dir : str , file_path : str ) -> ( ChangeMeta , str ) :
61
+ def extract_changelog_entry (working_dir : str , file_path : str ) -> ChangeEntry :
62
62
file_name = os .path .basename (file_path )
63
63
date , kind = extract_date_and_kind_from_file_name (file_name )
64
64
65
65
abs_file_path = os .path .join (working_dir , file_path )
66
66
with open (abs_file_path , "r" ) as file :
67
67
file_content = file .read ()
68
68
69
- change_meta , contents = strip_changelog_entry_frontmatter (file_content )
69
+ change_entry = extract_changelog_entry_from_contents (file_content )
70
70
71
- if change_meta .date != date :
71
+ if change_entry .date != date :
72
72
raise Exception (
73
- f"{ file_name } - date in front matter { change_meta .date } does not match date extracted from file name { date } "
73
+ f"{ file_name } - date in front matter { change_entry .date } does not match date extracted from file name { date } "
74
74
)
75
75
76
- if change_meta .kind != kind :
76
+ if change_entry .kind != kind :
77
77
raise Exception (
78
- f"{ file_name } - kind in front matter { change_meta .kind } does not match kind extracted from file name { kind } "
78
+ f"{ file_name } - kind in front matter { change_entry .kind } does not match kind extracted from file name { kind } "
79
79
)
80
80
81
- return change_meta , contents
81
+ return change_entry
82
82
83
83
84
84
def extract_date_and_kind_from_file_name (file_name : str ) -> (datetime , ChangeKind ):
@@ -119,18 +119,15 @@ def get_change_kind(kind_str: str) -> ChangeKind:
119
119
return ChangeKind .OTHER
120
120
121
121
122
- def strip_changelog_entry_frontmatter (file_contents : str ) -> (ChangeMeta , str ):
123
- """Strip the front matter from a changelog entry."""
122
+ def extract_changelog_entry_from_contents (file_contents : str ) -> ChangeEntry :
124
123
data = frontmatter .loads (file_contents )
125
124
126
125
kind = get_change_kind (str (data ["kind" ]))
127
126
date = parse_change_date (str (data ["date" ]), FRONTMATTER_DATE_FORMAT )
128
- meta = ChangeMeta (date = date , title = str (data ["title" ]), kind = kind )
129
-
130
127
## Add newline to contents so the Markdown file also contains a newline at the end
131
128
contents = data .content + "\n "
132
129
133
- return meta , contents
130
+ return ChangeEntry ( date = date , title = str ( data [ "title" ]), kind = kind , contents = contents )
134
131
135
132
136
133
def get_changelog_filename (title : str , kind : ChangeKind , date : datetime ) -> str :
0 commit comments