Commit 46e554e7 authored by Fabio Utzig's avatar Fabio Utzig Committed by Gustavo Henrique Nihei
Browse files

ci: Fix compatibility with packaging==22



packaging >= 22 dropped support for LegacyVersion, which was the usual
result of an invalid version number being parsed. Now it is PEP-440
strict and throws an exception on fails. This fixes the script to work
with both older and newer releases.

Signed-off-by: default avatarFabio Utzig <utzig@apache.org>
parent 9d3fd7f7
Loading
Loading
Loading
Loading
+19 −3
Original line number Diff line number Diff line
@@ -12,10 +12,15 @@
# See the License for the specific language governing permissions and
# limitations under the License.

from packaging.version import parse, LegacyVersion
from packaging.version import parse, InvalidVersion
import argparse
import sys

try:
    from packaging.version import LegacyVersion
except ImportError:
    LegacyVersion = ()  # trick isinstance!

# exit with 0 if --new is equal to --old
# exit with 1 on errors
# exit with 2 if --new is newer than --old
@@ -30,9 +35,20 @@ if args.old is None or args.new is None:
    parser.print_help()
    exit(1)

old, new = parse(args.old), parse(args.new)
# packaging>=22 only supports PEP-440 version numbers, and a non-valid version
# will throw InvalidVersion. Previous packaging releases would create a
# LegacyVersion object if the given version string failed to parse as PEP-440,
# and since we use versions closer to semver, we want to fail in that case.

versions = []
for version in [args.old, args.new]:
    try:
        versions.append(parse(version))
    except InvalidVersion:
        print("Invalid version parsed: {}".format(version))
        sys.exit(1)

# only accept versions that were correctly parsed
old, new = versions[0], versions[1]
for version in [old, new]:
    if isinstance(version, LegacyVersion):
        print("Invalid version parsed: {}".format(version))