Skip to content

Commit

Permalink
Don't print empty newline at end of schedule.md
Browse files Browse the repository at this point in the history
  • Loading branch information
jarrodmillman committed Oct 9, 2023
1 parent 2343242 commit 201e923
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 33 deletions.
84 changes: 52 additions & 32 deletions spec-0000/SPEC0_versions.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,40 +148,60 @@ def get_release_dates(package, support_time=plus24):
print("Saving drop schedule to schedule.md")


def pad_table(table):
rows = [[el.strip() for el in row.split("|")] for row in table]
col_widths = [max(map(len, column)) for column in zip(*rows)]
rows[1] = [
el if el != "----" else "-" * col_widths[i] for i, el in enumerate(rows[1])
]
padded_table = []
for row in rows:
line = ""
for entry, width in zip(row, col_widths):
if not width:
continue
line += f"| {str.ljust(entry, width)} "
line += f"|"
padded_table.append(line)

return padded_table


def make_table(sub):
table = []
table.append("| | | |")
table.append("|----|----|----|")
for package in sorted(set(sub.index.get_level_values(0))):
vers = sub.loc[[package]]["version"]
minv, maxv = min(vers), max(vers)
rels = sub.loc[[package]]["release"]
rel_min, rel_max = min(rels), max(rels)
version_range = str(minv) if minv == maxv else f"{minv} to {maxv}"
rel_range = (
str(rel_min.strftime("%b %Y"))
if rel_min == rel_max
else f"{rel_min.strftime('%b %Y')} and {rel_max.strftime('%b %Y')}"
)
table.append(f"|{package:<15}|{version_range:<19}|released {rel_range}|")

return pad_table(table)


def make_quarter(quarter, dq):
table = ["#### " + str(quarter).replace("Q", " - Quarter ") + ":\n"]
table.append("###### Recommend drop support for:\n")
sub = dq.loc[quarter]
table.extend(make_table(sub))
return "\n".join(table)


with open("schedule.md", "w") as fh:
# we collect package 6 month in the past, and drop the first quarter
# as we might have filtered some of the packages out depending on
# when we ran the script.
tb = []
for quarter in list(sorted(set(dq.index.get_level_values(0))))[1:]:
fh.write("#### " + str(quarter).replace("Q", " - Quarter ") + ":\n\n")
fh.write("###### Recommend drop support for:\n\n")

table = "| | | |\n"
table += "|----|----|----|\n"

sub = dq.loc[quarter]
for package in sorted(set(sub.index.get_level_values(0))):
vers = sub.loc[[package]]["version"]
minv, maxv = min(vers), max(vers)
rels = sub.loc[[package]]["release"]
rel_min, rel_max = min(rels), max(rels)
version_range = str(minv) if minv == maxv else f"{minv} to {maxv}"
rel_range = (
str(rel_min.strftime("%b %Y"))
if rel_min == rel_max
else f"{rel_min.strftime('%b %Y')} and {rel_max.strftime('%b %Y')}"
)
table += f"|{package:<15}|{version_range:<19}|released {rel_range}|\n"

rows = [[el.strip() for el in row.split("|")] for row in table.splitlines()]
col_widths = [max(map(len, column)) for column in zip(*rows)]
rows[1] = [
el if el != "----" else "-" * col_widths[i] for i, el in enumerate(rows[1])
]
for row in rows:
for entry, width in zip(row, col_widths):
if not width:
continue
fh.write(f"| {str.ljust(entry, width)} ")
fh.write("|\n")
fh.write("\n")
tb.append(make_quarter(quarter, dq))

fh.write("\n\n".join(tb))
fh.write("\n")
1 change: 0 additions & 1 deletion spec-0000/schedule.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,4 +126,3 @@
| | | |
| ------ | ---- | ----------------- |
| python | 3.12 | released Oct 2023 |

0 comments on commit 201e923

Please sign in to comment.