def __init__(self, condition_generator: Callable[..., Sequence[Condition]],
               *args):
    """Constructs a `tc.Dynamic` condition.

    These are for advanced usage only and typically you should use simpler
    constructs such as `Require` or `RequireTrue` if at all possible. `Dynamic`
    condition generators may be necessary when dealing with complex function
    inputs such as Sequences that have very specific relationships that must
    be satisfied by the function's contract.

    Args:
      condition_generator: A function that generates a list of `Condition`s.
        This function will be passed the arguments extracted from the function
        as specified by `args`. This must *not* be a generator function since
        AutoGraph (used by `tf.data` pipelines) does not support them.
      *args: The string names of arguments that should be extracted from the
        function that this `tc.contract` is decorating. These will be passed to
        the `condition_generator` function. `len(args)` must equal the number
        of arguments defined by the `condition_generator` function.
    """
    self.condition_generator = condition_generator
    self.args = args
    # TODO(jhclark): Check return type of `condition_generator` to make sure
    # it's not a generator.
Constructs a `tc.Dynamic` condition.

    These are for advanced usage only and typically you should use simpler
    constructs such as `Require` or `RequireTrue` if at all possible. `Dynamic`
    condition generators may be necessary when dealing with complex function
    inputs such as Sequences that have very specific relationships that must
    be satisfied by the function's contract.

    Args:
      condition_generator: A function that generates a list of `Condition`s.
        This function will be passed the arguments extracted from the function
        as specified by `args`. This must *not* be a generator function since
        AutoGraph (used by `tf.data` pipelines) does not support them.
      *args: The string names of arguments that should be extracted from the
        function that this `tc.contract` is decorating. These will be passed to
        the `condition_generator` function. `len(args)` must equal the number
        of arguments defined by the `condition_generator` function.
    
language/canine/tensor_contracts.py