def _transform_modifier_part(part, version, static): if version.modifier == static: raise ValueError(f"No detected version change.") new_version = parse_calver(str(version), version.version_format) new_version.modifier = static return new_version
def _transform_date_part(part, version, static): probe_version = parse_calver(str(version), version.version_format) probe_version.calendar_date = static if str(probe_version) == str(version): raise ValueError(f"No detected version change.") return CalVer( version_format=version.version_format, calendar_date=static, formatter=version.formatter, )
def _auto_transform(self, today, version): version_format = version.version_format probe_version = parse_calver(str(version), version_format) probe_version.calendar_date = today version_str = str(version) if str(probe_version) < version_str: raise ValueError( f"Current version {version_str} is already ahead of today's version." ) elif str(probe_version) > version_str: return str( CalVer(version_format, calendar_date=today, formatter=version.formatter)) else: return self._auto_update_numerical_parts(probe_version)
def _transform_numerical_part(part, version, static): try: value = int(static) except ValueError: raise ValueError(f"Expecting {part} to be an integer.") if getattr(version, part) >= value: raise ValueError(f"Can only increase {part} part.") new_version = parse_calver(str(version), version.version_format) resettable_numeric_fields = { MAJOR_PART: [MINOR_PART, MICRO_PART], MINOR_PART: [MICRO_PART], MICRO_PART: [], }[part] setattr(new_version, part, static) for reset_field in resettable_numeric_fields: setattr(new_version, reset_field, 0) new_version.modifier = "" return new_version
def test_parse_invalid_version(): with pytest.raises(ValueError): parse_calver("1.2.3", "YYYY")
def test_parse_invalid_version_format_no_date_tokens(): with pytest.raises(ValueError): parse_calver("1.2.3.nerp", "MAJOR.MINOR.MICRO.MODIFIER")
def test_parse(version_format, version): calver = parse_calver(version, version_format) assert version == str(calver)