Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions src/sagemaker/workflow/pipeline.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
"""Pipeline module."""



def _validate_role_arn(role_arn):
"""Validate that role_arn is either None or a string."""
if role_arn is not None and not isinstance(role_arn, str):
raise ValueError(
f"role_arn must be a string or None, got {type(role_arn).__name__}"
)

class Pipeline:
"""SageMaker Pipeline."""

def upsert(self, role_arn=None, description=None):
"""Upsert the pipeline."""
return self._call_api(role_arn)

def create(self, role_arn=None, description=None):
"""Create the pipeline."""
return self._call_api(role_arn)
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
"""Tests for Pipeline role_arn validation."""
import pytest


def test_string_role_arn_accepted():
"""String role_arn should be accepted."""
from sagemaker.workflow.pipeline import _validate_role_arn
_validate_role_arn("arn:aws:iam::123:role/MyRole") # Should not raise


def test_none_role_arn_accepted():
"""None role_arn should be accepted."""
from sagemaker.workflow.pipeline import _validate_role_arn
_validate_role_arn(None) # Should not raise


def test_dict_role_arn_raises():
"""Dict role_arn should raise ValueError."""
from sagemaker.workflow.pipeline import _validate_role_arn
with pytest.raises(ValueError, match='role_arn must be a string'):
_validate_role_arn({"key": "value"})


def test_int_role_arn_raises():
"""Int role_arn should raise ValueError."""
from sagemaker.workflow.pipeline import _validate_role_arn
with pytest.raises(ValueError, match='role_arn must be a string'):
_validate_role_arn(12345)
Loading