Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test__check_version__semver() -> None:
style = Style.SemVer
check_version("0.1.0", style=style)
check_version("0.1.0-alpha.1", style=style)
check_version("0.1.0+abc", style=style)
check_version("0.1.0-alpha.1.beta.2+abc.dirty", style=style)
with pytest.raises(ValueError):
check_version("1", style=style)
with pytest.raises(ValueError):
check_version("0.1", style=style)
with pytest.raises(ValueError):
check_version("0.0.0.1", style=style)
# "-" is a valid identifier.
Version("0.1.0--").serialize(style=style)
Version("0.1.0--.-").serialize(style=style)
# No leading zeroes in numeric segments:
with pytest.raises(ValueError):
Version("00.0.0").serialize(style=style)
with pytest.raises(ValueError):
Version("0.01.0").serialize(style=style)
with pytest.raises(ValueError):
Version("0.1.0-alpha.02").serialize(style=style)
# But leading zeroes are fine for non-numeric parts:
Version("0.1.0-alpha.02a").serialize(style=style)
# Identifiers can't be empty:
def test__check_version__pvp() -> None:
style = Style.Pvp
check_version("1", style=style)
check_version("0.1", style=style)
check_version("0.0.1", style=style)
check_version("0.0.0.1", style=style)
check_version("0.1.0-alpha-1", style=style)
with pytest.raises(ValueError):
check_version("0.1.0-a.1", style=style)
def test__check_version__pep440() -> None:
check_version("0.1.0")
check_version("0.01.0")
check_version("2!0.1.0")
check_version("0.1.0a1")
check_version("0.1.0b1")
check_version("0.1.0rc1")
with pytest.raises(ValueError):
check_version("0.1.0x1")
check_version("0.1.0.post0")
check_version("0.1.0.dev0")
check_version("0.1.0.post0.dev0")
with pytest.raises(ValueError):
check_version("0.1.0.other0")
check_version("0.1.0+abc.dirty")
check_version("2!0.1.0a1.post0.dev0+abc.dirty")
def test__check_version__pvp() -> None:
style = Style.Pvp
check_version("1", style=style)
check_version("0.1", style=style)
check_version("0.0.1", style=style)
check_version("0.0.0.1", style=style)
check_version("0.1.0-alpha-1", style=style)
with pytest.raises(ValueError):
check_version("0.1.0-a.1", style=style)
def test__check_version__semver() -> None:
style = Style.SemVer
check_version("0.1.0", style=style)
check_version("0.1.0-alpha.1", style=style)
check_version("0.1.0+abc", style=style)
check_version("0.1.0-alpha.1.beta.2+abc.dirty", style=style)
with pytest.raises(ValueError):
check_version("1", style=style)
with pytest.raises(ValueError):
check_version("0.1", style=style)
with pytest.raises(ValueError):
check_version("0.0.0.1", style=style)
# "-" is a valid identifier.
Version("0.1.0--").serialize(style=style)
Version("0.1.0--.-").serialize(style=style)
# No leading zeroes in numeric segments:
with pytest.raises(ValueError):
Version("00.0.0").serialize(style=style)
def test__check_version__semver() -> None:
style = Style.SemVer
check_version("0.1.0", style=style)
check_version("0.1.0-alpha.1", style=style)
check_version("0.1.0+abc", style=style)
check_version("0.1.0-alpha.1.beta.2+abc.dirty", style=style)
with pytest.raises(ValueError):
check_version("1", style=style)
with pytest.raises(ValueError):
check_version("0.1", style=style)
with pytest.raises(ValueError):
check_version("0.0.0.1", style=style)
# "-" is a valid identifier.
Version("0.1.0--").serialize(style=style)
Version("0.1.0--.-").serialize(style=style)
# No leading zeroes in numeric segments:
with pytest.raises(ValueError):
Version("00.0.0").serialize(style=style)
with pytest.raises(ValueError):
Version("0.01.0").serialize(style=style)
with pytest.raises(ValueError):
Version("0.1.0-alpha.02").serialize(style=style)
# But leading zeroes are fine for non-numeric parts:
Version("0.1.0-alpha.02a").serialize(style=style)
def test__check_version__pvp() -> None:
style = Style.Pvp
check_version("1", style=style)
check_version("0.1", style=style)
check_version("0.0.1", style=style)
check_version("0.0.0.1", style=style)
check_version("0.1.0-alpha-1", style=style)
with pytest.raises(ValueError):
check_version("0.1.0-a.1", style=style)
def test__check_version__pep440() -> None:
check_version("0.1.0")
check_version("0.01.0")
check_version("2!0.1.0")
check_version("0.1.0a1")
check_version("0.1.0b1")
check_version("0.1.0rc1")
with pytest.raises(ValueError):
check_version("0.1.0x1")
check_version("0.1.0.post0")
check_version("0.1.0.dev0")
check_version("0.1.0.post0.dev0")
with pytest.raises(ValueError):
check_version("0.1.0.other0")
check_version("0.1.0+abc.dirty")
check_version("2!0.1.0a1.post0.dev0+abc.dirty")
def test__check_version__semver() -> None:
style = Style.SemVer
check_version("0.1.0", style=style)
check_version("0.1.0-alpha.1", style=style)
check_version("0.1.0+abc", style=style)
check_version("0.1.0-alpha.1.beta.2+abc.dirty", style=style)
with pytest.raises(ValueError):
check_version("1", style=style)
with pytest.raises(ValueError):
check_version("0.1", style=style)
with pytest.raises(ValueError):
check_version("0.0.0.1", style=style)
# "-" is a valid identifier.
Version("0.1.0--").serialize(style=style)
Version("0.1.0--.-").serialize(style=style)
# No leading zeroes in numeric segments:
"serialize_pvp": serialize_pvp,
"serialize_semver": serialize_semver,
}
custom_context = {} # type: dict
for entry in config["format-jinja-imports"]:
if "module" in entry:
module = import_module(entry["module"])
if "item" in entry:
custom_context[entry["item"]] = getattr(module, entry["item"])
else:
custom_context[entry["module"]] = module
serialized = jinja2.Template(config["format-jinja"]).render(
**default_context, **custom_context
)
if style is not None:
check_version(serialized, style)
else:
serialized = version.serialize(config["metadata"], config["dirty"], config["format"], style)
return (version, serialized)