Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def check_version(version: str, style: Style = Style.Pep440) -> None:
"""
Check if a version is valid for a style.
:param version: Version to check.
:param style: Style against which to check.
"""
name, pattern = {
Style.Pep440: ("PEP 440", _VALID_PEP440),
Style.SemVer: ("Semantic Versioning", _VALID_SEMVER),
Style.Pvp: ("PVP", _VALID_PVP),
}[style]
failure_message = "Version '{}' does not conform to the {} style".format(version, name)
if not re.search(pattern, version):
raise ValueError(failure_message)
if style == Style.SemVer:
parts = re.split(r"[.-]", version.split("+", 1)[0])
"""
if format is not None:
out = format.format(
base=self.base,
stage=_blank(self.stage, ""),
revision=_blank(self.revision, ""),
distance=_blank(self.distance, ""),
commit=_blank(self.commit, ""),
dirty="dirty" if self.dirty else "clean",
)
if style is not None:
check_version(out, style)
return out
if style is None:
style = Style.Pep440
out = ""
meta_parts = []
if metadata is not False:
if (metadata or self.distance > 0) and self.commit is not None:
meta_parts.append(self.commit)
if dirty and self.dirty:
meta_parts.append("dirty")
pre_parts = []
if self.stage is not None:
pre_parts.append(self.stage)
if self.revision is not None:
pre_parts.append(str(self.revision))
if self.distance > 0:
pre_parts.append("post")
# PEP 440 does not allow omitting the revision, so assume 0.
out.append(0)
else:
out.append(revision)
if post is not None:
out.extend([".post", post])
if dev is not None:
out.extend([".dev", dev])
if metadata is not None and len(metadata) > 0:
out.extend(["+", ".".join(map(str, metadata))])
serialized = "".join(map(str, out))
check_version(serialized, Style.Pep440)
return serialized