Skip to content

Commit d840732

Browse files
Bug 3323988: Regex fix and indices correction for model download (#36317)
* Bug 3323988: Regex fix and indices correction for model download * fixing test case
1 parent ad78350 commit d840732

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

sdk/ml/azure-ai-ml/azure/ai/ml/_artifacts/_constants.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
GEN2_STORAGE_CLIENT_NAME = "Gen2StorageClient"
4242
DEFAULT_CONNECTION_TIMEOUT = 14400
4343
STORAGE_URI_REGEX = (
44-
r"(https:\/\/([a-zA-Z0-9@:%_\\\-+~#?&=]+)[a-zA-Z0-9@:%._\\\-+~#?&=]+\.?)\/([a-zA-Z0-9@:%._\\\-+~#?&=]+)\/(.*)"
44+
r"(https:\/\/([a-zA-Z0-9@:%_\\\-+~#?&=]+)[a-zA-Z0-9@:%._\\\-+~#?&=]+\.?)\/([a-zA-Z0-9@:%._\\\-+~#?&=]+)\/?(.*)"
4545
)
4646

4747
WORKSPACE_MANAGED_DATASTORE_WITH_SLASH = "azureml://datastores/workspacemanageddatastore/"

sdk/ml/azure-ai-ml/azure/ai/ml/_utils/_storage_utils.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,10 @@ def get_ds_name_and_path_prefix(asset_uri: str, registry_name: Optional[str] = N
191191
if registry_name:
192192
try:
193193
split_paths = re.findall(STORAGE_URI_REGEX, asset_uri)
194-
path_prefix = split_paths[0][3]
194+
if split_paths[0][3] == "":
195+
path_prefix = split_paths[0][2]
196+
else:
197+
path_prefix = split_paths[0][3]
195198
except Exception as e:
196199
msg = "Registry asset URI could not be parsed."
197200
raise MlException(message=msg, no_personal_data_message=msg) from e

sdk/ml/azure-ai-ml/tests/internal_utils/unittests/test_storage_utils.py

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
1-
import pytest
2-
3-
from azure.ai.ml._utils._storage_utils import get_ds_name_and_path_prefix
41
from pathlib import Path
52
from unittest.mock import Mock, patch
63

4+
import pytest
5+
76
from azure.ai.ml._scope_dependent_operations import OperationConfig, OperationScope
7+
from azure.ai.ml._utils._storage_utils import get_ds_name_and_path_prefix
88
from azure.ai.ml.entities._assets import Code, Data, Environment, Model
99
from azure.ai.ml.entities._assets._artifacts.artifact import ArtifactStorageInfo
10-
from azure.ai.ml.operations import (
11-
DataOperations,
12-
DatastoreOperations,
13-
EnvironmentOperations,
14-
ModelOperations,
15-
)
16-
from azure.ai.ml.operations._code_operations import CodeOperations
1710
from azure.ai.ml.exceptions import ErrorTarget
11+
from azure.ai.ml.operations import DataOperations, DatastoreOperations, EnvironmentOperations, ModelOperations
12+
from azure.ai.ml.operations._code_operations import CodeOperations
1813

1914

2015
@pytest.fixture
@@ -125,7 +120,7 @@ def test_storage_uri_to_prefix(
125120
def test_storage_uri_to_prefix_malformed(
126121
self,
127122
) -> None:
128-
reg_uri_bad = "https://ccccccccddd4512d.blob.core.windows.net/5823bbb4-bb28-497c-b9f2-1ff3a0778b10"
123+
reg_uri_bad = "https://ccccccccddd4512d.blob.core.windows.net"
129124
workspace_uri_bad = "azureml://subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/000000000000000/workspaces/some_test_3/datastores/workspaceblobstore/path/LocalUpload/26960525964086056a7301dd061fb9be/lightgbm_mlflow_model"
130125

131126
with pytest.raises(Exception) as e:

0 commit comments

Comments
 (0)