diff --git a/src/sagemaker/model.py b/src/sagemaker/model.py index 5cc260f3ef..e5ea1ea314 100644 --- a/src/sagemaker/model.py +++ b/src/sagemaker/model.py @@ -745,6 +745,8 @@ def is_repack(self) -> bool: Returns: bool: if the source need to be repacked or not """ + if self.source_dir is None or self.entry_point is None: + return False return self.source_dir and self.entry_point and not self.git_config def _upload_code(self, key_prefix: str, repack: bool = False) -> None: @@ -2143,6 +2145,8 @@ def is_repack(self) -> bool: Returns: bool: if the source need to be repacked or not """ + if self.source_dir is None or self.entry_point is None: + return False return self.source_dir and self.entry_point and not (self.key_prefix or self.git_config) diff --git a/tests/unit/sagemaker/model/test_framework_model.py b/tests/unit/sagemaker/model/test_framework_model.py index d41dd6f821..432d90bd37 100644 --- a/tests/unit/sagemaker/model/test_framework_model.py +++ b/tests/unit/sagemaker/model/test_framework_model.py @@ -511,6 +511,20 @@ def test_is_repack_with_code_location(repack_model, sagemaker_session): assert not model.is_repack() +@patch("sagemaker.utils.repack_model") +def test_is_repack_with_none_type(repack_model, sagemaker_session): + """Test is_repack() returns a boolean value when source_dir and entry_point are None""" + + model = FrameworkModel( + role=ROLE, + sagemaker_session=sagemaker_session, + image_uri=IMAGE_URI, + model_data=MODEL_DATA, + ) + + assert model.is_repack() is False + + @patch("sagemaker.git_utils.git_clone_repo") @patch("sagemaker.model.fw_utils.tar_and_upload_dir") def test_is_repack_with_git_config(tar_and_upload_dir, git_clone_repo, sagemaker_session): diff --git a/tests/unit/sagemaker/model/test_model.py b/tests/unit/sagemaker/model/test_model.py index 9175613662..3d498dfc59 100644 --- a/tests/unit/sagemaker/model/test_model.py +++ b/tests/unit/sagemaker/model/test_model.py @@ -1046,6 +1046,20 @@ def test_is_repack_with_code_location(repack_model, sagemaker_session): assert model.is_repack() +@patch("sagemaker.utils.repack_model") +def test_is_repack_with_none_type(repack_model, sagemaker_session): + """Test is_repack() returns a boolean value when source_dir and entry_point are None""" + + model = Model( + role=ROLE, + sagemaker_session=sagemaker_session, + image_uri=IMAGE_URI, + model_data=MODEL_DATA, + ) + + assert model.is_repack() is False + + @patch("sagemaker.git_utils.git_clone_repo") @patch("sagemaker.model.fw_utils.tar_and_upload_dir") def test_is_repack_with_git_config(tar_and_upload_dir, git_clone_repo, sagemaker_session):