in src/sagemaker_core/main/intelligent_defaults_helper.py [0:0]
def _get_inferred_s3_uri(s3_uri, s3_resource_for_config):
"""Placeholder docstring"""
parsed_url = urlparse(s3_uri)
bucket, key_prefix = parsed_url.netloc, parsed_url.path.lstrip("/")
s3_bucket = s3_resource_for_config.Bucket(name=bucket)
s3_objects = s3_bucket.objects.filter(Prefix=key_prefix).all()
s3_files_with_same_prefix = [
"{}{}/{}".format(S3_PREFIX, bucket, s3_object.key) for s3_object in s3_objects
]
if len(s3_files_with_same_prefix) == 0:
# Customer provided us with an incorrect s3 path.
raise S3ConfigNotFoundError(
s3_uri=s3_uri,
message="Provide a valid S3 URI in the format s3://<bucket>/<key-prefix>/{_CONFIG_FILE_NAME}.",
)
if len(s3_files_with_same_prefix) > 1:
# Customer has provided us with a S3 URI which points to a directory
# search for s3://<bucket>/directory-key-prefix/config.yaml
inferred_s3_uri = str(pathlib.PurePosixPath(s3_uri, _CONFIG_FILE_NAME)).replace(
"s3:/", "s3://"
)
if inferred_s3_uri not in s3_files_with_same_prefix:
# We don't know which file we should be operating with.
raise S3ConfigNotFoundError(
s3_uri=s3_uri,
message="Provide an S3 URI pointing to a directory that contains a {_CONFIG_FILE_NAME} file.",
)
# Customer has a config.yaml present in the directory that was provided as the S3 URI
return inferred_s3_uri
return s3_uri