def check_types(srctype, sinktype, linkMerge, valueFrom):
    # type: (Any, Any, Optional[Text], Optional[Text]) -> Text
    """Check if the source and sink types are "pass", "warning", or "exception".
    """

    if valueFrom is not None:
        return "pass"
    if linkMerge is None:
        if can_assign_src_to_sink(srctype, sinktype, strict=True):
            return "pass"
        if can_assign_src_to_sink(srctype, sinktype, strict=False):
            return "warning"
        return "exception"
    if linkMerge == "merge_nested":
        return check_types({"items": _get_type(srctype), "type": "array"},
                           _get_type(sinktype), None, None)
    if linkMerge == "merge_flattened":
        return check_types(merge_flatten_type(_get_type(srctype)), _get_type(sinktype), None, None)
    raise WorkflowException(u"Unrecognized linkMerge enum '{}'".format(linkMerge))
def check_types ( srctype , sinktype , linkMerge , valueFrom ) : if valueFrom is not None : return "pass" if linkMerge is None : if can_assign_src_to_sink ( srctype , sinktype , strict = True ) : return "pass" if can_assign_src_to_sink ( srctype , sinktype , strict = False ) : return "warning" return "exception" if linkMerge == "merge_nested" : return check_types ( { "items" : _get_type ( srctype ) , "type" : "array" } , _get_type ( sinktype ) , None , None ) if linkMerge == "merge_flattened" : return check_types ( merge_flatten_type ( _get_type ( srctype ) ) , _get_type ( sinktype ) , None , None ) raise WorkflowException ( u"Unrecognized linkMerge enum '{}'" . format ( linkMerge ) )
Check if the source and sink types are "pass", "warning", or "exception".