An optional method that is called before the
default decomposer (the value's _decompose_ method). If
intercepting_decomposer is specified and returns a result that
isn't NotImplemented or None, that result is used. Otherwise the
decomposition falls back to the default decomposer.
Note that val will be passed into intercepting_decomposer, even
if val isn't a cirq.Operation.
fallback_decomposer
An optional decomposition that used after the
intercepting_decomposer and the default decomposer (the value's
_decompose_ method) both fail.
keep
A predicate that determines if the initial operation or
intermediate decomposed operations should be kept or else need to be
decomposed further. If keep isn't specified, it defaults to "value
can't be decomposed anymore".
on_stuck_raise
If there is an operation that can't be decomposed and
also can't be kept, on_stuck_raise is used to determine what error
to raise. on_stuck_raise can either directly be an Exception, or
a method that takes the problematic operation and returns an
Exception. If on_stuck_raise is set to None or a method that
returns None, non-decomposable operations are simply silently
kept. on_stuck_raise defaults to a ValueError describing the
unwanted non-decomposable operation.
preserve_structure
Prevents subcircuits (i.e. CircuitOperations)
from being decomposed, but decomposes their contents. If this is
True, 'intercepting_decomposer' cannot be specified.
Returns
A list of operations that the given value was decomposed into. If
on_stuck_raise isn't set to None, all operations in the list will
satisfy the predicate specified by keep.
Raises
TypeError
val isn't a cirq.Operation and can't be decomposed even once.
(So it's not possible to return a list of operations.)
ValueError
Default type of error raised if there's an non-decomposable
operation that doesn't satisfy the given keep predicate.
TError
Custom type of error raised if there's an non-decomposable operation
that doesn't satisfy the given keep predicate.