From e4f48168fd58c07c3133ed6f6cf84df18f871e3f Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Sun, 2 Feb 2025 17:12:24 +0000 Subject: [PATCH 01/13] fix: bug in get latest version was getting the max sorted alphabetically instead of sem-ver --- src/sagemaker/jumpstart/cache.py | 4 +--- src/sagemaker/jumpstart/utils.py | 4 ++++ tests/unit/sagemaker/jumpstart/test_utils.py | 8 ++++++++ 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/sagemaker/jumpstart/cache.py b/src/sagemaker/jumpstart/cache.py index 8ac813a6c5..3caf5f5b33 100644 --- a/src/sagemaker/jumpstart/cache.py +++ b/src/sagemaker/jumpstart/cache.py @@ -540,9 +540,7 @@ def _select_version( """ if version_str == "*": - if len(available_versions) == 0: - return None - return str(max(available_versions)) + return utils.get_latest_version(available_versions) if model_type == JumpStartModelType.PROPRIETARY: if "*" in version_str: diff --git a/src/sagemaker/jumpstart/utils.py b/src/sagemaker/jumpstart/utils.py index 46e5f8a847..b12c8ea957 100644 --- a/src/sagemaker/jumpstart/utils.py +++ b/src/sagemaker/jumpstart/utils.py @@ -1630,3 +1630,7 @@ def get_draft_model_content_bucket(provider: Dict, region: str) -> str: return get_jumpstart_gated_content_bucket(region=region) return get_jumpstart_content_bucket(region=region) return neo_bucket + +def get_latest_version(versions: List[str]) -> Optional[str]: + return None if not versions else max(versions, key=Version) + diff --git a/tests/unit/sagemaker/jumpstart/test_utils.py b/tests/unit/sagemaker/jumpstart/test_utils.py index 7cf8fdc9b6..a57a2850b3 100644 --- a/tests/unit/sagemaker/jumpstart/test_utils.py +++ b/tests/unit/sagemaker/jumpstart/test_utils.py @@ -2143,6 +2143,14 @@ def test_add_instance_rate_stats_to_benchmark_metrics_client_ex( def test_has_instance_rate_stat(stats, expected): assert utils.has_instance_rate_stat(stats) is expected +def test_get_latest_version(): + assert utils.get_latest_version(["2.9.1", "2.16.0", "1.0.0"]) == "2.16.0" + +def test_get_latest_version_empty_list_is_none(): + assert utils.get_latest_version([]) == None + +def test_get_latest_version_none_is_none(): + assert utils.get_latest_version(None) == None @pytest.mark.parametrize( "data, expected", From 821916073bfb0c62266ce0c9a4b49e5da51fac7d Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Wed, 5 Feb 2025 17:25:31 +0000 Subject: [PATCH 02/13] handle invalid sev ver and incompatible sagemaker versions --- src/sagemaker/jumpstart/cache.py | 2 +- src/sagemaker/jumpstart/utils.py | 7 +- tests/unit/sagemaker/jumpstart/test_cache.py | 133 ++++++++++++++++++- tests/unit/sagemaker/jumpstart/test_utils.py | 3 + 4 files changed, 140 insertions(+), 5 deletions(-) diff --git a/src/sagemaker/jumpstart/cache.py b/src/sagemaker/jumpstart/cache.py index 3caf5f5b33..bdfc01cba3 100644 --- a/src/sagemaker/jumpstart/cache.py +++ b/src/sagemaker/jumpstart/cache.py @@ -262,7 +262,7 @@ def _model_id_retrieval_function( return JumpStartVersionedModelId(model_id, sm_compatible_model_version) versions_incompatible_with_sagemaker = [ - Version(header.version) + header.version for header in manifest.values() # type: ignore if header.model_id == model_id ] diff --git a/src/sagemaker/jumpstart/utils.py b/src/sagemaker/jumpstart/utils.py index b12c8ea957..763be4ae83 100644 --- a/src/sagemaker/jumpstart/utils.py +++ b/src/sagemaker/jumpstart/utils.py @@ -21,7 +21,7 @@ from urllib.parse import urlparse import boto3 from botocore.exceptions import ClientError -from packaging.version import Version +from packaging.version import Version, InvalidVersion import botocore from sagemaker_core.shapes import ModelAccessConfig import sagemaker @@ -1632,5 +1632,6 @@ def get_draft_model_content_bucket(provider: Dict, region: str) -> str: return neo_bucket def get_latest_version(versions: List[str]) -> Optional[str]: - return None if not versions else max(versions, key=Version) - + try: return None if not versions else max(versions, key=Version) + except InvalidVersion as e: + return max(versions) diff --git a/tests/unit/sagemaker/jumpstart/test_cache.py b/tests/unit/sagemaker/jumpstart/test_cache.py index da20debc6a..0a478f71d1 100644 --- a/tests/unit/sagemaker/jumpstart/test_cache.py +++ b/tests/unit/sagemaker/jumpstart/test_cache.py @@ -22,7 +22,10 @@ from mock.mock import MagicMock import pytest from mock import patch +from packaging.version import Version + +from sagemaker.jumpstart import utils from sagemaker.jumpstart.cache import ( JUMPSTART_DEFAULT_MANIFEST_FILE_S3_KEY, JUMPSTART_DEFAULT_PROPRIETARY_MANIFEST_KEY, @@ -33,6 +36,7 @@ ENV_VARIABLE_JUMPSTART_SPECS_LOCAL_ROOT_DIR_OVERRIDE, ) from sagemaker.jumpstart.types import ( + JumpStartCachedContentValue, JumpStartModelHeader, JumpStartModelSpecs, JumpStartVersionedModelId, @@ -50,7 +54,7 @@ BASE_PROPRIETARY_SPEC, BASE_PROPRIETARY_MANIFEST, ) -from sagemaker.jumpstart.utils import get_jumpstart_content_bucket +from sagemaker.jumpstart.utils import get_formatted_manifest, get_jumpstart_content_bucket @patch.object(JumpStartModelsCache, "_retrieval_function", patched_retrieval_function) @@ -1119,3 +1123,130 @@ def test_jumpstart_local_metadata_override_specs_not_exist_both_directories( ), ] ) + +@patch.object(JumpStartModelsCache, "_retrieval_function") +def test_jumpstart_cache_handles_versioning_correctly_for_open_source_weights( + retrieval_function: Mock +): + sm_version = Version(utils.get_sagemaker_version()) + new_sm_version = Version(str(sm_version.major + 1) + ".0.0") + print(str(new_sm_version)) + versions = ["1.0.0", "2.9.1", "2.16.0"] + manifest = [ + { + "model_id": "test-model", + "version": version, + "min_version": "2.49.0", + "spec_key": "spec_key" + } + for version in versions + ] + + manifest.append( + { + "model_id": "test-model", + "version": "3.0.0", + "min_version": str(new_sm_version), + "spec_key": "spec_key" + } + ) + + manifest_dict = {} + for header in manifest: + header_obj = JumpStartModelHeader(header) + manifest_dict[JumpStartVersionedModelId(header_obj.model_id, header_obj.version)] = ( + header_obj + ) + retrieval_function.return_value = JumpStartCachedContentValue( + formatted_content=manifest_dict + ) + key = JumpStartVersionedModelId("test-model", "*") + + cache = JumpStartModelsCache(s3_bucket_name="some_bucket") + result = cache._get_open_weight_manifest_key_from_model_id( key = key, value = None ) + + assert_key = JumpStartVersionedModelId("test-model", "2.16.0") + + assert result == assert_key + +@patch.object(JumpStartModelsCache, "_retrieval_function") +def test_jumpstart_cache_handles_versioning_correctly_for_proprietary_weights( + retrieval_function: Mock +): + sm_version = Version(utils.get_sagemaker_version()) + new_sm_version = Version(str(sm_version.major + 1) + ".0.0") + print(str(new_sm_version)) + versions = ["1.0.0", "2.9.1", "2.16.0"] + manifest = [ + { + "model_id": "test-model", + "version": version, + "min_version": "2.49.0", + "spec_key": "spec_key" + } + for version in versions + ] + + manifest.append( + { + "model_id": "test-model", + "version": "3.0.0", + "min_version": str(new_sm_version), + "spec_key": "spec_key" + } + ) + + manifest_dict = {} + for header in manifest: + header_obj = JumpStartModelHeader(header) + manifest_dict[JumpStartVersionedModelId(header_obj.model_id, header_obj.version)] = ( + header_obj + ) + retrieval_function.return_value = JumpStartCachedContentValue( + formatted_content=manifest_dict + ) + key = JumpStartVersionedModelId("test-model", "*") + + cache = JumpStartModelsCache(s3_bucket_name="some_bucket") + result = cache._get_proprietary_manifest_key_from_model_id( key = key, value = None ) + + assert_key = JumpStartVersionedModelId("test-model", "2.16.0") + + assert result == assert_key + + +@patch.object(JumpStartModelsCache, "_retrieval_function") +def test_jumpstart_cache_handles_versioning_correctly_non_sem_ver( + retrieval_function: Mock +): + sm_version = Version(utils.get_sagemaker_version()) + new_sm_version = Version(str(sm_version.major + 1) + ".0.0") + print(str(new_sm_version)) + versions = ["abc", "2.9.1", "2.16.0"] + manifest = [ + { + "model_id": "test-model", + "version": version, + "min_version": "2.49.0", + "spec_key": "spec_key" + } + for version in versions + ] + + manifest_dict = {} + for header in manifest: + header_obj = JumpStartModelHeader(header) + manifest_dict[JumpStartVersionedModelId(header_obj.model_id, header_obj.version)] = ( + header_obj + ) + retrieval_function.return_value = JumpStartCachedContentValue( + formatted_content=manifest_dict + ) + key = JumpStartVersionedModelId("test-model", "*") + + cache = JumpStartModelsCache(s3_bucket_name="some_bucket") + result = cache._get_open_weight_manifest_key_from_model_id( key = key, value = None ) + + assert_key = JumpStartVersionedModelId("test-model", "abc") + + assert result == assert_key \ No newline at end of file diff --git a/tests/unit/sagemaker/jumpstart/test_utils.py b/tests/unit/sagemaker/jumpstart/test_utils.py index a57a2850b3..dd2d3a75a8 100644 --- a/tests/unit/sagemaker/jumpstart/test_utils.py +++ b/tests/unit/sagemaker/jumpstart/test_utils.py @@ -2152,6 +2152,9 @@ def test_get_latest_version_empty_list_is_none(): def test_get_latest_version_none_is_none(): assert utils.get_latest_version(None) == None +def test_get_latest_version_with_invalid_sem_ver(): + assert utils.get_latest_version(["2.9.1", "2.16.0", "1.0.0", "abc"]) == "abc" + @pytest.mark.parametrize( "data, expected", [(None, []), ([], []), (get_base_deployment_configs_metadata(), get_base_deployment_configs())], From dbbc9ed03ba7a524e2f894d5e136727f847a45f1 Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Thu, 6 Feb 2025 19:15:24 +0000 Subject: [PATCH 03/13] run linter --- src/sagemaker/jumpstart/utils.py | 4 +++- tests/unit/sagemaker/jumpstart/test_cache.py | 22 +++++++++++--------- tests/unit/sagemaker/jumpstart/test_utils.py | 9 ++++++-- 3 files changed, 22 insertions(+), 13 deletions(-) diff --git a/src/sagemaker/jumpstart/utils.py b/src/sagemaker/jumpstart/utils.py index 763be4ae83..a7010435ec 100644 --- a/src/sagemaker/jumpstart/utils.py +++ b/src/sagemaker/jumpstart/utils.py @@ -1631,7 +1631,9 @@ def get_draft_model_content_bucket(provider: Dict, region: str) -> str: return get_jumpstart_content_bucket(region=region) return neo_bucket + def get_latest_version(versions: List[str]) -> Optional[str]: - try: return None if not versions else max(versions, key=Version) + try: + return None if not versions else max(versions, key=Version) except InvalidVersion as e: return max(versions) diff --git a/tests/unit/sagemaker/jumpstart/test_cache.py b/tests/unit/sagemaker/jumpstart/test_cache.py index 0a478f71d1..91060917ae 100644 --- a/tests/unit/sagemaker/jumpstart/test_cache.py +++ b/tests/unit/sagemaker/jumpstart/test_cache.py @@ -1124,9 +1124,10 @@ def test_jumpstart_local_metadata_override_specs_not_exist_both_directories( ] ) + @patch.object(JumpStartModelsCache, "_retrieval_function") def test_jumpstart_cache_handles_versioning_correctly_for_open_source_weights( - retrieval_function: Mock + retrieval_function: Mock ): sm_version = Version(utils.get_sagemaker_version()) new_sm_version = Version(str(sm_version.major + 1) + ".0.0") @@ -1150,7 +1151,7 @@ def test_jumpstart_cache_handles_versioning_correctly_for_open_source_weights( "spec_key": "spec_key" } ) - + manifest_dict = {} for header in manifest: header_obj = JumpStartModelHeader(header) @@ -1163,15 +1164,16 @@ def test_jumpstart_cache_handles_versioning_correctly_for_open_source_weights( key = JumpStartVersionedModelId("test-model", "*") cache = JumpStartModelsCache(s3_bucket_name="some_bucket") - result = cache._get_open_weight_manifest_key_from_model_id( key = key, value = None ) + result = cache._get_open_weight_manifest_key_from_model_id(key=key, value=None) assert_key = JumpStartVersionedModelId("test-model", "2.16.0") assert result == assert_key + @patch.object(JumpStartModelsCache, "_retrieval_function") def test_jumpstart_cache_handles_versioning_correctly_for_proprietary_weights( - retrieval_function: Mock + retrieval_function: Mock ): sm_version = Version(utils.get_sagemaker_version()) new_sm_version = Version(str(sm_version.major + 1) + ".0.0") @@ -1195,7 +1197,7 @@ def test_jumpstart_cache_handles_versioning_correctly_for_proprietary_weights( "spec_key": "spec_key" } ) - + manifest_dict = {} for header in manifest: header_obj = JumpStartModelHeader(header) @@ -1208,7 +1210,7 @@ def test_jumpstart_cache_handles_versioning_correctly_for_proprietary_weights( key = JumpStartVersionedModelId("test-model", "*") cache = JumpStartModelsCache(s3_bucket_name="some_bucket") - result = cache._get_proprietary_manifest_key_from_model_id( key = key, value = None ) + result = cache._get_proprietary_manifest_key_from_model_id(key=key, value=None) assert_key = JumpStartVersionedModelId("test-model", "2.16.0") @@ -1217,7 +1219,7 @@ def test_jumpstart_cache_handles_versioning_correctly_for_proprietary_weights( @patch.object(JumpStartModelsCache, "_retrieval_function") def test_jumpstart_cache_handles_versioning_correctly_non_sem_ver( - retrieval_function: Mock + retrieval_function: Mock ): sm_version = Version(utils.get_sagemaker_version()) new_sm_version = Version(str(sm_version.major + 1) + ".0.0") @@ -1232,7 +1234,7 @@ def test_jumpstart_cache_handles_versioning_correctly_non_sem_ver( } for version in versions ] - + manifest_dict = {} for header in manifest: header_obj = JumpStartModelHeader(header) @@ -1245,8 +1247,8 @@ def test_jumpstart_cache_handles_versioning_correctly_non_sem_ver( key = JumpStartVersionedModelId("test-model", "*") cache = JumpStartModelsCache(s3_bucket_name="some_bucket") - result = cache._get_open_weight_manifest_key_from_model_id( key = key, value = None ) + result = cache._get_open_weight_manifest_key_from_model_id(key=key, value=None) assert_key = JumpStartVersionedModelId("test-model", "abc") - assert result == assert_key \ No newline at end of file + assert result == assert_key diff --git a/tests/unit/sagemaker/jumpstart/test_utils.py b/tests/unit/sagemaker/jumpstart/test_utils.py index dd2d3a75a8..ea4d64f289 100644 --- a/tests/unit/sagemaker/jumpstart/test_utils.py +++ b/tests/unit/sagemaker/jumpstart/test_utils.py @@ -2143,18 +2143,23 @@ def test_add_instance_rate_stats_to_benchmark_metrics_client_ex( def test_has_instance_rate_stat(stats, expected): assert utils.has_instance_rate_stat(stats) is expected + def test_get_latest_version(): assert utils.get_latest_version(["2.9.1", "2.16.0", "1.0.0"]) == "2.16.0" + def test_get_latest_version_empty_list_is_none(): - assert utils.get_latest_version([]) == None + assert utils.get_latest_version([]) is None + def test_get_latest_version_none_is_none(): - assert utils.get_latest_version(None) == None + assert utils.get_latest_version(None) is None + def test_get_latest_version_with_invalid_sem_ver(): assert utils.get_latest_version(["2.9.1", "2.16.0", "1.0.0", "abc"]) == "abc" + @pytest.mark.parametrize( "data, expected", [(None, []), ([], []), (get_base_deployment_configs_metadata(), get_base_deployment_configs())], From f8fd0943251d4a0270709c8a99569f9e958ece3f Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Fri, 7 Feb 2025 04:56:09 +0000 Subject: [PATCH 04/13] lint --- tests/unit/sagemaker/jumpstart/test_cache.py | 30 +++++++------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/tests/unit/sagemaker/jumpstart/test_cache.py b/tests/unit/sagemaker/jumpstart/test_cache.py index 91060917ae..e2b3e7875f 100644 --- a/tests/unit/sagemaker/jumpstart/test_cache.py +++ b/tests/unit/sagemaker/jumpstart/test_cache.py @@ -1127,7 +1127,7 @@ def test_jumpstart_local_metadata_override_specs_not_exist_both_directories( @patch.object(JumpStartModelsCache, "_retrieval_function") def test_jumpstart_cache_handles_versioning_correctly_for_open_source_weights( - retrieval_function: Mock + retrieval_function: Mock, ): sm_version = Version(utils.get_sagemaker_version()) new_sm_version = Version(str(sm_version.major + 1) + ".0.0") @@ -1138,7 +1138,7 @@ def test_jumpstart_cache_handles_versioning_correctly_for_open_source_weights( "model_id": "test-model", "version": version, "min_version": "2.49.0", - "spec_key": "spec_key" + "spec_key": "spec_key", } for version in versions ] @@ -1148,7 +1148,7 @@ def test_jumpstart_cache_handles_versioning_correctly_for_open_source_weights( "model_id": "test-model", "version": "3.0.0", "min_version": str(new_sm_version), - "spec_key": "spec_key" + "spec_key": "spec_key", } ) @@ -1158,9 +1158,7 @@ def test_jumpstart_cache_handles_versioning_correctly_for_open_source_weights( manifest_dict[JumpStartVersionedModelId(header_obj.model_id, header_obj.version)] = ( header_obj ) - retrieval_function.return_value = JumpStartCachedContentValue( - formatted_content=manifest_dict - ) + retrieval_function.return_value = JumpStartCachedContentValue(formatted_content=manifest_dict) key = JumpStartVersionedModelId("test-model", "*") cache = JumpStartModelsCache(s3_bucket_name="some_bucket") @@ -1173,7 +1171,7 @@ def test_jumpstart_cache_handles_versioning_correctly_for_open_source_weights( @patch.object(JumpStartModelsCache, "_retrieval_function") def test_jumpstart_cache_handles_versioning_correctly_for_proprietary_weights( - retrieval_function: Mock + retrieval_function: Mock, ): sm_version = Version(utils.get_sagemaker_version()) new_sm_version = Version(str(sm_version.major + 1) + ".0.0") @@ -1184,7 +1182,7 @@ def test_jumpstart_cache_handles_versioning_correctly_for_proprietary_weights( "model_id": "test-model", "version": version, "min_version": "2.49.0", - "spec_key": "spec_key" + "spec_key": "spec_key", } for version in versions ] @@ -1194,7 +1192,7 @@ def test_jumpstart_cache_handles_versioning_correctly_for_proprietary_weights( "model_id": "test-model", "version": "3.0.0", "min_version": str(new_sm_version), - "spec_key": "spec_key" + "spec_key": "spec_key", } ) @@ -1204,9 +1202,7 @@ def test_jumpstart_cache_handles_versioning_correctly_for_proprietary_weights( manifest_dict[JumpStartVersionedModelId(header_obj.model_id, header_obj.version)] = ( header_obj ) - retrieval_function.return_value = JumpStartCachedContentValue( - formatted_content=manifest_dict - ) + retrieval_function.return_value = JumpStartCachedContentValue(formatted_content=manifest_dict) key = JumpStartVersionedModelId("test-model", "*") cache = JumpStartModelsCache(s3_bucket_name="some_bucket") @@ -1218,9 +1214,7 @@ def test_jumpstart_cache_handles_versioning_correctly_for_proprietary_weights( @patch.object(JumpStartModelsCache, "_retrieval_function") -def test_jumpstart_cache_handles_versioning_correctly_non_sem_ver( - retrieval_function: Mock -): +def test_jumpstart_cache_handles_versioning_correctly_non_sem_ver(retrieval_function: Mock): sm_version = Version(utils.get_sagemaker_version()) new_sm_version = Version(str(sm_version.major + 1) + ".0.0") print(str(new_sm_version)) @@ -1230,7 +1224,7 @@ def test_jumpstart_cache_handles_versioning_correctly_non_sem_ver( "model_id": "test-model", "version": version, "min_version": "2.49.0", - "spec_key": "spec_key" + "spec_key": "spec_key", } for version in versions ] @@ -1241,9 +1235,7 @@ def test_jumpstart_cache_handles_versioning_correctly_non_sem_ver( manifest_dict[JumpStartVersionedModelId(header_obj.model_id, header_obj.version)] = ( header_obj ) - retrieval_function.return_value = JumpStartCachedContentValue( - formatted_content=manifest_dict - ) + retrieval_function.return_value = JumpStartCachedContentValue(formatted_content=manifest_dict) key = JumpStartVersionedModelId("test-model", "*") cache = JumpStartModelsCache(s3_bucket_name="some_bucket") From a46e6234fd4801c846c0124e61d44da7fa39d716 Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Fri, 7 Feb 2025 16:05:57 +0000 Subject: [PATCH 05/13] dummy commit --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 694e9128cf..0a0e6b5ef7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6502,7 +6502,7 @@ ### Documentation changes - * add mandatory sagemaker_role argument to Local mode example. + * add mandatory sagemaker_role argument to Local mode example. ## v1.18.6 (2019-03-20) From 86cd1991be2f83d87961d69d06de1803cbde3af1 Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Fri, 7 Feb 2025 16:22:03 +0000 Subject: [PATCH 06/13] fix linter issues --- src/sagemaker/jumpstart/utils.py | 2 +- tests/unit/sagemaker/jumpstart/test_cache.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/sagemaker/jumpstart/utils.py b/src/sagemaker/jumpstart/utils.py index a7010435ec..704f38456b 100644 --- a/src/sagemaker/jumpstart/utils.py +++ b/src/sagemaker/jumpstart/utils.py @@ -1635,5 +1635,5 @@ def get_draft_model_content_bucket(provider: Dict, region: str) -> str: def get_latest_version(versions: List[str]) -> Optional[str]: try: return None if not versions else max(versions, key=Version) - except InvalidVersion as e: + except InvalidVersion: return max(versions) diff --git a/tests/unit/sagemaker/jumpstart/test_cache.py b/tests/unit/sagemaker/jumpstart/test_cache.py index e2b3e7875f..6816983542 100644 --- a/tests/unit/sagemaker/jumpstart/test_cache.py +++ b/tests/unit/sagemaker/jumpstart/test_cache.py @@ -54,7 +54,7 @@ BASE_PROPRIETARY_SPEC, BASE_PROPRIETARY_MANIFEST, ) -from sagemaker.jumpstart.utils import get_formatted_manifest, get_jumpstart_content_bucket +from sagemaker.jumpstart.utils import get_jumpstart_content_bucket @patch.object(JumpStartModelsCache, "_retrieval_function", patched_retrieval_function) From 239d0845cd1e9937856b2f0a3ecb5783f51990cc Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Fri, 7 Feb 2025 17:04:06 +0000 Subject: [PATCH 07/13] add doc string to get_latest_version --- CHANGELOG.md | 2 +- src/sagemaker/jumpstart/utils.py | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a0e6b5ef7..694e9128cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6502,7 +6502,7 @@ ### Documentation changes - * add mandatory sagemaker_role argument to Local mode example. + * add mandatory sagemaker_role argument to Local mode example. ## v1.18.6 (2019-03-20) diff --git a/src/sagemaker/jumpstart/utils.py b/src/sagemaker/jumpstart/utils.py index 704f38456b..4e69cf24df 100644 --- a/src/sagemaker/jumpstart/utils.py +++ b/src/sagemaker/jumpstart/utils.py @@ -1633,6 +1633,8 @@ def get_draft_model_content_bucket(provider: Dict, region: str) -> str: def get_latest_version(versions: List[str]) -> Optional[str]: + """Returns the latest version using sem-ver. + falls-back to string ordering when not using sem-ver.""" try: return None if not versions else max(versions, key=Version) except InvalidVersion: From 5f3a5f41346c39d9bb7a552999c991173cff428b Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Fri, 7 Feb 2025 18:28:00 +0000 Subject: [PATCH 08/13] lint --- src/sagemaker/jumpstart/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sagemaker/jumpstart/utils.py b/src/sagemaker/jumpstart/utils.py index 4e69cf24df..d23c36165e 100644 --- a/src/sagemaker/jumpstart/utils.py +++ b/src/sagemaker/jumpstart/utils.py @@ -1634,7 +1634,7 @@ def get_draft_model_content_bucket(provider: Dict, region: str) -> str: def get_latest_version(versions: List[str]) -> Optional[str]: """Returns the latest version using sem-ver. - falls-back to string ordering when not using sem-ver.""" + falls-back to string ordering when not using sem-ver.""" try: return None if not versions else max(versions, key=Version) except InvalidVersion: From b17d5d60ce02b7f3b1a6e3bdd16793aa138ff038 Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Fri, 7 Feb 2025 18:57:01 +0000 Subject: [PATCH 09/13] dummy --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 68cf79c55b..01cf030728 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -.. image:: https://github.com/aws/sagemaker-python-sdk/raw/master/branding/icon/sagemaker-banner.png +.. image:: https://github.com/aws/sagemaker-python-sdk/raw/master/branding/icon/sagemaker-banner.png :height: 100px :alt: SageMaker From 4af99f28369065a530b9f5f226f35c690d76784d Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Sat, 8 Feb 2025 23:25:24 +0000 Subject: [PATCH 10/13] more liniting --- src/sagemaker/jumpstart/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/sagemaker/jumpstart/utils.py b/src/sagemaker/jumpstart/utils.py index d23c36165e..6405aef550 100644 --- a/src/sagemaker/jumpstart/utils.py +++ b/src/sagemaker/jumpstart/utils.py @@ -1634,7 +1634,8 @@ def get_draft_model_content_bucket(provider: Dict, region: str) -> str: def get_latest_version(versions: List[str]) -> Optional[str]: """Returns the latest version using sem-ver. - falls-back to string ordering when not using sem-ver.""" + falls-back to string ordering when not using sem-ver. + """ try: return None if not versions else max(versions, key=Version) except InvalidVersion: From e9c2dc2e363cf7e2a0d4d194530481ecda395c11 Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Sun, 9 Feb 2025 20:30:48 +0000 Subject: [PATCH 11/13] fix doc string --- src/sagemaker/jumpstart/utils.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/sagemaker/jumpstart/utils.py b/src/sagemaker/jumpstart/utils.py index 6405aef550..8873d7220d 100644 --- a/src/sagemaker/jumpstart/utils.py +++ b/src/sagemaker/jumpstart/utils.py @@ -1633,9 +1633,7 @@ def get_draft_model_content_bucket(provider: Dict, region: str) -> str: def get_latest_version(versions: List[str]) -> Optional[str]: - """Returns the latest version using sem-ver. - falls-back to string ordering when not using sem-ver. - """ + """Returns the latest version using sem-ver. Falls-back to string ordering when not using sem-ver.""" try: return None if not versions else max(versions, key=Version) except InvalidVersion: From d79f1f31c8c0dddf7a98de0e3d8ddaa5031e8e4d Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Sun, 9 Feb 2025 20:44:05 +0000 Subject: [PATCH 12/13] shorten doc string --- src/sagemaker/jumpstart/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sagemaker/jumpstart/utils.py b/src/sagemaker/jumpstart/utils.py index 8873d7220d..23245b24e5 100644 --- a/src/sagemaker/jumpstart/utils.py +++ b/src/sagemaker/jumpstart/utils.py @@ -1633,7 +1633,7 @@ def get_draft_model_content_bucket(provider: Dict, region: str) -> str: def get_latest_version(versions: List[str]) -> Optional[str]: - """Returns the latest version using sem-ver. Falls-back to string ordering when not using sem-ver.""" + """Returns the latest version using sem-ver when possible.""" try: return None if not versions else max(versions, key=Version) except InvalidVersion: From d8548509311c35bdffea60e032912ea478c7e542 Mon Sep 17 00:00:00 2001 From: Eli Davidson Date: Sun, 9 Feb 2025 20:58:34 +0000 Subject: [PATCH 13/13] remove trailing whitespace --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 01cf030728..68cf79c55b 100644 --- a/README.rst +++ b/README.rst @@ -1,4 +1,4 @@ -.. image:: https://github.com/aws/sagemaker-python-sdk/raw/master/branding/icon/sagemaker-banner.png +.. image:: https://github.com/aws/sagemaker-python-sdk/raw/master/branding/icon/sagemaker-banner.png :height: 100px :alt: SageMaker