def bump_version(version: parver.Version, args) -> parver.Version: if args.release: return version.base_version() if args.dev: if args.to is not None: return version.replace(dev=args.to) else: return version.bump_dev() version = version.replace(dev=None) if args.post: if args.to is not None: return version.replace(post=args.to) else: return version.bump_post() if args.rc: if version.is_postrelease: version = version.replace(post=None) if args.to is not None: return version.replace(pre_tag="rc", pre=args.to) else: return version.bump_pre("rc")
def get_release_version( current_version: Version, release_type: ReleaseType = None ) -> Version: """Return the next version according to git log.""" if release_type is DEV: if current_version.is_devrelease: return current_version.bump_dev() return current_version.bump_release(index=2).bump_dev() if release_type is None: release_type = get_release_type() if SIMULATE is True: print(f'* {release_type}') base_version = current_version.base_version() # removes devN if release_type is PATCH: return base_version if release_type is MINOR or current_version < Version(1): # do not change an early development version to a major release # that type of change should be more explicit (edit versions). return base_version.bump_release(index=1) return base_version.bump_release(index=0)