33import re
44from pathlib import Path
55
6+ _NUMBER_RE = re .compile (r"\d+" )
7+ _VERSION_RE = re .compile (r"(v\d+\.\d+\.\d+((?:a|b|rc).*)?)" )
68
7- def pad_version (version , pad_length = 3 ):
9+
10+ def pad_version (version : str , pad_length : int = 3 ):
811 p = ""
912 n : str
10- for n in re .findall (r"\d+" , version ):
11- p += str ( n .zfill (pad_length ) )
13+ for n in _NUMBER_RE .findall (version ):
14+ p += n .zfill (pad_length )
1215 if "a" not in version :
1316 p += "9" * pad_length # stable versions before pre-releases (with `reverse=True`)
1417 return p
1518
1619
17- def write_switcher_json (* args ):
20+ def write_switcher_json (* args : str ):
1821 url_prefix = args [0 ] if args else "/"
1922 if not url_prefix .startswith ("/" ):
2023 url_prefix = f"/{ url_prefix } "
@@ -32,16 +35,13 @@ def write_switcher_json(*args):
3235 dev_named = False
3336 stable_named = False
3437 for idx , vers in enumerate (all_vers ):
35- is_dev = bool (
36- re .search (r"(v[0-9]+\.[0-9]+\.[0-9]+((?:a|b|rc).*)?)" , vers ).groups ()[1 ]
37- )
38+ is_dev = bool (_VERSION_RE .search (vers ).group (1 ))
3839 if not is_dev and not stable_named :
3940 stable_named = True
4041 name = f"stable ({ vers } )"
4142 if idx == 0 :
42- dev_named = (
43- True # don't label dev if there is no dev version beyond stable
44- )
43+ dev_named = True
44+ # don't label dev if there is no dev version beyond stable
4545 elif is_dev and not dev_named :
4646 dev_named = True
4747 name = f"dev ({ vers } )"
0 commit comments