in src/prepare_dlc_dev_environment.py [0:0]
def set_buildspec(self, buildspec_paths):
"""
This method takes a buildspec path as input and updates the corresponding key in the
buildspec_override section of the TOML file.
"""
frameworks = []
job_types = []
dev_modes = []
invalid_paths = []
for buildspec_path in buildspec_paths:
# validate the buildspec_path format
full_path = validate_buildspec_path(buildspec_path)
if not full_path:
invalid_paths.append(buildspec_path)
continue
# extract the framework, job_type, and version from the buildspec_path
match = re.match(BUILDSPEC_PATTERN, buildspec_path)
framework = match.group(1).replace("/", "_")
frameworks.append(framework)
framework_str = (
framework.replace("_", "-") if framework != "tensorflow" else "tensorflow-2"
)
job_type = match.group(2)
job_types.append(job_type)
buildspec_info = match.group(3)
dev_mode = None
for dm in VALID_DEV_MODES:
if dm.replace("_mode", "") in buildspec_info:
dev_mode = dm
break
dev_modes.append(dev_mode)
# construct the build_job name using the extracted info
dev_mode_str = f"-{dev_mode.replace('_mode', '')}" if dev_mode else ""
build_job = f"dlc-pr-{framework_str}{dev_mode_str}-{job_type}"
self._overrides["buildspec_override"][build_job] = buildspec_path
if invalid_paths:
raise RuntimeError(
f"Found buildspecs that either do not match regex {BUILDSPEC_PATTERN} or do not exist: {invalid_paths}. Please retry, and use tab completion to find valid buildspecs."
)
if len(set(dev_modes)) > 1:
LOGGER.warning(
f"Only 1 dev mode is allowed, selecting the first mode in the list: {dev_modes[0]}"
)
self.set_dev_mode(dev_mode=dev_modes[0])
self.set_build_frameworks(frameworks=frameworks)
self.set_job_type(job_types=job_types)