Flexstorydiff / xformers /packaging /compute_wheel_version.py
FlexTheAi's picture
Upload folder using huggingface_hub
e202b16 verified
# Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
#
# This source code is licensed under the BSD license found in the
# LICENSE file in the root directory of this source tree.
import argparse
import subprocess
from pathlib import Path
from typing import Optional
# TODO: consolidate with the code in build_conda.py
THIS_PATH = Path(__file__).resolve()
version_from_file = (THIS_PATH.parents[1] / "version.txt").read_text().strip()
def get_tagged_version() -> Optional[str]:
"""
Return whether we are at an exact version (namely the version variable).
"""
try:
tag = subprocess.check_output(
["git", "describe", "--tags", "--exact-match", "HEAD"],
text=True,
stderr=subprocess.DEVNULL,
).strip()
except subprocess.CalledProcessError: # no tag
return None
if not tag.startswith("v"):
return None
return tag[1:]
def get_dev_version() -> str:
assert ".dev" not in version_from_file
num_commits = subprocess.check_output(
["git", "rev-list", "--count", "HEAD"], text=True
).strip()
return f"{version_from_file}.dev{num_commits}"
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument(
"--source", choices=["tag", "dev", "tag,dev"], required=False, default="tag,dev"
)
args = parser.parse_args()
if "tag" in args.source:
tagged_version = get_tagged_version()
if args.source == "tag" and tagged_version is None:
raise ValueError("No tag found")
else:
tagged_version = None
if tagged_version is not None:
print(tagged_version, end="")
else:
print(get_dev_version(), end="")