'Provide a series of condition tuples.
A Target can specify multiple artifact, os_name, cpe or label entries. These
are expanded to all distinct tuples. When an entry is undefined or None, it
is treated as a single definition of None, meaning that the condition does
not apply.
Args:
artifact: Names of artifacts that should trigger an action.
os_name: Names of OS\' that should trigger an action.
cpe: CPE strings that should trigger an action.
labels: Host labels that should trigger an action.
Yields:
a permuted series of (artifact, os_name, cpe, label) tuples.'

@classmethod
def Conditions(cls, artifact=None, os_name=None, cpe=None, labels=None):

    artifact = cls._AsList(artifact)
    os_name = cls._AsList(os_name)
    cpe = cls._AsList(cpe)
    labels = cls._AsList(labels)
    for condition in itertools.product(artifact, os_name, cpe, labels):
        (yield condition)
