From 7d512da6f2b7823827a8f4fd3e8db923bf40295a Mon Sep 17 00:00:00 2001 From: Mark Pryor Date: Mon, 1 Jan 2024 13:22:49 -0800 Subject: [PATCH 1/2] fix match/case for py39 --- cargo2rpm/semver.py | 155 ++++++++++++++++++++------------------------ 1 file changed, 72 insertions(+), 83 deletions(-) diff --git a/cargo2rpm/semver.py b/cargo2rpm/semver.py index d2340b2..337efdc 100644 --- a/cargo2rpm/semver.py +++ b/cargo2rpm/semver.py @@ -397,105 +397,94 @@ class Comparator: comparators = [] - match self.op: - case Op.EXACT: - match (self.minor, self.patch): - case (None, None): +# match self.op: + if self.op == Op.EXACT : +# match (self.minor, self.patch): + if self.minor is None and self.patch is None : comparators.append(Comparator(Op.GREATER_EQ, self.major, 0, 0, None)) comparators.append(Comparator(Op.LESS, self.major + 1, 0, 0, None)) - case (minor, None): - comparators.append(Comparator(Op.GREATER_EQ, self.major, minor, 0, None)) - comparators.append(Comparator(Op.LESS, self.major, minor + 1, 0, None)) - case (minor, patch): - comparators.append(Comparator(Op.EXACT, self.major, minor, patch, self.pre)) - case _: # pragma nocover - raise RuntimeError("Unreachable: This should never happen.") - - case Op.GREATER: - match (self.minor, self.patch): - case (None, None): + elif self.patch is None : + comparators.append(Comparator(Op.GREATER_EQ, self.major, self.minor, 0, None)) + comparators.append(Comparator(Op.LESS, self.major, self.minor + 1, 0, None)) + else: + comparators.append(Comparator(Op.EXACT, self.major, self.minor, self.patch, self.pre)) + + elif self.op == Op.GREATER : +# match (self.minor, self.patch): + if self.minor is None and self.patch is None : comparators.append(Comparator(Op.GREATER_EQ, self.major + 1, 0, 0, None)) - case (minor, None): - comparators.append(Comparator(Op.GREATER_EQ, self.major, minor + 1, 0, None)) - case (minor, patch): - comparators.append(Comparator(Op.GREATER, self.major, minor, patch, self.pre)) - case _: # pragma nocover - raise RuntimeError("Unreachable: This should never happen.") - - case Op.GREATER_EQ: - match (self.minor, self.patch): - case (None, None): - comparators.append(Comparator(Op.GREATER_EQ, self.major, 0, 0, None)) - case (minor, None): - comparators.append(Comparator(Op.GREATER_EQ, self.major, minor, 0, None)) - case (minor, patch): - comparators.append(Comparator(Op.GREATER_EQ, self.major, minor, patch, self.pre)) - case _: # pragma nocover - raise RuntimeError("Unreachable: This should never happen.") + comparators.append(Comparator(Op.GREATER_EQ, self.major, self.minor + 1, 0, None)) + else: + comparators.append(Comparator(Op.GREATER, self.major, self.minor, self.patch, self.pre)) - case Op.LESS: - match (self.minor, self.patch): - case (None, None): + elif self.op == Op.GREATER_EQ : +# match (self.minor, self.patch): + if self.minor is None and self.patch is None : + comparators.append(Comparator(Op.GREATER_EQ, self.major, 0, 0, None)) + elif self.patch is None : + comparators.append(Comparator(Op.GREATER_EQ, self.major, self.minor, 0, None)) + else: + comparators.append(Comparator(Op.GREATER_EQ, self.major, self.minor, self.patch, self.pre)) + + elif self.op == Op.LESS : +# match (self.minor, self.patch): + if self.minor is None and self.patch is None: comparators.append(Comparator(Op.LESS, self.major, 0, 0, None)) - case (minor, None): - comparators.append(Comparator(Op.LESS, self.major, minor, 0, None)) - case (minor, patch): - comparators.append(Comparator(Op.LESS, self.major, minor, patch, self.pre)) - case _: # pragma nocover - raise RuntimeError("Unreachable: This should never happen.") - - case Op.LESS_EQ: - match (self.minor, self.patch): - case (None, None): + elif self.patch is None: + comparators.append(Comparator(Op.LESS, self.major, self.minor, 0, None)) + else: + comparators.append(Comparator(Op.LESS, self.major, self.minor, self.patch, self.pre)) + + elif self.op == Op.LESS_EQ : +# match (self.minor, self.patch): + if self.minor is None and self.patch is None: comparators.append(Comparator(Op.LESS, self.major + 1, 0, 0, None)) - case (minor, None): - comparators.append(Comparator(Op.LESS, self.major, minor + 1, 0, None)) - case (minor, patch): - comparators.append(Comparator(Op.LESS_EQ, self.major, minor, patch, self.pre)) - case _: # pragma nocover - raise RuntimeError("Unreachable: This should never happen.") - - case Op.TILDE: - match (self.minor, self.patch): - case (None, None): + elif self.patch is None: + comparators.append(Comparator(Op.LESS, self.major, self.minor + 1, 0, None)) + else: + comparators.append(Comparator(Op.LESS_EQ, self.major, self.minor, self.patch, self.pre)) + + elif self.op == "Op.TILDE" : +# match (self.minor, self.patch): + if self.minor is None and self.patch is None: comparators.extend(Comparator(Op.EXACT, self.major, None, None, None).normalize()) - case (minor, None): + elif self.minor=="minor" and self.patch is None: comparators.extend(Comparator(Op.EXACT, self.major, minor, None, None).normalize()) - case (minor, patch): + elif self.minor=="minor" and self.patch=="patch" : comparators.append(Comparator(Op.GREATER_EQ, self.major, minor, patch, self.pre)) comparators.append(Comparator(Op.LESS, self.major, minor + 1, 0, None)) - case _: # pragma nocover - raise RuntimeError("Unreachable: This should never happen.") + else: # pragma nocover + raise ValueError(f"Unknown operator: {self.op} (this should never happen)") - case Op.CARET: - match (self.major, self.minor, self.patch): - case (major, None, None): + elif self.op == "Op.CARET" : +# match (self.major, self.minor, self.patch): case (major, None, None) + if self.major=="major" and self.minor is None and self.patch is None: comparators.extend(Comparator(Op.EXACT, major, None, None, None).normalize()) - case (0, 0, None): + elif self.major==0 and self.minor==0 and self.patch is None: comparators.extend(Comparator(Op.EXACT, 0, 0, None, None).normalize()) - case (major, minor, None): + elif self.major=="major" and self.minor=="minor" and self.patch is None: comparators.extend(Comparator(Op.CARET, major, minor, 0, None).normalize()) - case (0, 0, patch): + elif self.major==0 and self.minor==0 and self.patch=="patch": comparators.extend(Comparator(Op.EXACT, 0, 0, patch, self.pre).normalize()) - case (0, minor, patch): + elif self.major==0 and self.minor=="minor" and self.patch=="patch": comparators.append(Comparator(Op.GREATER_EQ, 0, minor, patch, self.pre)) comparators.append(Comparator(Op.LESS, 0, minor + 1, 0, None)) - case (major, minor, patch): + elif self.major=="major" and self.minor=="minor" and self.patch=="patch": comparators.append(Comparator(Op.GREATER_EQ, major, minor, patch, self.pre)) comparators.append(Comparator(Op.LESS, major + 1, 0, 0, None)) - case _: # pragma nocover - raise RuntimeError("Unreachable: This should never happen.") + else: # pragma nocover + raise ValueError(f"Unknown operator: {self.op} (this should never happen)") - case Op.WILDCARD: - match (self.minor, self.patch): - case (None, None): + elif self.op == "Op.WILDCARD" : +# match (self.minor, self.patch): + if self.minor is None and self.patch is None : comparators.extend(Comparator(Op.EXACT, self.major, None, None, None).normalize()) - case (minor, None): + elif self.minor=="minor" and self.patch is None : comparators.extend(Comparator(Op.EXACT, self.major, minor, None, None).normalize()) - case _: # pragma nocover - raise RuntimeError("Unreachable: This should never happen.") + else: # pragma nocover + raise ValueError(f"Unknown operator: {self.op} (this should never happen)") - case _: # pragma nocover + else: # pragma nocover raise ValueError(f"Unknown operator: {self.op} (this should never happen)") return comparators @@ -526,18 +515,18 @@ class Comparator: pre_str = f"~{pre}" pre_str_less = f"~{pre}" - match self.op: - case Op.EXACT: +# match self.op: + if self.op == "Op.EXACT" : return f"crate({crate}{feature_str}) = {version_str}{pre_str}" - case Op.GREATER: + elif self.op == "Op.GREATER" : return f"crate({crate}{feature_str}) > {version_str}{pre_str}" - case Op.GREATER_EQ: + elif self.op == "Op.GREATER_EQ" : return f"crate({crate}{feature_str}) >= {version_str}{pre_str}" - case Op.LESS: + elif self.op == "Op.LESS" : return f"crate({crate}{feature_str}) < {version_str}{pre_str_less}" - case Op.LESS_EQ: + elif self.op == "Op.LESS_EQ" : return f"crate({crate}{feature_str}) <= {version_str}{pre_str}" - case _: # pragma nocover + else: # pragma nocover raise ValueError(f"Unsupported operator for RPM syntax formatting: {self.op}") -- 2.39.3