def version_number_str(major, minor=0, patch=0, prerelease=None, build=None):
    """
    Takes the parts of a semantic version number, and returns a nicely
    formatted string.
    """
    version = str(major) + "." + str(minor) + "." + str(patch)
    if prerelease:
        if prerelease.startswith("-"):
            version = version + prerelease
        else:
            version = version + "-" + str(prerelease)
    if build:
        if build.startswith("+"):
            version = version + build
        else:
            version = version + "+" + str(build)
    return version