MCPcopy Index your code
hub / github.com/mongodb/mongo-python-driver / Version

Class Version

pymongo/common.py:1077–1144  ·  view source on GitHub ↗

A class that can be used to compare version strings.

Source from the content-addressed store, hash-verified

1075
1076
1077class Version(tuple[int, ...]):
1078 """A class that can be used to compare version strings."""
1079
1080 def __new__(cls, *version: int) -> Version:
1081 padded_version = cls._padded(version, 4)
1082 return super().__new__(cls, tuple(padded_version))
1083
1084 @classmethod
1085 def _padded(cls, iter: Any, length: int, padding: int = 0) -> list[int]:
1086 as_list = list(iter)
1087 if len(as_list) < length:
1088 for _ in range(length - len(as_list)):
1089 as_list.append(padding)
1090 return as_list
1091
1092 @classmethod
1093 def from_string(cls, version_string: str) -> Version:
1094 mod = 0
1095 bump_patch_level = False
1096 if version_string.endswith("+"):
1097 version_string = version_string[0:-1]
1098 mod = 1
1099 elif version_string.endswith("-pre-"):
1100 version_string = version_string[0:-5]
1101 mod = -1
1102 elif version_string.endswith("-"):
1103 version_string = version_string[0:-1]
1104 mod = -1
1105 # Deal with .devX substrings
1106 if ".dev" in version_string:
1107 version_string = version_string[0 : version_string.find(".dev")]
1108 mod = -1
1109 # Deal with '-rcX' substrings
1110 if "-rc" in version_string:
1111 version_string = version_string[0 : version_string.find("-rc")]
1112 mod = -1
1113 # Deal with git describe generated substrings
1114 elif "-" in version_string:
1115 version_string = version_string[0 : version_string.find("-")]
1116 mod = -1
1117 bump_patch_level = True
1118
1119 version = [int(part) for part in version_string.split(".")]
1120 version = cls._padded(version, 3)
1121 # Make from_string and from_version_array agree. For example:
1122 # MongoDB Enterprise > db.runCommand('buildInfo').versionArray
1123 # [ 3, 2, 1, -100 ]
1124 # MongoDB Enterprise > db.runCommand('buildInfo').version
1125 # 3.2.0-97-g1ef94fe
1126 if bump_patch_level:
1127 version[-1] += 1
1128 version.append(mod)
1129
1130 return Version(*version)
1131
1132 @classmethod
1133 def from_version_array(cls, version_array: Any) -> Version:
1134 version = list(version_array)

Callers 3

from_stringMethod · 0.70
from_version_arrayMethod · 0.70
at_leastMethod · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected