Exemple #1
0
    def test_delegate(self):
        model = PyListModel([None])

        def set_item(v: dict):
            model.setItemData(model.index(0), v)

        def get_style_option() -> QStyleOptionViewItem:
            opt = QStyleOptionViewItem()
            delegate.initStyleOption(opt, model.index(0))
            return opt

        set_item({Qt.EditRole: Categorical("a", (), ())})
        delegate = VariableEditDelegate()
        opt = get_style_option()
        self.assertEqual(opt.text, "a")
        self.assertFalse(opt.font.italic())
        set_item({TransformRole: [Rename("b")]})
        opt = get_style_option()
        self.assertEqual(opt.text, "a \N{RIGHTWARDS ARROW} b")
        self.assertTrue(opt.font.italic())

        set_item({TransformRole: [AsString()]})
        opt = get_style_option()
        self.assertIn("reinterpreted", opt.text)
        self.assertTrue(opt.font.italic())
 def test_reinterpret_string(self):
     table = self.data_str
     domain = table.domain
     tvars = []
     for v in domain.metas:
         for i, tr in enumerate(
             [AsContinuous(),
              AsCategorical(),
              AsTime(),
              AsString()]):
             vtr = apply_reinterpret(v, tr, table_column_data(
                 table, v)).renamed(f"{v.name}_{i}")
             if isinstance(tr, AsTime):
                 strp = StrpTime("Detect automatically", None, 1, 1)
                 vtr = apply_transform_var(vtr, [strp])
             tvars.append(vtr)
     tdomain = Domain([], metas=tvars)
     ttable = table.transform(tdomain)
     assert_array_nanequal(
         ttable.metas,
         np.array([
             [0.1, 0., np.nan, "0.1", 2010., 0., 1262304000., "2010"],
             [1.0, 1., np.nan, "1.0", 2020., 1., 1577836800., "2020"],
         ],
                  dtype=object))
Exemple #3
0
 def test_reinterpret_string(self):
     table = self.data_str
     domain = table.domain
     tvars = []
     for v in domain.metas:
         for tr in [AsContinuous(), AsCategorical(), AsTime(), AsString()]:
             tr = apply_reinterpret(v, tr, table_column_data(table, v))
             tvars.append(tr)
     tdomain = Domain([], metas=tvars)
     ttable = table.transform(tdomain)
     assert_array_nanequal(
         ttable.metas,
         np.array([
             [0.1, 0., np.nan, "0.1", 2010., 0., 1262304000., "2010"],
             [1.0, 1., np.nan, "1.0", 2020., 1., 1577836800., "2020"],
         ],
                  dtype=object))
Exemple #4
0
    def test_as_string(self):
        table = self.data
        domain = table.domain

        tr = AsString()
        dtr = []
        for v in domain.variables:
            vtr = apply_reinterpret(v, tr, table_column_data(table, v))
            dtr.append(vtr)
        ttable = table.transform(Domain([], [], dtr))
        assert_array_equal(
            ttable.metas,
            np.array([
                ["a", "2", "0.25", "00:03:00"],
                ["b", "1", "1.25", "00:06:00"],
                ["c", "0", "0.2", "00:12:00"],
                ["b", "0", "0.0", "00:00:00"],
            ],
                     dtype=object))
Exemple #5
0
    def test_restore(self):
        iris = self.iris
        viris = ("Categorical", ("iris", ("Iris-setosa", "Iris-versicolor",
                                          "Iris-virginica"), ()))
        w = self.widget

        def restore(state):
            w._domain_change_store = state
            w._restore()

        model = w.variables_model
        self.send_signal(w.Inputs.data, iris, widget=w)
        restore({viris: [("Rename", ("Z", ))]})
        tr = model.data(model.index(4), TransformRole)
        self.assertEqual(tr, [Rename("Z")])

        restore({viris: [("AsString", ()), ("Rename", ("Z", ))]})
        tr = model.data(model.index(4), TransformRole)
        self.assertEqual(tr, [AsString(), Rename("Z")])
Exemple #6
0
    def test_delegate(self):
        model = VariableListModel([None, None])

        def set_item(row: int, v: dict):
            model.setItemData(model.index(row), v)

        def get_style_option(row: int) -> QStyleOptionViewItem:
            opt = QStyleOptionViewItem()
            delegate.initStyleOption(opt, model.index(row))
            return opt

        set_item(0, {Qt.EditRole: Categorical("a", (), (), False)})
        delegate = VariableEditDelegate()
        opt = get_style_option(0)
        self.assertEqual(opt.text, "a")
        self.assertFalse(opt.font.italic())
        set_item(0, {TransformRole: [Rename("b")]})
        opt = get_style_option(0)
        self.assertEqual(opt.text, "a \N{RIGHTWARDS ARROW} b")
        self.assertTrue(opt.font.italic())

        set_item(0, {TransformRole: [AsString()]})
        opt = get_style_option(0)
        self.assertIn("reinterpreted", opt.text)
        self.assertTrue(opt.font.italic())
        set_item(1, {
            Qt.EditRole: String("b", (), False),
            TransformRole: [Rename("a")]
        })
        opt = get_style_option(1)
        self.assertEqual(opt.palette.color(QPalette.Text), QColor(Qt.red))
        view = QListView()
        with patch.object(QToolTip, "showText") as p:
            delegate.helpEvent(
                QHelpEvent(QHelpEvent.ToolTip, QPoint(0, 0), QPoint(0, 0)),
                view,
                opt,
                model.index(1),
            )
            p.assert_called_once()