88import  re 
99import  logging 
1010import  os 
11+ from  textwrap  import  dedent 
1112
1213
1314# 配置日志 
@@ -195,33 +196,44 @@ def get_release_info(data, filename="rel-notes.md"):
195196    }
196197
197198    # 定义模板 
198-     header_template  =  Template ("""--- 
199- hide: 
200- -  toc 
201- --- 
202- 
203- # Release Notes 
204- 
205- 本页列出 d.run 各项功能的一些重要变更。 
206- 
207-     """ )
199+     header_template  =  Template (
200+         dedent (
201+             """\  
202+ 
203+             hide: 
204+             -  toc 
205+             --- 
206+ 
207+             # Release Notes 
208+ 
209+             本页列出 d.run 各项功能的一些重要变更。 
210+             """ 
211+         ).strip ()
212+     )
208213
209-     pub_date_template  =  Template ("## $pub_date\n \n " )
210-     module_version_template  =  Template ("### $module $version\n \n " )
211-     update_type_template  =  Template ("#### $emoji_title\n \n " )
214+     pub_date_template  =  Template ("## $pub_date" )
215+     module_version_template  =  Template ("### $module $version" )
216+     update_type_template  =  Template ("#### $emoji_title" )
212217    entry_with_baseline_template  =  Template ("- [$primary_func] $baseline" )
213218    entry_without_baseline_template  =  Template ("- [$primary_func]" )
214219
215-     lines  =  []
216-     lines .append (header_template .substitute ())
220+     def  ensure_blank_line (lines_list ):
221+         if  lines_list  and  lines_list [- 1 ] !=  "" :
222+             lines_list .append ("" )
223+ 
224+     lines  =  header_template .substitute ().splitlines ()
225+     ensure_blank_line (lines )
217226
218227    for  pub_date , modules  in  result .items ():
228+         ensure_blank_line (lines )
219229        lines .append (pub_date_template .substitute (pub_date = pub_date ))
230+         ensure_blank_line (lines )
220231        for  module , versions  in  modules .items ():
221232            for  version , update_types  in  versions .items ():
222233                lines .append (
223234                    module_version_template .substitute (module = module , version = version )
224235                )
236+                 ensure_blank_line (lines )
225237                for  update_type  in  ["新功能" , "增强优化" , "故障修复" , "无更新类型" ]:
226238                    if  update_type  in  update_types :
227239                        entries  =  update_types [update_type ]
@@ -231,6 +243,7 @@ def get_release_info(data, filename="rel-notes.md"):
231243                                    emoji_title = emoji_map [update_type ]
232244                                )
233245                            )
246+                             ensure_blank_line (lines )
234247                        for  primary_func , entry  in  entries :
235248                            baseline  =  entry .get ("基线参数" , "" )
236249                            if  baseline :
@@ -245,9 +258,11 @@ def get_release_info(data, filename="rel-notes.md"):
245258                                        primary_func = primary_func 
246259                                    )
247260                                )
248-                         lines .append ("" )  # 空行分隔 
261+                         ensure_blank_line (lines )
262+     if  lines  and  lines [- 1 ] ==  "" :
263+         lines .pop ()
249264
250-     md_content  =  "\n " .join (lines )
265+     md_content  =  "\n " .join (lines )  +   " \n " 
251266    try :
252267        with  open (filename , "w" , encoding = "utf-8" ) as  f :
253268            f .write (md_content )
0 commit comments