[Buildroot] [PATCH buildroot-test 8/9] utils/daily-mail: replace '%' style format strings by the newer '{}' version

Victor Huesca victor.huesca at bootlin.com
Sun Aug 4 10:53:47 UTC 2019


Python provides several ways to perform string formatting. The 1st is C
style inspired and use the '%' operator, this is the original way to
create format strings in python. The second way -- which is the standard
in python3 -- is the '.format()' method, this version is more flexible,
removes the strong type constraints and allow more format styles. This
method is also noted as the preferred way over the '%' formatting [1].

In order to introduce new kind of notification, this patch update the
current format strings to this new standard.

[1] https://docs.python.org/2/library/stdtypes.html#str.format

Signed-off-by: Victor Huesca <victor.huesca at bootlin.com>
---
 utils/daily-mail | 51 ++++++++++++++++++++++++------------------------
 1 file changed, 25 insertions(+), 26 deletions(-)

diff --git a/utils/daily-mail b/utils/daily-mail
index 6786caa..7af1933 100755
--- a/utils/daily-mail
+++ b/utils/daily-mail
@@ -41,7 +41,7 @@ def get_overall_stats(db, datestr, branches):
     stats = {}
     for branch in branches:
         db.query("""select status,count(id) as count from results
-        where date(builddate) = '%s' and branch = '%s' group by status""" % (datestr, branch))
+        where date(builddate) = '{}' and branch = '{}' group by status""".format(datestr, branch))
         r = db.use_result()
         result = dict(r.fetch_row(maxrows=0))
         if '0' in result:
@@ -193,11 +193,11 @@ def show_results(results, show_status, show_orphan=False):
         orphan_str = 'ORPH' if r.get('orphan') else ''
         url = http_baseurl + "/results/" + r['identifier']
         if show_status:
-            contents += "%12s | %30s | %3s | %79s" % (arch, reason, status_str, url)
+            contents += "{:^12} | {:^30} | {:^3} | {:^79}".format(arch, reason, status_str, url)
         else:
-            contents += "%12s | %30s | %79s" % (arch, reason, url)
+            contents += "{:^12} | {:^30} | {:^79}".format(arch, reason, url)
         if show_orphan:
-            contents += " | %4s\n" % (orphan_str)
+            contents += " | {:^4}\n".format(orphan_str)
         else:
             contents += "\n"
     return contents
@@ -210,13 +210,13 @@ def developers_email(smtp, branches, notifications, datestr, dry_run):
     for dev, notif in notifications.iteritems():
         to = dev.name
         email_from = localconfig.fromaddr
-        subject = "[%s] Your build results for %s" % (baseurl, datestr)
+        subject = "[{}] Your build results for {}".format(baseurl, datestr)
         contents = "Hello,\n\n"
-        contents += textwrap.fill("This is the list of Buildroot build failures that occurred on %s, "
+        contents += textwrap.fill("This is the list of Buildroot build failures that occurred on {}, "
                                   "and for which you are a registered architecture developer or package "
                                   "developer. Please help us improving the quality of Buildroot by "
                                   "investigating those build failures and sending patches to fix them. "
-                                  "Thanks!" % datestr)
+                                  "Thanks!".format(datestr))
         contents += "\n\n"
         show_orphan = dev.name == ORPHAN_DEVELOPER
 
@@ -227,7 +227,7 @@ def developers_email(smtp, branches, notifications, datestr, dry_run):
             if len(archs) == 0 and len(packages) == 0:
                 continue
 
-            contents += "Results for the '%s' branch\n" % branch
+            contents += "Results for the '{}' branch\n".format(branch)
             contents += "=========================" + "=" * len(branch) + "\n\n"
 
             if len(archs) != 0:
@@ -244,9 +244,9 @@ def developers_email(smtp, branches, notifications, datestr, dry_run):
         contents += http_baseurl
         if dry_run:
             print "====================================================="
-            print "To: %s" % to
-            print "From: %s" % email_from
-            print "Subject: %s" % subject
+            print "To: {}".format(to)
+            print "From: {}".format(email_from)
+            print "Subject: {}".format(subject)
             print
             print contents
             print "====================================================="
@@ -257,18 +257,18 @@ def developers_email(smtp, branches, notifications, datestr, dry_run):
             msg['From'] = email_from
             msg['Date'] = formatdate()
             smtp.sendmail(email_from, to, msg.as_string())
-            print "To: %s" % dev.name
+            print "To: {}".format(dev.name)
 
 
 def global_email_branch_result(results, results_by_reason, branch):
-    contents = "Results for branch '%s'\n" % branch
+    contents = "Results for branch '{}'\n".format(branch)
     contents += "=====================" + "=" * len(branch) + "\n\n"
     contents += "Classification of failures by reason\n"
     contents += "------------------------------------\n\n"
     for r in results_by_reason:
         reason = shrink_str(r['reason'], 30)
         count = int(r['reason_count'])
-        contents += "%30s | %-2d\n" % (reason, count)
+        contents += "{:>30} | {:<2}\n".format(reason, count)
     contents += "\n\n"
     contents += "Detail of failures\n"
     contents += "------------------\n\n"
@@ -283,17 +283,16 @@ def global_email(smtp, results, results_by_reason, datestr, overall, dry_run):
     '''
     to = "buildroot at buildroot.org"
     email_from = localconfig.fromaddr
-    subject = "[%s] Build results for %s" % (baseurl, datestr)
+    subject = "[{}] Build results for {}".format(baseurl, datestr)
     contents = "Hello,\n\n"
-    contents += "Build statistics for %s\n" % datestr
+    contents += "Build statistics for {}\n".format(datestr)
     contents += "===============================\n\n"
     contents += "      branch |  OK | NOK | TIM | TOT |\n"
     for branch in sorted(overall.iterkeys()):
         stats = overall[branch]
         if stats[3] == 0:
             continue
-        contents += "  %10s | %3d | %3d | %3d | %3d |\n" % \
-                    (branch, stats[0], stats[1], stats[2], stats[3])
+        contents += "  {:^10} | {:^3} | {:^3} | {:^3} | {:^3} |\n".format(branch, stats[0], stats[1], stats[2], stats[3])
     contents += "\n"
     for branch in results.keys():
         if len(results[branch]) == 0:
@@ -304,9 +303,9 @@ def global_email(smtp, results, results_by_reason, datestr, overall, dry_run):
     contents += http_baseurl
     if dry_run:
         print "====================================================="
-        print "To: %s" % to
-        print "From: %s" % email_from
-        print "Subject: %s" % subject
+        print "To: {}".format(to)
+        print "From: {}".format(email_from)
+        print "Subject: {}".format(subject)
         print
         print contents
         print "====================================================="
@@ -327,9 +326,9 @@ def get_build_results(db, datestr, branches):
     results = {}
     for branch in branches:
         db.query("""select * from results
-        where date(builddate) = '%s'
-        and status != 0 and branch = '%s'
-        order by reason""" % (datestr, branch))
+        where date(builddate) = '{}'
+        and status != 0 and branch = '{}'
+        order by reason""".format(datestr, branch))
         r = db.use_result()
         results[branch] = r.fetch_row(how=1, maxrows=0)
     return results
@@ -339,8 +338,8 @@ def get_build_results_grouped_by_reason(db, datestr, branches):
     results_by_reason = {}
     for branch in branches:
         db.query("""select reason,count(id) as reason_count from results
-        where date(builddate) = '%s' and status != 0 and branch = '%s'
-        group by reason order by reason_count desc, reason""" % (datestr, branch))
+        where date(builddate) = '{}' and status != 0 and branch = '{}'
+        group by reason order by reason_count desc, reason""".format(datestr, branch))
         r = db.use_result()
         results_by_reason[branch] = r.fetch_row(how=1, maxrows=0)
     return results_by_reason
-- 
2.21.0




More information about the buildroot mailing list