@@ -28,7 +28,7 @@ def parse_date(date_str: str) -> dt.date:
2828class Versions :
2929 """For converting JSON to CSV and SVG."""
3030
31- def __init__ (self ) -> None :
31+ def __init__ (self , limit_to_active = False ) -> None :
3232 with open ("include/release-cycle.json" , encoding = "UTF-8" ) as in_file :
3333 self .versions = json .load (in_file )
3434
@@ -38,6 +38,20 @@ def __init__(self) -> None:
3838 version ["first_release_date" ] = r1 = parse_date (version ["first_release" ])
3939 version ["start_security_date" ] = r1 + dt .timedelta (days = 2 * 365 )
4040 version ["end_of_life_date" ] = parse_date (version ["end_of_life" ])
41+
42+ if limit_to_active :
43+ cutoff = min (
44+ version ["first_release_date" ]
45+ for version in self .versions .values ()
46+ if version ["status" ] != 'end-of-life'
47+ )
48+ self .versions = {
49+ key : version
50+ for key , version in self .versions .items ()
51+ if version ["end_of_life_date" ] >= cutoff
52+ }
53+
54+
4155 self .sorted_versions = sorted (
4256 self .versions .values (),
4357 key = lambda v : [int (i ) for i in v ["key" ].split ("." )],
@@ -69,7 +83,7 @@ def write_csv(self) -> None:
6983 csv_file .writeheader ()
7084 csv_file .writerows (versions .values ())
7185
72- def write_svg (self , today : str ) -> None :
86+ def write_svg (self , today : str , out_path : str ) -> None :
7387 """Output SVG file."""
7488 env = jinja2 .Environment (
7589 loader = jinja2 .FileSystemLoader ("_tools/" ),
@@ -117,7 +131,7 @@ def format_year(year: int) -> str:
117131 return f"'{ year % 100 :02} "
118132
119133 with open (
120- "include/release-cycle.svg" , "w" , encoding = "UTF-8" , newline = "\n "
134+ out_path , "w" , encoding = "UTF-8" , newline = "\n "
121135 ) as f :
122136 template .stream (
123137 SCALE = SCALE ,
@@ -146,8 +160,13 @@ def main() -> None:
146160 args = parser .parse_args ()
147161
148162 versions = Versions ()
163+ print (versions .versions .keys ())
164+ assert len (versions .versions ) > 10
149165 versions .write_csv ()
150- versions .write_svg (args .today )
166+ versions .write_svg (args .today , "include/release-cycle-all.svg" )
167+
168+ versions = Versions (limit_to_active = True )
169+ versions .write_svg (args .today , "include/release-cycle.svg" )
151170
152171
153172if __name__ == "__main__" :
0 commit comments