def test_choice_state_creation(): choice_state = Choice('Choice', input_path='$.Input') choice_state.add_choice(ChoiceRule.IsPresent("$.StringVariable1", True), Pass("End State 1")) choice_state.add_choice(ChoiceRule.StringEquals("$.StringVariable1", "ABC"), Pass("End State 1")) choice_state.add_choice(ChoiceRule.StringLessThanEqualsPath("$.StringVariable2", "$.value"), Pass("End State 2")) choice_state.default_choice(Pass('End State 3')) assert choice_state.state_id == 'Choice' assert len(choice_state.choices) == 3 assert choice_state.default.state_id == 'End State 3' assert choice_state.to_dict() == { 'Type': 'Choice', 'InputPath': '$.Input', 'Choices': [ { 'Variable': '$.StringVariable1', 'IsPresent': True, 'Next': 'End State 1' }, { 'Variable': '$.StringVariable1', 'StringEquals': 'ABC', 'Next': 'End State 1' }, { 'Variable': '$.StringVariable2', 'StringLessThanEqualsPath': '$.value', 'Next': 'End State 2' } ], 'Default': 'End State 3' } with pytest.raises(TypeError): Choice('Choice', unknown_field='Unknown Field')
def test_rule_serialization(): bool_rule = ChoiceRule.BooleanEquals('$.BooleanVariable', True) assert bool_rule.to_dict() == { 'Variable': '$.BooleanVariable', 'BooleanEquals': True } string_rule = ChoiceRule.StringEquals('$.StringVariable', 'ABC') assert string_rule.to_dict() == { 'Variable': '$.StringVariable', 'StringEquals': 'ABC' } and_rule = ChoiceRule.And([bool_rule, string_rule]) assert and_rule.to_dict() == { 'And': [{ 'Variable': '$.BooleanVariable', 'BooleanEquals': True }, { 'Variable': '$.StringVariable', 'StringEquals': 'ABC' }] } not_rule = ChoiceRule.Not(string_rule) assert not_rule.to_dict() == { 'Not': { 'Variable': '$.StringVariable', 'StringEquals': 'ABC' } } compound_rule = ChoiceRule.Or([and_rule, not_rule]) assert compound_rule.to_dict() == { 'Or': [{ 'And': [{ 'Variable': '$.BooleanVariable', 'BooleanEquals': True }, { 'Variable': '$.StringVariable', 'StringEquals': 'ABC' }], }, { 'Not': { 'Variable': '$.StringVariable', 'StringEquals': 'ABC' } }] }
def test_variable_must_start_with_prefix(): with pytest.raises(ValueError): ChoiceRule.StringEquals('Variable', '42')
'SAGEMAKER_AUTOPILOT_TARGET_MODEL', 'Type': 'PLAIN_TEXT', 'Value': '{}.tar.gz'.format(execution_input['ModelName']) }] }) # happy path model_and_endpoint_step = Chain( [model_step, endpoint_config_step, endpoint_step, deploy_rest_api_task]) # define choice check_job_choice.add_choice( ChoiceRule.StringEquals(variable=check_autopilot_job_status.output() ['Payload']['AutopilotJobStatus'], value='InProgress'), next_step=check_autopilot_job_status) check_job_choice.add_choice( ChoiceRule.StringEquals(variable=check_autopilot_job_status.output() ['Payload']['AutopilotJobStatus'], value='Stopping'), next_step=check_autopilot_job_status) check_job_choice.add_choice( ChoiceRule.StringEquals(variable=check_autopilot_job_status.output() ['Payload']['AutopilotJobStatus'], value='Failed'), next_step=workflow_failure)