code: def get(self, *names, **kwargs):
          
          # create empty tensor ensembles with our method
          tensor_ensembles = [TensorEnsemble([], self.method) for name in names]
  
          # loop over models, collect and add tensors
          for model in self.models:
              tensors = model.get(*names, **kwargs)
              if not isinstance(tensors, tuple):
                  tensors = (tensors,)
              for i, t in enumerate(tensors if isinstance(tensors, tuple) else (tensors,)):
                  tensor_ensembles[i].tensors.append(t)
  
          return tensor_ensembles[0] if len(names) == 1 else tuple(tensor_ensembles)
docs: get(*names, key=None)
          Returns one or more :py:class:`TensorEnsemble` instances given by *names* using a deep
          lookup within all read models. Each returned tensor ensemble will have ``len(models)``
          tensors. If a model does not contain a specific tensor defined by a specific *name*, the
          associated ensemble tensor will contain a *None* for that model in its tensors. If *key* is
          not *None*, only the root tensors with that *key* are traversed.