in scripts/azureml-assets/azureml/assets/validate_assets.py [0:0]
def validate_environment_name(asset_config: assets.AssetConfig) -> int:
"""Validate environment name.
Args:
asset_config (AssetConfig): Asset config.
Returns:
int: Number of errors.
"""
error_count = 0
asset_name = asset_config.name
# Check for invalid characters
if not ENVIRONMENT_NAME_PATTERN.match(asset_name):
_log_error(asset_config.file_name_with_path, "Name contains invalid characters")
error_count += 1
# Check for invalid strings
for invalid_string in INVALID_ENVIRONMENT_STRINGS:
if invalid_string in asset_name:
_log_error(asset_config.file_name_with_path,
f"Name '{asset_name}' contains invalid string '{invalid_string}'")
error_count += 1
# Check for missing frameworks and version
frameworks_found = [f for f in FRAMEWORKS if f in asset_name]
if len(frameworks_found) == 0:
_log_warning(asset_config.file_name_with_path, f"Name '{asset_name}' is missing framework")
else:
# Check framework version
if not FRAMEWORK_VERSION_PATTERN.search(asset_name):
_log_error(asset_config.file_name_with_path, f"Name '{asset_name}' is missing framework version")
error_count += 1
# Check operating system and version
if (OPERATING_SYSTEM_PATTERN.search(asset_name) and
not OPERATING_SYSTEM_VERSION_PATTERN.search(asset_name)):
_log_error(asset_config.file_name_with_path,
f"Name '{asset_name}' is missing operating system version")
error_count += 1
# Check python version
if PYTHON_VERSION_PATTERN.search(asset_name):
_log_warning(asset_config.file_name_with_path,
f"Name '{asset_name}' should only contain Python version if absolutely necessary")
# Check GPU driver and version
gpu_drivers_found = [f for f in GPU_DRIVERS if f in asset_name]
if gpu_drivers_found:
if not GPU_DRIVER_VERSION_PATTERN.search(asset_name):
_log_error(asset_config.file_name_with_path, f"Name '{asset_name}' is missing GPU driver version")
error_count += 1
if "gpu" in asset_name:
_log_error(asset_config.file_name_with_path,
f"Name '{asset_name}' should not contain both GPU driver and 'gpu'")
error_count += 1
# Check for ordering
if frameworks_found and not ENVIRONMENT_NAME_FULL_PATTERN.search(asset_name):
_log_error(asset_config.file_name_with_path, f"Name '{asset_name}' elements are out of order")
error_count += 1
return error_count