Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 87837ba

Browse files
committed
Python version status: show when bugfix releases become security releases
1 parent 85eda4a commit 87837ba

File tree

2 files changed

+83
-20
lines changed

2 files changed

+83
-20
lines changed

_tools/generate_release_cycle.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,8 @@ def __init__(self) -> None:
3535
# Generate a few additional fields
3636
for key, version in self.versions.items():
3737
version["key"] = key
38-
version["first_release_date"] = parse_date(version["first_release"])
38+
version["first_release_date"] = r1 = parse_date(version["first_release"])
39+
version["start_security_date"] = r1 + dt.timedelta(days=2 * 365)
3940
version["end_of_life_date"] = parse_date(version["end_of_life"])
4041
self.sorted_versions = sorted(
4142
self.versions.values(),

_tools/release_cycle_template.svg.jinja

Lines changed: 81 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -58,25 +58,87 @@
5858
<!-- Colourful blob with a label -->
5959
{% set start_x = date_to_x(version.first_release_date) %}
6060
{% set end_x = date_to_x(version.end_of_life_date) %}
61-
{% set mid_x = (start_x + end_x) / 2 %}
62-
<rect
63-
class="release-cycle-blob release-cycle-blob-{{ version.status }}"
64-
x="{{ start_x * SCALE }}"
65-
y="{{ (y - 1) * SCALE }}"
66-
width="{{ (end_x - start_x) * SCALE }}"
67-
height="{{ 1.25 * SCALE }}"
68-
rx="0.25em"
69-
ry="0.25em"
70-
/>
71-
<text
72-
class="release-cycle-blob-label release-cycle-blob-{{ version.status }}"
73-
x="{{ mid_x * SCALE }}"
74-
y="{{ (y - 0.1) * SCALE }}"
75-
font-size="{{ SCALE * 0.75 }}"
76-
text-anchor="middle"
77-
>
78-
{{ version.status }}
79-
</text>
61+
62+
{% if version.status == "bugfix" %}
63+
<!-- bugfix status needs a security tail.
64+
Draw the rectangle with two path elements instead.
65+
Thanks Claude.ai for the conversion.
66+
-->
67+
{% set half_x = date_to_x(version.start_security_date) %}
68+
{% set height = 1.25 * SCALE %}
69+
{% set left_width = (half_x - start_x) * SCALE %}
70+
{% set right_width = (end_x - half_x) * SCALE %}
71+
{% set left_x = start_x * SCALE %}
72+
{% set middle_x = half_x * SCALE %}
73+
{% set right_x = half_x * SCALE %}
74+
{% set recty = (y - 1) * SCALE %}
75+
{% set radius_value = 0.25 * SCALE %}
76+
77+
<path
78+
class="release-cycle-blob release-cycle-blob-bugfix"
79+
d="
80+
M{{ left_x + radius_value }},{{ recty }}
81+
Q{{ left_x }},{{ recty }} {{ left_x }},{{ recty + radius_value }}
82+
V{{ recty + height - radius_value }}
83+
Q{{ left_x }},{{ recty + height }} {{ left_x + radius_value }},{{ recty + height }}
84+
H{{ middle_x }}
85+
V{{ recty }}
86+
Z
87+
"
88+
/>
89+
<text
90+
class="release-cycle-blob-label release-cycle-blob-bugfix"
91+
x="{{ (start_x + half_x) / 2 * SCALE }}"
92+
y="{{ (y - 0.1) * SCALE }}"
93+
font-size="{{ SCALE * 0.75 }}"
94+
text-anchor="middle"
95+
>
96+
bugfix
97+
</text>
98+
99+
<path
100+
class="release-cycle-blob release-cycle-blob-security"
101+
d="
102+
M{{ right_x }},{{ recty }}
103+
H{{ right_x + right_width - radius_value }}
104+
Q{{ right_x + right_width }},{{ recty }} {{ right_x + right_width }},{{ recty + radius_value }}
105+
V{{ recty + height - radius_value }}
106+
Q{{ right_x + right_width }},{{ recty + height }} {{ right_x + right_width - radius_value }},{{ recty + height }}
107+
H{{ right_x }}
108+
V{{ recty }}
109+
Z
110+
"
111+
/>
112+
<text
113+
class="release-cycle-blob-label release-cycle-blob-security"
114+
x="{{ (half_x + end_x) / 2 * SCALE }}"
115+
y="{{ (y - 0.1) * SCALE }}"
116+
font-size="{{ SCALE * 0.75 }}"
117+
text-anchor="middle"
118+
>
119+
security
120+
</text>
121+
{% else %}
122+
<!-- Most statuses only need a simple rectangle with text. -->
123+
<rect
124+
class="release-cycle-blob release-cycle-blob-{{ version.status }}"
125+
x="{{ start_x * SCALE }}"
126+
y="{{ (y - 1) * SCALE }}"
127+
width="{{ (end_x - start_x) * SCALE }}"
128+
height="{{ 1.25 * SCALE }}"
129+
rx="0.25em"
130+
ry="0.25em"
131+
/>
132+
<text
133+
class="release-cycle-blob-label release-cycle-blob-{{ version.status }}"
134+
x="{{ (start_x + end_x) / 2 * SCALE }}"
135+
y="{{ (y - 0.1) * SCALE }}"
136+
font-size="{{ SCALE * 0.75 }}"
137+
text-anchor="middle"
138+
>
139+
{{ version.status }}
140+
</text>
141+
{% endif %}
80142
{% endfor %}
81143

82144
<!-- A line for today -->

0 commit comments

Comments
 (0)