def test_view_retains_ndarray_subclass():
    adata = ad.AnnData(np.zeros((10, 10)))
    adata.obsm["foo"] = np.zeros((10, 5)).view(NDArraySubclass)

    view = adata[:5, :]

    assert isinstance(view.obsm["foo"], NDArraySubclass)
    assert view.obsm["foo"].shape == (5, 5)
def _setup_drag(self, item):
    self._drag_and_drop_context.setup_drag(
      # Using the entire item allows dragging only by the label rather than the
      # widget itself. This avoids problems with widgets such as spin buttons
      # that do not behave correctly when reordering and also avoids accidental
      # clicking and modifying the widget by the user.
      item.widget,
      self._get_drag_data,
      self._on_drag_data_received,
      [item],
      [item],
      self)