11import sys
2- from typing import List
3- from packaging .version import parse , Version , LegacyVersion
2+ from typing import List , Union
3+ from packaging .version import parse , Version , InvalidVersion
44import requests
55import argparse
66
@@ -21,25 +21,26 @@ def __init__(self, repo: str, organization: str = 'scipp'):
2121
2222 def _to_version (self , version ) -> Version :
2323 if isinstance (version , str ):
24- version = parse (version )
25- # When not building for a tagged release we may get, e.g., 'main'.
26- # Pretend this means the current latest release.
27- if isinstance (version , LegacyVersion ):
24+ try :
25+ return parse (version )
26+ except InvalidVersion :
27+ # When not building for a tagged release we may get, e.g., 'main'.
28+ # Pretend this means the current latest release.
2829 return self ._releases [0 ]
2930 return version
3031
3132 def minor_releases (self , first : str = '0.1' ) -> List [str ]:
3233 """Return set of minor releases in the form '1.2'.
3334
34- `first` gives the first release to be included. By default '0.0' releases are
35+ `first` gives the first release to be included. By default, '0.0' releases are
3536 not included.
3637 """
3738 first = parse (first )
3839 releases = [r for r in self ._releases if r >= first ]
3940 releases = sorted (set ((r .major , r .minor ) for r in releases ), reverse = True )
4041 return [f'{ major } .{ minor } ' for major , minor in releases ]
4142
42- def is_latest (self , version : str ) -> bool :
43+ def is_latest (self , version : Union [ str , Version ] ) -> bool :
4344 """Return True if `version` has the same or larger major and minor as the
4445 latest release.
4546 """
@@ -54,14 +55,14 @@ def is_new(self, version: str) -> bool:
5455 latest = releases [0 ]
5556 return (latest .major , latest .minor ) < (version .major , version .minor )
5657
57- def target (self , version : str ) -> str :
58+ def target (self , version : Union [ str , Version ] ) -> str :
5859 version = self ._to_version (version )
5960 if self .is_latest (version ):
6061 return ''
6162 else :
6263 return f'release/{ version .major } .{ version .minor } '
6364
64- def replaced (self , version : str ) -> str :
65+ def replaced (self , version : str ) -> Version :
6566 version = self ._to_version (version )
6667 # If we release 1.2 we want to find 1.1
6768 for release in self ._releases :
0 commit comments