'How existing transactions should be handled.
One of NESTED, MANDATORY, ALLOWED, INDEPENDENT. The interpertation of
these types is up to higher level run-in-transaction implementations.
WARNING: Using anything other than NESTED for the propagation flag
can have strange consequences.  When using ALLOWED or MANDATORY, if
an exception is raised, the transaction is likely not safe to
commit.  When using INDEPENDENT it is not generally safe to return
values read to the caller (as they were not read in the caller\'s
transaction).
Raises: datastore_errors.BadArgumentError if value is not reconized.'

@ConfigOption
def propagation(value):

    if (value not in TransactionOptions._PROPAGATION):
        raise datastore_errors.BadArgumentError(('Unknown    propagation    value    (%r)' % (value,)))
    return value
