Skip to content

Commit 7d3694f

Browse files
committed
refactor: put behind a compare subcommand
Signed-off-by: Henry Schreiner <henryfs@princeton.edu>
1 parent 09df8ce commit 7d3694f

File tree

2 files changed

+20
-10
lines changed

2 files changed

+20
-10
lines changed

src/packaging/tags.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,10 @@ def __str__(self) -> str:
114114
return f"{self._interpreter}-{self._abi}-{self._platform}"
115115

116116
def __repr__(self) -> str:
117-
return f"<{self} @ {id(self)}>"
117+
return (
118+
f"{self.__class__.__name__}"
119+
f"({self._interpreter!r}, {self._abi!r}, {self._platform!r})"
120+
)
118121

119122
def __setstate__(self, state: tuple[None, dict[str, Any]]) -> None:
120123
# The cached _hash is wrong when unpickling.

src/packaging/version.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -930,6 +930,7 @@ def _cmpkey(
930930

931931
return epoch, _release, _pre, _post, _dev, _local
932932

933+
933934
if __name__ == "__main__":
934935
import argparse
935936
import operator
@@ -949,18 +950,24 @@ def _cmpkey(
949950
">": operator.gt,
950951
}
951952

952-
# Argument parsing
953-
parser = argparse.ArgumentParser(description="Compare two semantic versions. Return code is 0 or 1.")
954-
parser.add_argument("version1", type=Version, help="First version to compare")
955-
parser.add_argument(
953+
parser = argparse.ArgumentParser(description="Version utilities")
954+
subparsers = parser.add_subparsers(dest="command", required=True)
955+
956+
compare = subparsers.add_parser(
957+
"compare",
958+
help="Compare two semantic versions.",
959+
description="Compare two semantic versions. Return code is 0 or 1.",
960+
)
961+
compare.add_argument("version1", type=Version, help="First version to compare")
962+
compare.add_argument(
956963
"operator",
957-
type=str,
958964
choices=operations.keys(),
959965
help="Comparison operator",
960966
)
961-
parser.add_argument("version2", type=Version, help="Second version to compare")
962-
args = parser.parse_args()
967+
compare.add_argument("version2", type=Version, help="Second version to compare")
963968

964-
result = operations[args.operator](args.version1, args.version2)
965-
raise SystemExit(not result)
969+
args = parser.parse_args()
966970

971+
if args.command == "compare":
972+
result = operations[args.operator](args.version1, args.version2)
973+
raise SystemExit(not result)

0 commit comments

Comments
 (0)