docs: def attribute(self, stream, name):
          """Expression for an input attribute.
  
          An input attribute is an attribute on one of the input
          ports of the operator invocation. `stream` must have been
          used to declare this invocation.
  
          Args:
              stream(Stream): Stream the attribute is from.
              name(str): Name of the attribute.
             
          Returns:
              Expression: Expression representing the input attribute.
          """
          if stream not in self._inputs:
              raise ValueError("Stream is not an input of this operator.")
          if len(self._inputs) == 1:
              return Expression('attribute', name)
          else:
              iport = self._op().inputPorts[self._inputs.index(stream)]
              return Expression('attribute', iport._alias + '.' + name)